μ™œ μΉ΄ν”„μΉ΄ 브둜컀, DB 같은 λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œλ“€μ΄ xfsλ₯Ό 파일 μ‹œμŠ€ν…œμœΌλ‘œ 채택 ν–ˆμ„κΉŒ?

10 minute read

이전에 μΉ΄ν”„μΉ΄ 브둜컀 μž‘μ—…μ„ ν•˜λ©΄μ„œ 저널 파일 μ‹œμŠ€ν…œμ— λŒ€ν•œ 글을 μΌμ—ˆλ‹€. 이제 λ¦¬λˆ…μŠ€ μŠ€ν† λ¦¬μ§€ μͺ½μ„ κ³΅λΆ€ν•˜λ©΄μ„œ xfs, ext4λ₯Ό λ‹€μ‹œ 보게 λ˜μ—ˆλŠ”λ°, β€œμ €λ„λ§μ„ ν•œλ‹€β€ λΉΌκ³ λŠ” λ‚΄κ°€ 이것듀에 λŒ€ν•΄ 아무것도 μ„€λͺ…ν•  수 μ—†λ‹€λŠ” κ±Έ κΉ¨λ‹¬μ•˜λ‹€β€¦;;

κ·Έλž˜μ„œ 이번 주말에 xfs, ext4λ₯Ό μ œλŒ€λ‘œ μ‚΄νŽ΄λ³΄λ©΄μ„œ B+Tree μžλ£Œκ΅¬μ‘°λ„ 0-to-1으둜 λ‹€μ‹œ κ΅¬ν˜„ν•΄λ³΄λŠ” μ‹œκ°„μ„ κ°€μ‘Œλ‹€.

μ΄μ œλŠ” xfsλ₯Ό μ œλŒ€λ‘œ 이해해볼 마음이 생겼닀. ν•œλ²ˆ λ“€μ—¬λ‹€λ³΄μž.

μ“°κΈ° μ„±λŠ₯ μΈ‘λ©΄

μˆ˜λ§Žμ€ CPUκ°€ λ™μ‹œμ— 큰 데이터λ₯Ό 써도 병λͺ© 없이 μ²˜λ¦¬ν•˜μž.

1990λ…„λŒ€μ— λŒ€ν˜• μ„œλ²„λ₯Ό μš΄μ˜ν•œλ‹€κ³  ν•΄λ΄…μ‹œλ‹€. κ·Έλ•Œλ„ 이미 λŒ€ν˜•μ„œλ²„λŠ” λ©€ν‹° μ½”μ–΄λ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ 각 CPUλ§ˆλ‹€ 각자의 μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

CPU0 : 둜그 파일 생성
CPU1 : λ°μ΄ν„°λ² μ΄μŠ€ μ“°κΈ°
CPU2 : 이미지 μ €μž₯
CPU3 : 디렉토리 생성

λ©€ν‹° μ½”μ–΄ μ„œλ²„μ—μ„œ λ™μ‹œμ— νŒŒμΌμ‹œμŠ€ν…œμ— μ ‘κ·Όν•΄ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, νŒŒμΌμ‹œμŠ€ν…œμ΄ 전체 μ“°κΈ° μž‘μ—…μ— λŒ€ν•΄ 단일 μ „μ—­ 락(single global lock)을 κ°€μ§€κ³  μžˆλ‹€λ©΄, CPUκ°€ λ™μ‹œμ— μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ”λΌλ„ μ“°κΈ°λŠ” ν•œλ²ˆμ— ν•œ CPU만 κ°€λŠ₯ν•©λ‹ˆλ‹€.

CPU0 μž‘μ—…μ€‘
CPU1 λŒ€κΈ°
CPU2 λŒ€κΈ°
CPU3 λŒ€κΈ°

이것은 λ””μŠ€ν¬κ°€ RAID둜 λ¬Άμ—¬ μžˆμ–΄λ„ λ™μΌν•©λ‹ˆλ‹€. RAID λ””μŠ€ν¬ μœ„μ—μ„œ νŒŒμΌμ‹œμŠ€ν…œμ΄ 운영되기 λ•Œλ¬Έμ΄μ£ .


xfs의 μ„€κ³„μžλ“€μ€ β€œλ””μŠ€ν¬κ°€ 느린게 λ¬Έμ œκ°€ μ•„λ‹ˆλΌ νŒŒμΌμ‹œμŠ€ν…œμ΄ 병렬성을 κ°€μ§€μ§€ μ•ŠλŠ”κ²Œ λ¬Έμ œλ‹€β€λΌκ³  λ³΄μ•˜μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ νŒŒμΌμ‹œμŠ€ν…œμ„ N개의 독립적인 λΈ”λ‘μœΌλ‘œ λ‚˜λˆ„κ³ , 각 블둝에 λŒ€ν•΄ 메타데이터 락을 갖도둝 λΆ„μ‚°ν•©λ‹ˆλ‹€.

이 독립적인 블둝을 β€œAllocation Groupβ€œμ΄λΌκ³  ν•©λ‹ˆλ‹€.

CPU0 β†’ AG0
CPU1 β†’ AG1
CPU2 β†’ AG2
CPU3 β†’ AG3

각 CPUλŠ” κ°œλ³„ AG에 λ™μ‹œμ— μ“°κΈ° μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. κ°€ AG에 λŒ€ν•΄μ„œ μ“°λ ˆλ“œκ°€ λ™μ‹œμ— 파일 생성, inode ν• λ‹Ή, 블둝 ν• λ‹Ή, 디렉토리 μˆ˜μ • λ“±μ˜ νŒŒμΌμ‹œμŠ€ν…œ μ“°κΈ° μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이것이 λ°”λ‘œ β€œλ³‘λ ¬ νŒŒμΌμ‹œμŠ€ν…œβ€œμΈ xfs μž…λ‹ˆλ‹€.


μ™œ Allocation Group이 ν•„μš”ν•œκ°€?

μ˜ˆμ „ νŒŒμΌμ‹œμŠ€ν…œμ€ ν•˜λ‚˜μ˜ μŠˆνΌλΈ”λ‘μœΌλ‘œ ꡬ성 λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

Filesystem
β”œβ”€β”€ Superblock
β”œβ”€β”€ Inode Table
β”œβ”€β”€ Data Blocks
└── Free Block Bitmap

파일 생성을 ν•˜λ €λ©΄, 빈 inodeλ₯Ό μ°Ύκ³ , 빈 block을 μ°Ύκ³ , bitmap을 μˆ˜μ •ν•˜κ³ , inodeλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

그리고 λͺ¨λ“  CPUκ°€ 단일 객체에 μ ‘κ·Όν•˜κ³  μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이러면 락 κ²½ν•©(lock contention)이 λ°œμƒν•©λ‹ˆλ‹€.


xfsλŠ” νŒŒμΌμ‹œμŠ€ν…œμ„ Allocation Groupμ΄λΌλŠ” λ‹¨μœ„λ‘œ μͺΌκ°°μŠ΅λ‹ˆλ‹€.

그리고 각 AGλŠ” 독립적인 메타정보 객체λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

AG0
β”œβ”€β”€ Free Blocks
β”œβ”€β”€ Free Inodes
└── Metadata
AG1
β”œβ”€β”€ Free Blocks
β”œβ”€β”€ Free Inodes
└── Metadata
...

κ·Έλž˜μ„œ 각 CPUκ°€ μ„œλ‘œ λ‹€λ₯Έ AG에 μ“°κΈ° μž‘μ—…μ„ ν•œλ‹€λ©΄, 좩돌이 λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


AG의 λ©”νƒ€λ°μ΄ν„°λŠ” B+Tree둜 κ΅¬ν˜„ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

AG0

Free Space B+Tree
        β”‚
        β”œβ”€β”€ (1000, 50)
        β”œβ”€β”€ (2000, 30)
        └── (5000, 100)
Inode B+Tree
        β”‚
        β”œβ”€β”€ inode 1
        β”œβ”€β”€ inode 2
        └── inode 3

κ·Έλž˜μ„œ CPU0κ°€ AG0의 B+Treeλ₯Ό μˆ˜μ •ν•˜λŠ” λ™μ•ˆ, CPU1은 AG1의 B+Treeλ₯Ό μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

