Linux ์ปค๋์ ์ผ๋ถ์ธ BCache SSD ๋ธ๋ก ์ฅ์น ์บ์ฑ ์์คํ ์ ์ ์์ธ Kent Overstreet๋ LSFMM 2023 ์ปจํผ๋ฐ์ค(Linux Storage, Filesystem, Memory Management) ์ฐ์ค์์ Bcachefs ํ์ผ ์์คํ ํ๋ณด ์์ ๊ฒฐ๊ณผ๋ฅผ ์์ฝํ์ต๋๋ค. & BPF Summit)์์ Linux ์ปค๋์ ์ฃผ์ ๊ตฌ์ฑ์ ๋ํด ์ค๋ช ํ๊ณ ์ด FS์ ์ถ๊ฐ ๊ฐ๋ฐ ๊ณํ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. 10์์ Bcachefs FS๋ฅผ ๊ตฌํํ ์ ๋ฐ์ดํธ๋ ํจ์น ์ธํธ๊ฐ Linux ์ปค๋์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๊ฒํ ๋ฐ ํฌํจ๋๋๋ก ์ ์๋์์ต๋๋ค. FS Bcachefs๋ ์ฝ 2020๋ ๋์ ๊ฐ๋ฐํด ์์ต๋๋ค. ์ฝ์ด์ ํฌํจ๋๊ธฐ ์ ์ Bcachefs์ ๊ตฌํ์ ๊ฒํ ํ ์ค๋น๊ฐ XNUMX๋ ๋ง์ ๋ฐํ๋์์ผ๋ฉฐ ํ์ฌ ํจ์น ๋ฒ์ ์ ์ด์ ๊ฒํ ์ค์ ์๋ณ๋ ์๊ฒฌ๊ณผ ๋จ์ ์ ๊ณ ๋ คํฉ๋๋ค.
Bcachefs ๊ฐ๋ฐ ๋ชฉํ๋ ์ฑ๋ฅ, ์์ ์ฑ ๋ฐ ํ์ฅ์ฑ ๋ฉด์์ XFS ์์ค์ ๋๋ฌํ๋ ๋์์ Btrfs ๋ฐ ZFS ๊ณ ์ ์ ์ถ๊ฐ ๊ธฐ๋ฅ(์: ํํฐ์ ์ ์ฌ๋ฌ ์ฅ์น ํฌํจ, ๋ค์ค ๊ณ์ธต ์คํ ๋ฆฌ์ง ๋ ์ด์์, ๋ณต์ (RAID 1/10), ์บ์ฑ, ํฌ๋ช ํ ๋ฐ์ดํฐ ์์ถ(LZ4, gzip ๋ฐ ZSTD ๋ชจ๋), ์ํ ์ฌ๋ผ์ด์ค(์ค๋ ์ท), ์ฒดํฌ์ฌ์ ์ํ ๋ฌด๊ฒฐ์ฑ ํ์ธ, Reed-Solomon ์ค๋ฅ ์์ ์ฝ๋ ์ ์ฅ ๊ธฐ๋ฅ(RAID 5/6), ์ํธํ๋ ์ ๋ณด ์ ์ฅ(ChaCha20 ๋ฐ Poly1305) ์ฌ์ฉ๋ฉ๋๋ค). ์ฑ๋ฅ ๋ฉด์์ Bcachefs๋ Copy-on-Write ๋ฉ์ปค๋์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Btrfs ๋ฐ ๊ธฐํ ํ์ผ ์์คํ ๋ณด๋ค ์์ ์์ผ๋ฉฐ Ext4 ๋ฐ XFS์ ๊ฐ๊น์ด ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
Bcachefs ๊ฐ๋ฐ์ ์ต์ ์ฑ๊ณผ ์ค ์ฐ๊ธฐ์ ์ฌ์ฉํ ์ ์๋ ์ค๋ ์ท ๊ตฌํ์ ์์ ํ๊ฐ ์ฃผ๋ชฉ๋ฉ๋๋ค. Btrfs์ ๋น๊ตํ ๋ Bcachefs์ ์ค๋ ์ท์ ์ด์ ํ์ฅ์ฑ์ด ํจ์ฌ ๋ฐ์ด๋๊ณ Btrfs ๊ณ ์ ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค์ ๋ก ์ค๋ ์ท ์์ ์ MySQL ๋ฐฑ์ ์ ๊ตฌ์ฑํ ๋ ํ ์คํธ๋์์ต๋๋ค. Bcachefs๋ ๋ํ ํ์ฅ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ง์ ์์ ์ ์ํํ์ต๋๋ค. ํ์ผ ์์คํ ์ 100TB ์คํ ๋ฆฌ์ง์์ ํ ์คํธ์์ ์ข์ ์ฑ๋ฅ์ ๋ณด์๊ณ Bcachefs๋ ๊ฐ๊น์ด ์ฅ๋์ 1PB ์คํ ๋ฆฌ์ง์์ ๊ตฌํ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. "๊ธฐ๋ก ์ค ๋ณต์ฌ"(nocow) ๋ฉ์ปค๋์ฆ์ ๋นํ์ฑํํ๊ธฐ ์ํด ์๋ก์ด nocow ๋ชจ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ์ฌ๋ฆ ๋์ ๊ทธ๋ค์ ์ค๋ฅ ์์ ์ฝ๋ ๋ฐ RAIDZ๋ฅผ ์์ ์ ์ธ ์ํ๋ก ๊ตฌํํ๊ณ fsck ์ ํธ๋ฆฌํฐ๋ก ํ์ผ ์์คํ ์ ๋ณต์ ๋ฐ ํ์ธํ ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณํ์ ๋๋ค.
ํฅํ ๊ณํ ์ค Bcachefs ๊ฐ๋ฐ์ Rust ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ ์๊ตฌ๊ฐ ์ธ๊ธ๋์ด ์์ต๋๋ค. Bcachefs์ ์ ์์ ๋ฐ๋ฅด๋ฉด ๊ทธ๋ ์ฝ๋๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ด ์๋๋ผ ์ฝ๋ฉํ๋ ๊ฒ์ ์ข์ํ๋ฉฐ ๋ ๋์ ์ต์ ์ด ์์ ๋ C๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฏธ์น ์ง์ด๋ผ๊ณ ํฉ๋๋ค. Rust๋ ์ผ๋ถ ์ฌ์ฉ์ ๊ณต๊ฐ ์ ํธ๋ฆฌํฐ ๊ตฌํ์ Bcachefs์ ์ด๋ฏธ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ด ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฒ๊น ์๊ฐ์ด ํฌ๊ฒ ์ ์ฝ๋๊ธฐ ๋๋ฌธ์ Rust์์ Bcachef๋ฅผ ์ ์ง์ ์ผ๋ก ์์ ํ ๋ค์ ์์ฑํ๋ค๋ ์์ด๋์ด๊ฐ ๋ถํ๋๊ณ ์์ต๋๋ค.
Bcachef๋ฅผ Linux ์ปค๋์ ์ฃผ๋ฅ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํฌ๊ธฐ(2500๊ฐ์ ํจ์น ๋ฐ ์ฝ 90๋ง ์ค์ ์ฝ๋)๋ก ์ธํด ์ฑํ ํ๋ก์ธ์ค๊ฐ ์ง์ฐ๋ ์ ์์ผ๋ฉฐ ์ด๋ ๊ฒํ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ฒํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ผ๋ถ ๊ฐ๋ฐ์๋ ํจ์น ์๋ฆฌ์ฆ๋ฅผ ๋ ์๊ณ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ๊ฒ์ ์ ์ํ์ต๋๋ค. ํ ๋ก ์ค์ ์ผ๋ถ ์ฐธ๊ฐ์๋ ํ ๊ฐ๋ฐ์์ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ๊ณผ ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ ์ง ๊ด๋ฆฌ๋์ง ์์ ์ํ๋ก ๋จ์ ์ ์๋ ์ํ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์์ต๋๋ค(XNUMX๋ช ์ Red Hat ์ง์์ด ํ๋ก์ ํธ์ ๊ด์ฌ์ด ์์ง๋ง ๊ทธ๋ค์ ์์ ์ ์ฌ์ ํ ์ ํ๋ ๋ฒ๊ทธ ์์ ).
Bcachefs๋ ๋น ๋ฅธ SSD ๋๋ผ์ด๋ธ(๋ฆด๋ฆฌ์ค 3.10 ์ดํ ์ปค๋์ ํฌํจ๋จ)์ ๋๋ฆฐ ํ๋ ๋๋ผ์ด๋ธ์ ๋ํ ์บ์ ์ก์ธ์ค๋ฅผ ์ํด ์ค๊ณ๋ Bcache ๋ธ๋ก ์ฅ์น ๊ฐ๋ฐ์์ ์ด๋ฏธ ํ ์คํธ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋์์ต๋๋ค. Bcachefs๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ฐ์ง ์๋ COW(Copy-on-Write) ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ ์ํ๊ฐ ์ ์์น์ ๊ธฐ๋ก๋ ํ ํ์ฌ ์ํ ํ์๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
Bcachefs์ ํน์ง์ ์คํ ๋ฆฌ์ง๊ฐ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ ๋๋ผ์ด๋ธ์ ๋ค๊ณ์ธต ์ฐ๊ฒฐ์ ์ง์ํ๋ค๋ ๊ฒ์
๋๋ค. ๋ ์๊ตฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ํฌ๊ณ ์ ๋ ดํ ๋์คํฌ. ์ฐ๊ธฐ ์ ์ฅ ์บ์ฑ์ ๋ ์ด์ด ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ผ ์์คํ
์ฌ์ฉ์ ์ค๋จํ์ง ์๊ณ ํํฐ์
์์ ๋๋ผ์ด๋ธ๋ฅผ ๋์ ์ผ๋ก ์ถ๊ฐํ๊ณ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค(๋ฐ์ดํฐ๊ฐ ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
๋จ).
์ถ์ฒ : opennet.ru