ืคึผืจืึทืžืึธื•ื˜ื™ื ื’ Bcachefs ืฆื• ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ

Kent Overstreet, ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ื™ BCache ื‘ืœืึธืง ืžื™ื˜ืœ ืงืึทื˜ืฉื™ื ื’ ืกื™ืกื˜ืขื ืื•ื™ืฃ SSD ื“ืจื™ื™ื•ื•ื– ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ, ืื™ืŸ ื–ื™ื™ืŸ ืจืขื“ืข ื‘ื™ื™ ื“ื™ LSFMM 2023 ื–ื™ืฆื•ื ื’ (Linux Storage, Filesystem, Memory Management & BPF Summit) ืกืึทืžืขืจื™ื™ื–ื“ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ืึทืจื‘ืขื˜ ืฆื• ื”ืขื›ืขืจืŸ ื“ื™ Bcachefs ื˜ืขืงืข ืกื™ืกื˜ืขื ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ื–ืึทืฅ ืคื•ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืื•ืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ืขื FS. ืื™ืŸ ืžืื™, ืึท ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ื’ืึทื ื’ ืคื•ืŸ ืคึผืึทื˜ืฉืึทื– ืžื™ื˜ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Bcachefs FS ืื™ื– ื’ืขื•ื•ืขืŸ ืคืืจื’ืขืœื™ื™ื’ื˜ ืคึฟืึทืจ ืึธืคึผืฉืึทืฆื•ื ื’ ืื•ืŸ ื™ื ืงืœื•ื–ืฉืึทืŸ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืœื™ื ื•ืงืก ืงืขืจืŸ. FS Bcachefs ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืคึฟืึทืจ ื•ื•ืขื’ืŸ 10 ื™ืึธืจ. ื“ื™ ื’ืจื™ื™ื˜ืงื™ื™ื˜ ืฆื• ื‘ืืจื™ื›ื˜ืŸ ื“ื™ Bcachefs ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืื™ื™ื“ืขืจ ื™ื ืงืœื•ื–ืฉืึทืŸ ืื™ืŸ ื“ื™ ืงืขืจืŸ ืื™ื– ืึทื ืึทื•ื ืกื˜ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ 2020, ืื•ืŸ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึผืึทื˜ืฉืึทื– ื ืขืžื˜ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืื•ืŸ ื›ื™ืกืึธืจืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ื‘ืขืฉืึทืก ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืจืขืฆืขื ื–ื™ืข.

ื“ืขืจ ืฆื™ืœ ืคื•ืŸ Bcachefs ืื™ื– ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ XFS ืžื“ืจื’ื” ืคื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’, ืจื™ืœื™ื™ืึทื‘ื™ืœืึทื˜ื™ ืื•ืŸ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™, ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ื ืึธืš ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ Btrfs ืื•ืŸ ZFS, ืึทื–ืึท ื•ื•ื™ ืžืึทืœื˜ื™-ืžื™ื˜ืœ ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’, ืžื•ืœื˜ื™-ืฉื™ื›ื˜ืข ืคืึธืจ ืœื™ื™ืึทื•ืฅ, ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ (RAID 1/10), ืงืึทื˜ืฉื™ื ื’, ื˜ืจืึทื ืกืคึผืขืจืึทื ื˜ ื“ืึทื˜ืŸ. ืงืึทืžืคึผืจืขืฉืึทืŸ (LZ4, gzip ืื•ืŸ ZSTD ืžืึธื“ืขืก), ืฉื˜ืึทื˜ ืกืœื™ื™ืกื™ื– (ืกื ืึทืคึผืฉืึทืฅ), ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื˜ืฉืขืงืกืึทืžื–, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืงืจืึธื ืจื™ื“-ืฉืœืžื” ื˜ืขื•ืช ืงืขืจืขืงืฉืึทืŸ ืงืึธื•ื“ื– (RAID 5/6), ืกื˜ืึธืจื™ื ื’ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ืŸ ื™ื ืงืจื™ืคึผื˜ื™ื“ ืคืึธืจืขื (ChaCha20 ืื•ืŸ Poly1305 ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜) . ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’, Bcachefs ืื™ื– ืคืึธืจื•ื™ืก ืคื•ืŸ Btrfs ืื•ืŸ ืื ื“ืขืจืข ื˜ืขืงืข ืกื™ืกื˜ืขืžืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ Copy-on-Write ืžืขืงืึทื ื™ื–ืึทื, ืื•ืŸ ื“ืขืžืึทื ืกื˜ืจื™ื™ืฅ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ื’ื™ื›ืงื™ื™ึทื˜ ื ืึธืขื ื˜ ืฆื• Ext4 ืื•ืŸ XFS.

ื“ื™ ืœืขืฆื˜ืข ื“ืขืจื’ืจื™ื™ื›ื•ื ื’ืขืŸ ืื™ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ Bcachefs ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืกื˜ื™ื™ื‘ืึทืœืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืฉืจื™ื™ื‘ื˜ืึทื‘ืœืข ืกื ืึทืคึผืฉืึทืฅ. ืงืึทืžืคึผืขืจื“ ืฆื• Btrfs, ืกื ืึทืคึผืฉืึทืฅ ืื™ืŸ Bcachefs ืื™ืฆื˜ ื•ื•ืึธื’ ืคื™ืœ ื‘ืขืกืขืจ ืื•ืŸ ื–ืขื ืขืŸ ืคืจื™ื™ ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขืžืก ื˜ืึธื›ื™ืง ืื™ืŸ Btrfs. ืื™ืŸ ืคื™ืจ, ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ืกื ืึทืคึผืฉืึทืฅ ืื™ื– ื˜ืขืกื˜ืขื“ ื•ื•ืขืŸ ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ MySQL ื‘ืึทืงืึทืคึผืก. Bcachefs ื”ืื˜ ืื•ื™ืš ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืึทืจื‘ืขื˜ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™ - ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื ืื™ื– ื’ืขื•ื•ืขืŸ ื’ื•ื˜ ื•ื•ืขืŸ ื˜ืขืกื˜ืขื“ ืื•ื™ืฃ 100 ื˜ื‘ ืกื˜ืึธืจื™ื“ื–ืฉ, ืื•ืŸ Bcachefs ืื™ื– ื’ืขืจื™ื›ื˜ ืฆื• ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ 1 ืคึผื‘ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ืŸ ื“ืขื ืœืขื‘ืŸ ืฆื•ืงื•ื ืคึฟื˜. ืฆื•ื’ืขื’ืขื‘ืŸ ืึท ื ื™ื™ึทืข ื ืึธืงืึธื•ื• ืžืึธื“ืข ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ื“ื™ ืงืึธืคึผื™ืข-ืื•ื™ืฃ-ืฉืจื™ื™ึทื‘ืŸ (ื ืึธืงืึธื•ื•) ืžืขืงืึทื ื™ื–ืึทื. ื‘ืขืฉืึทืก ื“ื™ ื–ื•ืžืขืจ, ื–ื™ื™ ืคึผืœืึทื ื™ืจืŸ ืฆื• ื‘ืจืขื ื’ืขืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื˜ืขื•ืช ืงืขืจืขืงืฉืึทืŸ ืงืึธื•ื“ื– ืื•ืŸ RAIDZ ืฆื• ืึท ืกื˜ืึทื‘ื™ืœ ืฉื˜ืึทื˜, ืื•ืŸ ืกืึธืœื•ื•ืข ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื”ื•ื™ืš ื–ื›ึผืจื•ืŸ ืงืึทื ืกืึทืžืฉืึทืŸ ื•ื•ืขืŸ ืจื™ืกื˜ืึธืจื™ื ื’ ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ FS ืžื™ื˜ ื“ื™ ืคืกืง ื ื•ืฆืŸ.

ืฆื•ืงื•ื ืคึฟื˜ ืคึผืœืึทื ื– ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืึท ืคืึทืจืœืึทื ื’ ืฆื• ื ื•ืฆืŸ ื“ื™ ืจื•ืกื˜ ืฉืคึผืจืึทืš ื•ื•ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ Bcachefs. ืœื•ื™ื˜ ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ Bcachefs, ืขืจ ืœื™ื‘ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’, ื ื™ืฉื˜ ื“ื™ื‘ืึทื’ื™ื ื’ ืงืึธื“, ืื•ืŸ ืขืก ืื™ื– ืžืฉื•ื’ืข ืฆื• ืฉืจื™ื™ึทื‘ืŸ C ืงืึธื“ ืื™ืฆื˜ ืึทื– ืึท ื‘ืขืกืขืจ ืึธืคึผืฆื™ืข ืื™ื– ื™ืžืขืจื“ื–ืฉื“. Rust ืื™ื– ืฉื•ื™ืŸ ื™ื ื•ื•ืึทืœื•ื•ื“ ืื™ืŸ Bcachefs ืื™ืŸ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืขื˜ืœืขื›ืข ื™ื•ื˜ื™ืœืึทื˜ื™ื– ื•ื•ืึธืก ืœื•ื™ืคืŸ ืื™ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ. ื“ืขืจืฆื•, ื“ืขืจ ื’ืขื“ืึทื ืง ืื™ื– ื›ืึทื˜ืฉื˜ ืฆื• ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ื’ืึธืจ ืจื™ืจื™ื™ื˜ Bcachefs ืื™ืŸ Rust, ื–ื™ื ื˜ ื ื™ืฆืŸ ื“ืขื ืฉืคึผืจืึทืš ื‘ืื˜ื™ื™ื˜ื™ืง ืกืึทื•ื•ืขืก ื“ื™ื‘ืึทื’ื™ื ื’ ืฆื™ื™ื˜.

ื•ื•ื™ ืคึฟืึทืจ ื“ื™ ื”ืขื›ืขืจื•ื ื’ ืคื•ืŸ Bcachefs ืฆื• ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ, ื“ื™ ืึทื“ืึทืคึผืฉืึทืŸ ืคึผืจืึธืฆืขืก ืงืขืŸ ื–ื™ื™ืŸ ื“ื™ืœื™ื™ื“ ืจืขื›ื˜ ืฆื• ื“ืขืจ ืคืขืจืœื™ ื’ืจื•ื™ืก ื’ืจื™ื™ืก ืคื•ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ (2500 ืคึผืึทื˜ืฉืึทื– ืื•ืŸ ื•ื•ืขื’ืŸ 90 ื˜ื•ื™ื–ื ื˜ ืฉื•ืจื•ืช ืคื•ืŸ ืงืึธื“), ื•ื•ืึธืก ืื™ื– ืฉื•ื•ืขืจ ืฆื• ืึธืคึผืฉืึทืฆืŸ. ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ืึธืคึผืฉืึทืฆื•ื ื’, ืขื˜ืœืขื›ืข ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื”ืึธื‘ืŸ ืคืืจื’ืขืœื™ื™ื’ื˜ ื‘ืจื™ื™ืงื™ื ื’ ืึท ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹ืคึผืึทื˜ืฉืึทื– ืื™ืŸ ืงืœืขื ืขืจืขืจ ืื•ืŸ ืœืึทื“ื–ืฉื™ืงืœื™ ืืคื’ืขืฉื™ื™ื“ื˜ ื˜ื™ื™ืœืŸ. ื‘ืขืฉืึทืก ื“ื™ ื“ื™ืกืงื•ืกื™ืข, ืขื˜ืœืขื›ืข ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ืื•ื™ืš ื’ืขืฆื•ื™ื’ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื“ื•ืจืš ืื™ื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืื•ืŸ ื“ื™ ื’ืขืคืึทืจ ืึทื– ื“ื™ ืงืึธื“ ืงืขืŸ ื‘ืœื™ื™ื‘ืŸ ืึทื ืžื™ื™ื ื˜ื™ื™ื ื“ ืื•ื™ื‘ ืขืคึผืขืก ื›ืึทืคึผืึทื ื– ืฆื• ื–ื™ื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจ (ืฆื•ื•ื™ื™ ืจืขื“ ื”ืึทื˜ ืขืžืคึผืœื•ื™ื™ื– ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜, ืึธื‘ืขืจ ื–ื™ื™ืขืจ ืึทืจื‘ืขื˜ ืื™ื– ื ืึธืš ืœื™ืžื™ื˜ืขื“ ื˜ืขื•ืช ืงืขืจืขืงืฉืึทืŸ).