xfsλ₯Ό 이해할 λ•Œ, νŒŒμΌμ‹œμŠ€ν…œμ„ λ°μ΄ν„°λ² μ΄μŠ€μ²˜λŸΌ μƒκ°ν•˜λ©΄ 쒀더 μ‰½κ²Œ μ™€λ‹ΏμŠ΅λ‹ˆλ‹€.

  • inode = DB λ ˆμ½”λ“œ
  • B+Tree = DB 인덱슀
  • AG = μƒ€λ“œ(shard)
  • CPU = λ™μ‹œ νŠΈλžœμž­μ…˜


xfsκ³Ό κΈ°μ‘΄ ext2의 μ°¨μ΄λŠ” Free Spaceλ₯Ό κ΄€λ¦¬ν•˜λŠ” μžλ£Œκ΅¬μ‘°μ— μžˆμŠ΅λ‹ˆλ‹€.

ext2λŠ” Free Spaceλ₯Ό bitmap으둜 κ΄€λ¦¬ν•˜μ§€λ§Œ, xfsλŠ” Free Spaceλ₯Ό B+Tree둜 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

B+Tree둜 κ΅¬ν˜„ν•˜λ©΄, 100GB 연속 곡간 μ°ΎκΈ° 같은 질의λ₯Ό 더 λΉ λ₯΄κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Delayed Allocation

μ“°κΈ° μš”μ²­μ΄ 듀어와도 μ¦‰μ‹œ 블둝을 ν• λ‹Ήν•˜μ§€ μ•ŠμŒ.

f.write(data)와 같은 일반적인 파일 μ“°κΈ°λŠ” 파일 μ‹œμŠ€ν…œμ—μ„œ 블둝 ν• λ‹Ή -> 데이터 μ“°κΈ° μˆœμ„œλ‘œ μˆ˜ν–‰ λ©λ‹ˆλ‹€.

Write ν–‰μœ„λ₯Ό N번 μ—°μ†μœΌλ‘œ ν•œλ‹€λ©΄, N x (블둝 ν• λ‹Ή -> 데이터 μ“°κΈ°)κ°€ μ΄λ€„μ§‘λ‹ˆλ‹€. 이러면, 데이터 Fragmentation이 λ°œμƒν•˜κ³ , λ””μŠ€ν¬ I/O도 λ§Žμ•„μ§€λ©° Metadata Udpate도 자주 λ°œμƒν•©λ‹ˆλ‹€.

Delayed Allocation은 이걸 μ§€μ—°μ²˜λ¦¬ν•΄μ„œ ν•œλ²ˆμ— μˆ˜ν–‰ν•˜λŠ” 아이디어 μž…λ‹ˆλ‹€.

f.write(data)κ°€ μˆ˜ν–‰λ˜λ©΄, 일단 데이터λ₯Ό Page Cache λ©”λͺ¨λ¦¬μ— λ°›μ•„λ‘‘λ‹ˆλ‹€. 데이터 μ—…λ°μ΄νŠΈλ„ Page Cache μœ„μ—μ„œ μˆ˜ν–‰ν•˜κ³  Page Dirty μƒνƒœλ‘œ 계속 μ—…λ°μ΄νŠΈ ν•©λ‹ˆλ‹€.

μ—¬κΈ°κΉŒμ§€λŠ” λ©”λͺ¨λ¦¬λ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‹€κ°€ Page Cache Evict으둜 인해 spill to disk ν•˜κ±°λ‚˜, flush()κ°€ λ°œμƒν•˜λ©΄ μ§€κΈˆκΉŒμ§€ λ©”λͺ¨λ¦¬μ— 있던 λ‚΄μš©μ„ λͺ¨μ•„ ν•œλ²ˆμ— λ””μŠ€ν¬ μ“°κΈ°λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

write 4KB
write 4KB
write 4KB
write 4KB

↓ 아직 λ””μŠ€ν¬ 블둝 λ―Έν• λ‹Ή

(flush μ‹œμ )
16KB 연속 곡간 확보

