ΠΠ΅Π½Ρ ΠΠ²Π΅ΡΡΡΡΠΈΡ (Kent Overstreet), Π°Π²ΡΠΎΡ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° SSD-Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΡ BCache, Π² ΡΠ²ΠΎΡΠΌ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) ΠΎΠ±ΠΎΠ±ΡΠΈΠ» ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Bcachefs Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux ΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΠΎ ΠΏΠ»Π°Π½Π°Ρ ΠΏΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π€Π‘. Π ΠΌΠ°Π΅ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠ°ΡΡΠ΅ΠΉ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π€Π‘ Bcachefs. Π€Π‘ 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 ΠΠ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ nocow Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° «copy-on-write» (nocow). Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π»Π΅ΡΠ° ΠΏΠ»Π°Π½ΠΈΡΡΡΡ Π΄ΠΎΠ²Π΅ΡΡΠΈ Π΄ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ RAIDZ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π€Π‘ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ fsck.
ΠΠ· ΠΏΠ»Π°Π½ΠΎΠ² Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Bcachefs ΡΠ·ΡΠΊ Rust. ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° Bcachefs, ΠΎΠ½ Π»ΡΠ±ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ, Π° Π½Π΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π±Π΅Π·ΡΠΌΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π»ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. Rust ΡΠΆΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ Π² Bcachefs Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ½Π°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Bcachefs Π½Π° Rust, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΠ»Π°Π΄ΠΊΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Bcachefs Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux, ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΡΠ½ΡΡΡΡΡ ΠΈΠ·-Π·Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (2500 ΠΏΠ°ΡΡΠ΅ΠΉ ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 90 ΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°), ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΡΠ°Π·Π±ΠΈΡΡ ΡΠ΅ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΠΉ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠ΄Π½ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°ΡΡΡΡ Π±Π΅Π· ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Ρ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΡΠΎ-ΡΠΎ ΡΠ»ΡΡΠΈΡΡΡΡ (ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΎΡΠ²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π²Π° ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Red Hat, Π½ΠΎ ΠΈΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΎΠΊ).
Bcachefs ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΡΠΆΠ΅ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Bcache, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΆΡΡΡΠΊΠΈΠΌ Π΄ΠΈΡΠΊΠ°ΠΌ Π½Π° Π±ΡΡΡΡΡΡ SSD-Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΡ (Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΄ΡΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²ΡΠΏΡΡΠΊΠ° 3.10). Π Bcachefs ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Copy-on-Write (COW), ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ — Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ Bcachefs ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ»ΠΎΡΠ² — ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ»ΠΎΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠ΅ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΠΈ (SSD), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
, Π° Π²Π΅ΡΡ
Π½ΠΈΠΉ ΡΠ»ΠΎΠΉ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΌΠΊΠΈΠ΅ ΠΈ Π΄Π΅ΡΡΠ²ΡΠ΅ Π΄ΠΈΡΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. ΠΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (writeback). ΠΠ°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΎΡ ΡΠ°Π·Π΄Π΅Π»Π° Π±Π΅Π· ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΈΠ³ΡΠΈΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru