์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ํŠน์ง•3. ์ฃผ์˜์‚ฌํ•ญ4. ๊ธฐํƒ€


B-tree file system
Btrfs ์œ„ํ‚ค

1. ๊ฐœ์š”[ํŽธ์ง‘]

ํ•˜ํ•„์ด๋ฉด ์•…์˜ ์ถ•์˜ค๋ผํด, ํ›„์ง€์ฏ”, ๋ ˆ๋“œํ–‡์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค์šฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‹ค.

2. ํŠน์ง•[ํŽธ์ง‘]

  • ๊ฐ€๋ณ๋‹ค.
  • B-Tree[1] ๊ธฐ๋ฐ˜
  • Copy-On-Write[2]
  • ๋นˆ ๊ณต๊ฐ„ ์บ์‹œ, inode ์บ์‹œ ์ง€์›
  • ์ž๋™ ์กฐ๊ฐ๋ชจ์Œ
  • ๊ณต๊ฐ„ ์••์ถ•: ์ž‘์€ ํŒŒ์ผ๋“ค์„ ํ•œ ์„นํ„ฐ์— ๋ชฐ์•„๋„ฃ๋Š”๋‹ค.
  • ๋ฐ์ดํ„ฐ ์••์ถ•: zlib, LZO, z-standard ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ง€์›
  • SSD ์ตœ์ ํ™”: TRIM๊ณผ๋Š” ์ƒ๊ด€์—†๋‹ค. [3]
  • ์ž์ฒด RAID ์ง€์›: 0, 1, 0+1, 10 ์ง€์›. 5, 6์€ ๊ฐœ๋ฐœ์ค‘ 2016๋…„ 7์›” ๋ถ€ํ„ฐ 5,6 ์ง€์›, ํ•˜์ง€๋งŒ ์•ˆ์ •์„ฑ์ด ๋–จ์–ด์ ธ ๋น„์ถ”์ฒœ
  • ์„œ๋ธŒ๋ณผ๋ฅจ ๊ด€๋ฆฌ: ๊ฐ๊ฐ์˜ ์„œ๋ธŒ๋ณผ๋ฅจ์„ ํŒŒํ‹ฐ์…˜์ฒ˜๋Ÿผ ์ทจ๊ธ‰ ๊ฐ€๋Šฅ
  • ์Šค๋ƒ…์ƒท ๊ด€๋ฆฌ: ๋ณผ๋ฅจ์„ ํ†ต์งธ๋กœ ๋ฐ•์ œํ•œ๋‹ค. ํŒŒ์ผ์„ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ €์žฅํ•ด๋‘์—ˆ๋˜ ์ƒํƒœ๋กœ ์‰ฝ๊ฒŒ ๋˜๋Œ๋ฆด์ˆ˜ ์žˆ์–ด ๋žœ์„ฌ์›จ์–ด ๋Œ€์‘์ด๋‚˜ ๋ฐฑ์—… ์šฉ๋„๋กœ ๋งค์šฐ ์ข‹์œผ๋ฉฐ, ์ฆ๋ถ„ ๋ฐฑ์—…๋„ ์ง€์›ํ•œ๋‹ค. ์„ค์ • ์˜ˆ์‹œ
  • ํŒŒํ‹ฐ์…˜ ํ…Œ์ด๋ธ” ์ง€์›: MBR์ด๋‚˜ GPT ๋Œ€์‹  btrfs ์ž์ฒด๋ฅผ ํŒŒํ‹ฐ์…˜ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ œ๊ฑฐ(Data deduplication)

3. ์ฃผ์˜์‚ฌํ•ญ[ํŽธ์ง‘]

  • 4K๋กœ ์ •๋ ฌ๋œ ๋””์Šคํฌ์—์„œ ์ตœ์ ์˜ ์†๋„๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค. MBR ๋””์Šคํฌ๋Š” ์„นํ„ฐ ์ •๋ ฌ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • swap ํŒŒ์ผ ๊ธฐ๋Šฅ์€ ๋ฆฌ๋ˆ…์Šค 5.0 ์ด์ƒ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, swap ํŒŒ์ผ์˜ Copy-On-Write๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค.btrfs์—์„œ์˜ swap ํŒŒ์ผ ์ƒ์„ฑ ๋ฐฉ๋ฒ•
  • LILO๋‚˜ ๊ตฌ๋ฒ„์ „ GRUB์ด๋‚˜ ๊ตฌ๋ฒ„์ „ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์—์„œ๋Š” ๋ถ€ํŠธ๋กœ๋”๊ฐ€ btrfs ํŒŒํ‹ฐ์…˜์„ ์ฝ์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค. btrfsprog๋ฅผ ์„ค์น˜ํ•˜๊ณ  initramfs๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•ด๋„ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ์ ์ ˆํ•œ ์šฉ๋Ÿ‰[4]์˜ ํŒŒํ‹ฐ์…˜์„ ํ•˜๋‚˜ ํŒŒ์„œ /boot๋กœ ํ• ๋‹นํ•ด ext(2/3/4)๋‚˜ FAT32(vfat)๋กœ ํฌ๋งทํ•˜๊ณ  ์—ฌ๊ธฐ๋‹ค๊ฐ€ ๋ถ€ํŠธ๋กœ๋”๋ฅผ ๋ฌผ๋ ค์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. /boot ๋””๋ ‰ํ† ๋ฆฌ ํŒŒ์ผ๋“ค์„ ์ƒˆ๋กœ ํŒ ํŒŒํ‹ฐ์…˜์— ์˜ฎ๊ธฐ๋Š”๊ฑฐ ๊นŒ๋จน์œผ๋ฉด ๋Œ€๋žต ๋‚ญํŒจ๋‹ค. ์žŠ์ง€ ๋ง์ž! ์–ด์ฐจํ”ผ UEFI ์“ฐ๋ฉด ESP ์žก๋А๋ผ FAT32 ํŒŒํ‹ฐ์…˜ ํ•˜๋‚˜ ํŒŒ์•ผ ํ•˜๋Š”๊ฑฐ ์ฒ˜์Œ๋ถ€ํ„ฐ UEFI๋กœ ์„ค์น˜ํ•˜์ž