μ΄λ ‡κ²Œ ν•˜λ©΄, 맀번 데이터 μ“°κΈ°λ₯Ό ν•΄μ„œ μ£Όμ†Œκ°€ 이곳저곳 흝어지지 μ•Šκ³ , μ—°μ†λœ 데이터λ₯Ό μ—°μ†λœ 곡간에 넣을 ν™•λ₯ μ΄ λ†’μ•„μ§‘λ‹ˆλ‹€.

그리고 블둝 할당을 ν•œλ²ˆμ— μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ—, 메타데이터 μ—…λ°μ΄νŠΈλ„ κ°μ†Œ ν•©λ‹ˆλ‹€.

이런 μ§€μ—° μ“°κΈ°λŠ” λŒ€μš©λŸ‰ μ“°κΈ° μ„±λŠ₯을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€. 둜그 μ„œλ²„, DB, μ˜μƒ μ €μž₯ λ“±μ˜ μ›Œν¬λ‘œλ“œλŠ” μ“°κΈ° μž‘μ—…μ΄ κ³„μ†ν•΄μ„œ λ“€μ–΄μ˜΅λ‹ˆλ‹€. 이걸 맀번 μ²˜λ¦¬ν•˜κΈ°λ³΄λ‹€λŠ” λ¬Άμ–΄μ„œ ν•œλ²ˆμ— μ²˜λ¦¬ν•˜λŠ”κ²Œ 이득 μž…λ‹ˆλ‹€.

Extent 기반 곡간 관리

블둝 곡간을 μ‹œμž‘μ κ³Ό μ—°μ†λœ λΈ”λ‘μ˜ 크기둜 ν‘œν˜„ν•˜μž.

블둝 μ‚¬μ΄μ¦ˆκ°€ 4KB, 파일이 16KB라면 4개 블둝을 써야 ν•˜λŠ”λ°, κΈ°μ‘΄ νŒŒμΌμ‹œμŠ€ν…œμ€ λ””μŠ€ν¬λ₯Ό λΆ„ν• ν•œ 블둝 곡간을 μ΄λ ‡κ²Œ μ €μž₯ ν–ˆμŠ΅λ‹ˆλ‹€.

[100, 101, 102, 103]

λ§Œμ•½, 파일이 1GB μ˜€λ‹€λ©΄, 1GB / 4KB = 260K 블둝을 숫자 λ°°μ—΄λ‘œ 기둝 ν–ˆμŠ΅λ‹ˆλ‹€.


Extent의 μ•„μ΄λ””μ–΄λŠ” μ—°μ†λœ 블둝 곡간을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ (start, length) λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ 16KB 파일이 연속 λΈ”λ‘μœΌλ‘œ μ‘΄μž¬ν•œλ‹€λ©΄, (start=1000, length=4)둜 ν‘œν˜„ν•˜λ©΄ λμž…λ‹ˆλ‹€. 1GB 파일이라면, (start=1000, length=260K)둜 2-size tuple둜 λμž…λ‹ˆλ‹€!

λ§Œμ•½ 파일이 μ‘°κ°λ‚œ λΈ”λ‘μœΌλ‘œ μ‘΄μž¬ν•˜λ”λΌλ„, Extentλ‘œλŠ” (100, 3), (500, 2), (900, 4) μ΄λ ‡κ²Œ ν‘œν˜„ν•˜λ©΄ 그만 μž…λ‹ˆλ‹€.

xfs의 3κ°€μ§€ λͺ¨λ‘λ₯Ό 채택 ν–ˆκΈ° λ•Œλ¬Έμ— κ°•ν•˜λ‹€

  • Allocation Group
  • Delayed Allocation
  • Extent 기반 관리

xfsλŠ” μœ„μ—μ„œ μ„€λͺ…ν•œ 3κ°€μ§€ 기법을 1994년에 λͺ¨λ‘ κ°€μ§€κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

