Linux kernel ááá áºá áááºáá áºááá¯ááºážááŒá áºááá·áº BCache SSD block device caching system ááá¯áá±ážáá¬ážáá° Kent Overstreet ááẠLSFMM 2023 ááœááºáááá·áºááœáẠáááºážááááá·áºááœááºážááœáẠBcachefs ááá¯ááºá áá áºá¡á¬áž ááŒáŸáá·áºáááºááŒááºážááá¯ááºáᬠá¡áá¯ááºáááááºáá»á¬ážááᯠá¡áá»ááºážáá»á¯á¶ážáá±á¬áºááŒáá²á·áááºá & BPF Summit)) ááẠLinux kernel á á¡áááááœá²á·á ááºážááŸá¯ááœáẠဠFS ááá±á¬ááºáááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠá¡á á®á¡á ááºáá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá²á·áááºá áá±áááœááºá Bcachefs FS ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸáá·áºá¡áá° ááœááºážáá¶ááŒááºáááºáá¬ážáá±á¬ áá¬áá±ážá¡á á¯á¶ááᯠLinux kernel á á¡áááááœá²á·á ááºážááŸá¯ááœáẠááŒááºáááºáá¯á¶ážáááºááŒá®áž áá«áááºááẠá¡ááá¯ááŒá¯áá²á·áááºá FS Bcachefs ááẠ10 ááŸá áºááá·áº ááœá¶á·ááŒáá¯ážáá¬áá²á·áááºá core ááœááºááá«áááºáá® Bcachefs áá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááŒááºáááºáá¯á¶ážáááºááẠá¡áááºááá·áºááŒá áºááŸá¯á¡á¬áž 2020 ááŸá áºáá¯ááºááá¯ááºážááœáẠáá¯ááºááŒááºááŒá±áá¬áá²á·ááŒá®ážá áá¬áá±ážááŸá¯ááááºááŸááá¬ážááŸááºážááẠááááºááŒááºáááºáá¯á¶ážáááºá ááºá¡ááœááºáž ááœá±á·ááŸááá²á·áá±á¬ ááŸááºáá»ááºáá»á¬ážááŸáá·áº áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáá«áááºá
Bcachefs ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž áááºááŸááºážáá»ááºááẠá áœááºážáá±á¬ááºáááºá áá¯á¶ááŒááºá áááºáá»áááŸá¯ááŸáá·áº áá»á²á·ááœááºááá¯ááºááŸá¯ááœáẠXFS á¡ááá·áºááá¯á· áá±á¬ááºááŸááááºááŒá áºááŒá®áž Btrfs ááŸáá·áº ZFS ááœáẠáá«áááºáá±á¬ á¡á áááºá¡ááá¯ááºážá¡áá»á¬ážá¡ááŒá¬ážááœáẠá ááºáááááá¬áá»á¬ážá áœá¬áá«áááºááŒááºážá á¡ááœáŸá¬áá±á«ááºážá á¯á¶ ááá¯ááŸá±á¬ááºááŸá¯ á¡ááŒááºá¡áááºáá»á¬ážá áá°ážáá°ááŒááºáž (RAID 1/10) áá²á·ááá¯á·áá±á¬ áááºáá±á¬ááºážá¡ááºá¹áá«áááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá±á ááºá ááááºážáááºážááŒááºážá áá±á¬ááºááœááºážááŒááºááá±á¬ áá±áá¬áá»á¯á¶á·ááŒááºáž (LZ4á gzip ááŸáá·áº ZSTD áá¯ááºáá»á¬áž)á ááŒááºáááºáá»ááºáá»á¬áž (áá»áŸááºáá áºááŒááºáá»á¬áž)á checksums ááŒáá·áº ááá¯ááºáá¬ááŸá¯á¡áááºááŒá¯ááŒááºážá Reed-Solomon á¡ááŸá¬ážááŒááºáááºáá¯ááºáá»á¬áž (RAID 5/6)á áá¯ááºááŸááºáá¬ážáá±á¬ á¡áá»ááºá¡áááºááá¯ááŸá±á¬ááºááŸá¯ (ChaCha20 ááŸáá·áº Poly1305) á¡áá¯á¶ážááŒá¯ááŒáááº)á á áœááºážáá±á¬ááºáááºá¡áá Bcachefs ááẠCopy-on-Write ááá¹ááá¬ážá¡áá±á«áº á¡ááŒá±áá¶á Btrfs ááŸáá·áº á¡ááŒá¬ážáá±á¬ ááá¯ááºá áá áºáá»á¬ážááẠáá¬ááœááºááŒá®áž Ext4 ááŸáá·áº XFS ááá¯á·ááŸáá·áº áá®ážá ááºáá±á¬ á áœááºážáá±á¬ááºáááºááᯠááŒááááºá
Bcachefs ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠáá±á¬ááºáá¯á¶ážá¡á±á¬ááºááŒááºááŸá¯áá»á¬ážá¡áááºá á á¬áá±ážáááºá¡ááœáẠáááŸáááá¯ááºáá±á¬ áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬áž á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á áááºááŒáááºááŸá¯ááᯠááŸááºáá¬ážáá¬ážáááºá Btrfs ááŸáá·áº ááŸáá¯ááºážááŸááºáá«áá Bcachefs ááŸá áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááẠááá¯á¡áá« ááá¯ááá¯áá±á¬ááºážááœááºááŒá®áž Btrfs ááœááºááŸááá±á¬ ááŒá¿áá¬áá»á¬ážá០áááºážáá±ážáá«áááºá áááºááœá±á·ááœááºá MySQL á¡áááºááááºážáááºážááŸá¯áá»á¬ážááᯠá á®á ááºáá±á¬á¡áá« áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážáá¡áá¯ááºááᯠá ááºážáááºáá²á·áááºá Bcachefs ááẠá¡ááœááºá¡á á¬ážááá¯áá±á¬ááºážáá¬á á±ááẠá¡áá¯ááºáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºáá²á·ááẠ- ááá¯ááºá áá áºááẠ100 TB ááá¯ááŸá±á¬ááºááŸá¯ááœáẠá ááºážáááºáá¬ááœáẠáá±á¬ááºážááœááºá áœá¬áá¯ááºáá±á¬ááºáá²á·ááŒá®áž Bcachefs áá»á¬ážááᯠáááŒá¬áá®áá¬áá¡ááœááºáž 1 PB ááá¯ááŸá±á¬ááºááŸá¯ááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá "copy-on-write" (nocow) ááá¹ááá¬ážááᯠááááºááẠnocow áá¯ááºá¡áá áºááᯠááá·áºááœááºážáá¬ážáá«áááºá ááœá±áá¬áá®ááœááºá áááºážááá¯á·ááẠá¡ááŸá¬ážááŒááºáááºááŒááºážáá¯ááºáá»á¬ážááŸáá·áº RAIDZ ááá¯á·ááᯠáááºááŒáááºáá±á¬á¡ááŒá±á¡áá±ááá¯á· áá°áá±á¬ááºáá¬áᬠfsck utility ááŒáá·áº ááá¯ááºá áá áºáá»á¬ážááᯠááŒááºáááºááá°ááŒá®áž á á áºáá±ážááá·áºá¡áá«ááœáẠááŒáá·áºáá¬ážáá±á¬ááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááŸáá·áº ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá±ážááá¯ááºááẠá á®á ááºáá¬ážáááºá
á¡áá¬áááºá¡ááœáẠá¡á á®á¡á á¥áºáá»á¬ážááœáẠBcachefs ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááœáẠRust áá¬áá¬á áá¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯áá±á¬ ááá¹áááᯠáá±á¬áºááŒá¡ááºáá«áááºá Bcachefs ááá±ážáá¬ážáá°áá¡ááá¯á¡áá áá°áááºáá¯ááºááá¯ááŸá áºáááºáááºá áá¯ááºááá¯á¡ááŸá¬ážá¡ááœááºážááá¯ááºáá²á ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ááœá±ážáá»ááºá áá¬áá áºáá¯ááŸááá±á¬á¡áá«ááᯠC ááœááºáá¯ááºáá±ážáááºá¡áá°ážááŒá áºáááºá Rust ááẠuser-space utilities á¡áá»áá¯á·ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠBcachefs ááœáẠáá«áááºáá±ááŒá®ááŒá áºáááºá ááá¯á·á¡ááŒááºá á€áá¬áá¬á áá¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááá·áºá¡áá»áááºááᯠáááá¬áááºááŸá¬ážá áœá¬ áááºáá¬á á±áá±á¬ááŒá±á¬áá·áº Rust ááœáẠBcachefs áá»á¬ážááᯠá¡ááŒá®ážá¡ááá¯ááºááŒááºáááºáá±ážááẠá áááºáá°ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±áá«áááºá
Bcachefs áá»á¬ážááᯠLinux kernel á áááºááá±á á®ážááŒá±á¬ááºážááá¯á· ááœáŸá±á·ááŒááºážá¡ááœááºá ááŒááºáááºáá¯á¶ážáááºáááºáááºáá²áá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá ááŒá®ážáá¬ážáá±á¬á¡ááœááºá¡á á¬áž (ááŒááºáááºááŸá¯ 2500 ááŸáá·áº áá¯ááºááá¯ááºáž 90 ááá·áº) ááŒá±á¬áá·áº ááœá±ážá á¬ážááŒááºážáá¯ááºáááºážá áẠááŸá±á¬áá·áºááŸá±ážááá¯ááºáá«áááºá ááŒááºáááºáá¯á¶ážáááºááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºáááºá á¡áá»áá¯á·áá±á¬ developer áá»á¬ážááẠpatch á á®ážáá®ážáá»á¬ážááᯠáá±ážáááºááŒá®áž ááá¯ááá¯áá¯áá¹ááááŸáá áœá¬ ááá¯ááºážááŒá¬ážáá¬ážáá±á¬ á¡ááá¯ááºážáá»á¬ážá¡ááŒá Ạááœá²ááẠá¡ááŒá¶ááŒá¯áá¬ážáááºá ááœá±ážááœá±ážááŸá¯á¡ááœááºáž áá«áááºáá°á¡áá»áá¯á·ááẠdeveloper áá áºáŠážá០ááá±á¬áá»ááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠá¡á¬áá¯á¶á áá¯ááºáᬠáááºážá developer áá áºáá¯áá¯ááŒá áºáá²á·áá«á áá¯ááºááᯠáááááºážááááºážáá¬ážááá¯ááºááá·áº á¡áá¹ááá¬áẠ(Red Hat áááºáááºážáá»á¬áž ááŸá áºáŠážááẠááá±á¬áá»ááºááᯠá áááºáááºá á¬ážáá±ááŒáá±á¬áºáááºáž áááºážááá¯á·á á¡áá¯ááºááŸá¬ ááŸááá±áá±ážááẠá¡ááá·áºá¡áááºááŸááá±á¬ áá»áá¯á·ááœááºážáá»ááºáá»á¬ážá¡á¬áž ááŒááºáááºááŒááºáž)á
Bcachefs ááẠBcache ááá±á¬ááºáááááá¬áááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠá ááºážáááºááŒá®ážáá¬ážáááºážááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá®ááœááºáá¬ážááŒááºážááŒá áºááŒá®áž á¡ááŒáẠSSD áááá¯ááºáá»á¬áž (ááœááºááŸáááááºážá 3.10 ááœáẠáá«áááºáá±á¬ á¡ááŸá±áž hard drives áá»á¬ážáá±á«áºááœáẠá¡ááŸá±áž hard drives áá»á¬ážááᯠáááºááŸáºáááºáá±á¬ááºááá¯ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá Bcachefs ááẠáá±áá¬áá°ážáá°áá±ážáá¬ážááŒááºáž (COW) ááá¹ááá¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááẠáá±áá¬ááᯠáááºáá±ážááŒááºážááá¯á· áááŒá áºáá±á«áºá á±áá« - á¡ááŒá±á¡áá±á¡áá áºááẠáááºáá±áá¬á¡áá áºááá¯á· á á¬áá±ážááá¯ááºáááºá ááá¯á·áá±á¬áẠáááºááŸáá¡ááŒá±á¡áá±ááœáŸááºááŒáá»áẠááŒá±á¬ááºážáá²ááœá¬ážáááºá
Bcachefs áá¡ááºá¹áá«áááºáá
áºáá¯ááŸá¬ ááá¯ááŸá±á¬ááºááŸá¯ááœáẠá¡ááœáŸá¬áá»á¬ážá
áœá¬ááŒáá·áº ááœá²á·á
ááºážáá¬ážááá·áº á¡ááœáŸá¬áá±á«ááºážáá»á¬ážá
áœá¬ááŸááá±á¬ drive áá»á¬ážá áá»áááºáááºááŸá¯á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŒá
áºááẠ- á¡á±á¬ááºááŒá±á¡ááœáŸá¬ááá¯á· á¡ááŒááºáá¯á¶ážáááá¯ááºáá»á¬áž (SSD) ááŸáá·áº áá»áááºáááºáá¬ážááŒá®ážá áááŒá¬ááá¡áá¯á¶ážááŒá¯áá±á·ááŸááá±á¬ áá±áá¬áá»á¬ážááᯠáááºááŸáºáá¯ááºáááºááŸáá·áº á¡áá±á«áºáá¯á¶ážá¡ááœáŸá¬áá¯á¶á
á¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá áááºááá¯á¡á¬ážáááºážáá±á¬áá±áá¬ááᯠááááºážáááºážááá·áº ááá¯ááá¯áá±ážáááºááŒá®áž á
á»á±ážáááºáá¬áá±á¬ disk áá»á¬ážá Writeback caching ááᯠá¡ááœáŸá¬áá»á¬ážááŒá¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá Drives áá»á¬ážááᯠááá¯ááºá
áá
áºá¡áá¯á¶ážááŒá¯ááŸá¯ááᯠáááŸá±á¬áá·áºááŸááºáá² á¡áááºážááá·áºáá
áºáá¯ááá¯á· ááá¯ááºážááá
áºááŒáá·áº áá±á«ááºážááá·áºááá¯ááºááŒá®áž ááœá²áá¬ážááá¯ááºááẠ(áá±áá¬ááᯠá¡ááá¯á¡áá»á±á¬áẠááœáŸá±á·ááŒá±á¬ááºážáááº)á
source: opennet.ru