4. ๊ธฐํƒ€[ํŽธ์ง‘]

  • B-tree ๊ธฐ๋ฐ˜์ด๊ธฐ์— B-tree filesystem์˜ ์ค„์ž„๋ง์ด์ง€๋งŒ ๋†๋‹ด์‚ผ์•„ Butter filesystem์˜ ์ค„์ž„๋ง์ด๋ผ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ์‹œ์ž‘์€ ์ข€ ๋œฌ๊ธˆ์—†๋Š” ํŽธ์ด๋‹ค. ํ•œ IBM ์—ฐ๊ตฌ์›์ด 2007๋…„์— ๋งŒ๋“  Copy-On-Write๊ฐ€ ๋˜๋Š” B-Tree๋ฅผ ๋ณด๊ณ  ์˜ค๋ผํด์—์„œ ๋ƒ…๋‹ค ์ฃผ์›Œ์™€์„œ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์ฑ…์ž„์ž๊ฐ€ ReiserFS[5] ํ”„๋กœ์ ํŠธ์— ์ฐธ๊ฐ€ํ•œ ์ด๋ ฅ์ด ์žˆ์–ด์„œ ReiserFS์˜ ํŠน์ง•์ด ์ผ๋ถ€ ๊ฐ€๋ฏธ๋˜์–ด์žˆ๋‹ค.
  • ์ตœ๊ทผ์—๋Š” ์–ด๋А ์ •๋„ ์•ˆ์ •ํ™”๊ฐ€ ๋˜์—ˆ์œผ๋‚˜, ์•„์ง ์ฃผ์š” ๊ธฐ๋Šฅ์ธ Copy-On-Write ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์‹ฌํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ๋“ฑ ์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค. ๊ด€๋ จ ๋งํฌ
  • ๋„ท๊ธฐ์–ด, ์‹œ๋†€๋กœ์ง€, EFM ๋„คํŠธ์›์Šค[6] ๋“ฑ NAS ์ œ์กฐ์‚ฌ์—์„œ๋„ ๋„์ž…ํ•˜์˜€๋‹ค.

[1] ์ž๋™์œผ๋กœ ๋ฐธ๋Ÿฐ์‹ฑ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜. Binary tree ์™€๋Š” ๋‹ค๋ฅด๋‹ค.
[2] ์‰ฝ๊ฒŒ ๋งํ•ด ๋™์ผํ•œ ํŒŒ์ผ์ด๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋”ฐ๋กœ ๋” ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌผ๋ก , ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ๋“œ๋ผ์ด๋ธŒ๋กœ ์˜ฎ๊ธธ ๊ฒฝ์šฐ์—” ์ƒํ™ฉ์ด ๋‹ค๋ฅด๋‹ค. ์ด ๊ธฐ๋Šฅ ๋•๋ถ„์— ์Šค๋ƒ…์ƒท ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
[3] mount ์˜ต์…˜์—๋„ TRIM ํ™œ์„ฑํ™”์ธ discard์™€ ๋ณ„๊ฐœ๋กœ SSD ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์„ฑํ™”๋ฅผ ์œ„ํ•œ ssd ์˜ต์…˜์ด ์žˆ๋‹ค.
[4] ์ผ๋ฐ˜์ ์œผ๋กœ 256MB ์ •๋„๊ฐ€ ์ข‹๋‹ค.
[5] BtrFS๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „ ํ•œ๋•Œ๋Š” ๋‚˜๋ฆ„ ์œ ๋งํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด์—ˆ์œผ๋‚˜, 2008๋…„์— ๊ฐœ๋ฐœ์ž์ธ Hans Reiser๊ฐ€ ์•„๋‚ด๋ฅผ ์‚ดํ•ดํ•ด์„œ ๊ฐ๋ฐฉ์— ๊ฐ„ ์ดํ›„๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งํ–ˆ๋‹ค.
[6] ํ”ํžˆ ipTIME์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.