extλŠ” ext4(2008)이 λ‚˜μ™€μ„œμ•Ό xfsκ°€ 채택 ν–ˆλ˜ μž₯점듀을 μ§€μ›ν•©λ‹ˆλ‹€. xfsκ°€ 1994년에 μΆœμ‹œ λ˜μ—ˆμœΌλ‹ˆ 무렀 14λ…„μ˜ μ‹œκ°„μ΄ κ±Έλ¦°κ±°μ£ . ext4μ—μ„œλŠ” 병렬 μ“°κΈ°λ₯Ό μ§€μ›ν•˜κΈ° μ‹œμž‘ν–ˆμ§€λ§Œ, κ·Έ κ΅¬ν˜„μ€ xfs와 λΉ„κ΅ν–ˆμ„ λ•Œ 사뭇 λ‹€λ¦…λ‹ˆλ‹€. μ–΄μ¨Œλ“  ext4도 14년을 κΈ°λ‹€λ € 병렬 μ“°κΈ°λ₯Ό λ‹¬μ„±ν•œ μƒνƒœμ˜ˆμš”.

μ•ˆμ •μ„±

Metadata Journaling

저널 파일 μ‹œμŠ€ν…œμ—λ„ μ μ—ˆμ§€λ§Œ, xfsλŠ” 저널링을 μ§€μ›ν•˜λŠ” νŒŒμΌμ‹œμŠ€ν…œ μž…λ‹ˆλ‹€.

κ·Έμ€‘μ—μ„œλ„ 메타데이터에 λŒ€ν•œ 저널링을 μ§€μ›ν•˜μ£ . 저널링에 λŒ€ν•œ λ‚΄μš©μ€ μœ„μ˜ ν¬μŠ€νŠΈμ—μ„œ μžμ„Ένžˆ μ μ—ˆκΈ°μ— μ—¬κΈ°μ—μ„œλŠ” μ–ΈκΈ‰λ§Œ ν•˜κ³  λ„˜μ–΄κ°‘λ‹ˆλ‹€.

ext 계열에선 ext3(2001)에 저널링 κΈ°λŠ₯이 μΆ”κ°€ λ©λ‹ˆλ‹€. 이것도 xfsκ°€ 1994λ…„λΆ€ν„° μ§€μ›ν–ˆλ˜κ±Έ μƒκ°ν•˜λ©΄ 무렀 7년이 κ±Έλ¦°κ±°μ£ .

ν™•μž₯μ„±

컀널 개발자 κ΄€μ μ—μ„œλŠ” XFSλ₯Ό μ„€λͺ…ν•  λ•Œ 보톡 β€œhighly scalable filesystem” 이라고 λΆ€λ₯΄μ§€, β€œparallel disk filesystem” μ΄λΌκ³ λŠ” 잘 λΆ€λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 핡심은 λ””μŠ€ν¬λ³΄λ‹€ ν™•μž₯μ„±(scalability) 에 μžˆμŠ΅λ‹ˆλ‹€.

xfs의 섀계 λͺ©ν‘œλŠ” β€œκ±°λŒ€ν•œ μ‹œμŠ€ν…œμ—μ„œλ„ μ„±λŠ₯이 λ¬΄λ„ˆμ§€μ§€ μ•ŠλŠ” 파일 μ‹œμŠ€ν…œβ€μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ μ‹œμŠ€ν…œμ˜ CPUκ°€ λŠ˜μ–΄λ‚˜λŠ” 경우λ₯Ό μ‰½κ²Œ λŒ€μ‘ν•˜κ³ , 온라인으둜 파일 μ‹œμŠ€ν…œ 킉 ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€!

온라인 ν™•μž₯

xfsλŠ” 운영 쀑인 파일 μ‹œμŠ€ν…œμ„ xfs_growfs둜 온라인 ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

xfsλŠ” 파일 μ‹œμŠ€ν…œμ„ ν™•μž₯ν•  λ•Œ, κΈ°μ‘΄ ꡬ쑰λ₯Ό 재배치 ν•˜μ§€ μ•Šκ³ , 뒀에 μƒˆλ‘œμš΄ Allocation Group을 μΆ”κ°€ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν™•μž₯ ν•©λ‹ˆλ‹€.

κΈ°μ‘΄ XFS
+------+------+
| AG0  | AG1  |
+------+------+

λ””μŠ€ν¬/LV ν™•μž₯ ν›„
+------+------+------+------+
| AG0  | AG1  | AG2  | AG3  |
+------+------+------+------+

뒀에 AGλ₯Ό λΆ™μ΄λŠ” 방식이기 λ•Œλ¬Έμ—, νŒŒμΌμ‹œμŠ€ν…œμ΄ on-write/on-read μƒνƒœμ—μ„œλ„ 크기λ₯Ό λŠ˜λ¦¬λ©΄μ„œ κΈ°μ‘΄ 데이터 μœ μ§€κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