Bcachefs ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืžื™ื˜ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืฉื•ื™ืŸ ื˜ืขืกื˜ืขื“ ืื™ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ื™ Bcache ื‘ืœืึธืง ืžื™ื˜ืœ, ื“ื™ื–ื™ื™ื ื“ ืฆื• ืงืึทืฉ ืึทืงืกืขืก ืฆื• ืคึผืึทืžืขืœืขืš ืฉื•ื•ืขืจ ื“ืจื™ื™ื•ื•ื– ืื•ื™ืฃ ืฉื ืขืœ SSD ื“ืจื™ื™ื•ื•ื– (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืงืขืจืŸ ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ืžืขืœื“ื•ื ื’ 3.10). Bcachefs ื ื™ืฆื˜ ืึท Copy-on-Write (COW) ืžืขืงืึทื ื™ื–ืึทื ืื™ืŸ ื•ื•ืึธืก ืขื ื“ืขืจื•ื ื’ืขืŸ ืคื™ืจืŸ ื ื™ืฉื˜ ืฆื• ื“ืึทื˜ืŸ ืึธื•ื•ื•ืขืจืจื™ื™ื˜ื™ื ื’ - ื“ื™ ื ื™ื™ึทืข ืฉื˜ืึทื˜ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืฆื• ืึท ื ื™ื™ึท ืึธืจื˜, ื ืึธืš ื•ื•ืึธืก ื“ืขืจ ืึธื ื•ื•ื™ื™ึทื– ืฆื• ื“ื™ ืงืจืึทื ื˜ ืฉื˜ืึทื˜ ืื™ื– ื’ืขื‘ื™ื˜ืŸ.

ื ืกืคึผืขืฆื™ืขืœ ืฉื˜ืจื™ืš ืคื•ืŸ Bcachefs ืื™ื– ื“ื™ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืžื•ืœื˜ื™-ืฉื™ื›ื˜ืข ืคืึธืจ ืงืึทื ืขืงืฉืึทื ื–, ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ืงืึทืžืคึผืึธื•ื–ื“ ืคื•ืŸ ืขื˜ืœืขื›ืข ืœื™ื™ึทืขืจืก - ื“ื™ ืคืึทืกื˜ืึทืกื˜ ื“ืจื™ื™ื•ื•ื– (SSDs) ื–ืขื ืขืŸ ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื“ื™ ื“ื ืึธ ืฉื™ื›ื˜ืข, ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืงืึทืฉ ืึธืคื˜ ื’ืขื•ื•ื™ื™ื ื˜ ื“ืึทื˜ืŸ, ืื•ืŸ ื“ื™ ืฉืคึผื™ืฅ. ืฉื™ื›ื˜ืข ืื™ื– ื’ืขืฉืืคืŸ ื“ื•ืจืš ืžืขืจ ื’ืขืจืึทื ืื•ืŸ ื˜ืฉื™ืคึผืขืจ ื“ืจื™ื™ื•ื•ื– ื•ื•ืึธืก ืฆื•ืฉื˜ืขืœืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืคึฟืึทืจ ื•ื•ื™ื™ื ื™ืงืขืจ ื’ืขื•ื•ื™ื™ื ื˜ ื“ืึทื˜ืŸ. ืงืึทื˜ืฉื™ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื•ื™ืฉืŸ ืœื™ื™ึทืขืจืก ืื™ืŸ ืฉืจื™ื™ื‘ืŸื‘ืึทืง ืžืึธื“ืข. ื“ืจื™ื™ื•ื•ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืฆื•ื’ืขื’ืขื‘ืŸ ืื•ืŸ ื“ื™ื˜ืึทื˜ืฉื˜ ืคื•ืŸ ืึท ืฆืขื˜ื™ื™ืœื•ื ื’ ืึธืŸ ืกื˜ืึธืคึผืคึผื™ื ื’ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื (ื“ืึทื˜ืึท ืžื™ื™ื’ืจื™ื™ืฅ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ).

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’