CPU ν™•μž₯

λ””μŠ€ν¬μ™€ CPUλŠ” 독립적인 μžμ›μ΄κΈ° λ•Œλ¬Έμ—, λ””μŠ€ν¬λ₯Ό μœ μ§€ν•˜λ©΄μ„œ CPU만 μŠ€νŽ™μ—… ν•˜λŠ”κ²Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ²˜μŒμ—λŠ” 1 CPU둜 μ‹œμž‘ν•œ μ‹œμŠ€ν…œμ΄ 4 CPU -> 8 -> 16 -> 64 CPUκΉŒμ§€ ν™•μž₯ν•  μˆ˜λ„ 있죠.

CPUκ°€ μ¦κ°€ν• μˆ˜λ‘ 파일 μ‹œμŠ€ν…œμœΌλ‘œ λ“€μ–΄μ˜€λŠ” 생성/μ‚­μ œ/μ“°κ²Œ μš”μ²­λ„ μ¦κ°€ν•˜κ²Œ λ©λ‹ˆλ‹€.

기쑴의 ext2λŠ” 단일 메타데이터 락이 있기 λ•Œλ¬Έμ—, CPUκ°€ 2λ°° λŠ˜μ–΄λ‚˜λ”λΌλ„ λ””μŠ€ν¬ μ“°κΈ° μ„±λŠ₯이 2λ°° λŠ˜μ–΄λ‚˜λŠ” κ±Έ 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, xfsλŠ” Allocation Group으둜 λ””μŠ€ν¬λ₯Ό λΆ„ν• ν•˜κ³  병렬 μ“°κΈ°κ°€ κ°€λŠ₯ν–ˆκΈ° λ•Œλ¬Έμ—, CPUλ₯Ό 2λ°° 늘리면 λ””μŠ€ν¬ μ“°κΈ° μ„±λŠ₯도 μ„ ν˜•μ μœΌλ‘œ μ¦κ°€ν•˜λŠ” μΆ”μ„Έλ₯Ό λ³΄μ˜€μŠ΅λ‹ˆλ‹€.


단, CPUκ°€ λŠ˜μ–΄λ‚œλ‹€κ³  ν•΄μ„œ 기쑴에 ν• λ‹Ήν•œ AG κ°―μˆ˜κ°€ λŠ˜μ–΄λ‚˜λŠ”κ±΄ μ•„λ‹™λ‹ˆλ‹€. CPU 갯수 <= AG κ°―μˆ˜λΌλŠ” 뢀등식이 μœ μ§€λ˜λŠ” ν™˜κ²½μ—μ„œλŠ” CPU μ½”μ–΄ 증가가 λ””μŠ€ν¬ μ“°κΈ° μ„±λŠ₯κ³Ό λΉ„λ‘€ν•˜κ²Œ λœλ‹€λŠ” 의미 μž…λ‹ˆλ‹€.

맺음말

μΉ΄ν”„μΉ΄ 브둜컀 μž‘μ—…μ—μ„œ μ‹œμž‘ν–ˆλ˜ xfs μ‹œμŠ€ν…œμ— λŒ€ν•œ κΆκΈˆμ¦μ€, 개발의 기초라고 ν•  수 μžˆλŠ” λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œκ³Ό 파일 μ‹œμŠ€ν…œκΉŒμ§€ 보게 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. 이제 묡은 κΆκΈˆμ¦μ„ ν•΄μ†Œ ν–ˆμœΌλ‹ˆ, λ‹€λ₯Έ μž¬λ°ŒλŠ” μ£Όμ œλ“€μ„ μ°Ύμ•„μ„œ λ‚΄μž¬ν™” ν•˜λ €κ³  ν•©λ‹ˆλ‹€. ν† μŠ€μ—μ„œ 일도 μ—΄μ‹¬νžˆ ν•˜κ³  ν‹ˆν‹ˆνžˆ μ‹€λ ₯도 λŠ˜λ¦¬λ©΄μ„œ ν™”μ΄νŒ…!!!

Categories:

Updated: