ΠΠΈΡΠ΅ΠΊΡΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΎΡΡΡΠ΅Ρ Π² Western Digital Π’ΠΎΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ Π² ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈΡ ΡΠΏΠΈΡΡΠΊ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, Π½ΠΎΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π½Π°ΡΠ΅ΡΠ΅Π½Π° Zonefs, Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Ρ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅. Zonefs ΡΠ²ΡΡΠ·Π²Π° Π²ΡΡΠΊΠ° Π·ΠΎΠ½Π° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π±Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΅ΠΊΡΠΎΡ ΠΈ Π±Π»ΠΎΠΊ.
Zonefs Π½Π΅ Π΅ POSIX-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ FS ΠΈ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΠ΅Π½ ΠΎΠ±Ρ
Π²Π°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡ API Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ioctl. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ Π·ΠΎΠ½ΠΈΡΠ΅, ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ, Π·Π°ΠΏΠΎΡΠ²Π°ΡΠΈ ΠΎΡ ΠΊΡΠ°Ρ Π½Π° ΡΠ°ΠΉΠ»Π° (Π·Π°ΠΏΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅).
Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π² Zonefs, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π²ΡΡΡ
Ρ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΡΡΡ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΡΠΊΡΡΡΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° LSM (log-structured merge) ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» - Π΅Π΄Π½Π° Π·ΠΎΠ½Π° Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ RocksDB ΠΈ LevelDB. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΡΡ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠ΅Π½Π°ΡΡΠ½Π΅, ΠΊΠΎΠΉΡΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π΅ Π±ΠΈΠ» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π° Π½Π΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΡΡ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡ C.
ΠΠΎΠ΄ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΠ²ΡΡΠ΄ΠΈ ΠΌΠ°Π³Π½ΠΈΡΠ½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΈΠ»ΠΈ NVMe SSD, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π·ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π³ΡΡΠΏΠΈ ΠΎΡ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠΎΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° Π³ΡΡΠΏΠ° ΠΎΡ Π±Π»ΠΎΠΊΠΎΠ²Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·ΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΌΠ°Π³Π½ΠΈΡΠ΅Π½ Π·Π°ΠΏΠΈΡ Ρ ΠΏΠ»ΠΎΡΠΊΠΈ (Shingled Magnetic Recording, SMR), ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ ΡΠΈΡΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΈΡΡΠ°ΡΠ° Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ° ΠΎΡ ΡΠΈΡΠΈΠ½Π°ΡΠ° Π½Π° ΠΌΠ°Π³Π½ΠΈΡΠ½Π°ΡΠ° Π³Π»Π°Π²Π° ΠΈ Π·Π°ΠΏΠΈΡΡΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΏΠΈΡΡΠ°, Ρ.Π΅. Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ Π·Π°ΠΏΠΈΡ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡ Π½Π° ΡΡΠ»Π°ΡΠ° Π³ΡΡΠΏΠ° ΠΏΠ΅ΡΠ½ΠΈ. Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ SSD ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ°, ΡΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ° ΠΎΠ±Π²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ° ΡΠΊΡΠΈΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΈ FTL (Flash Translation Layer) ΡΠ»ΠΎΠΉ. ΠΠ° Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° NVMe ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ZNS (Zoned Namespaces), ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π·ΠΎΠ½ΠΈ, Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠΉΠΊΠΈ FTL ΡΠ»ΠΎΡ.
Π Linux Π·Π° Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ²ΡΡΠ΄ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ 4.10 ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈ ZBC (SCSI) ΠΈ ZAC (ATA) Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ Π²Π΅ΡΡΠΈΡ 4.13, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ dm-zoned ΠΌΠΎΠ΄ΡΠ», ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΡΠΊΡΠΈΠ²Π°ΠΉΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π·Π° Π·Π°ΠΏΠΈΡ, ΠΏΡΠΈΠ»Π°Π³Π°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ° Π½ΠΈΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π·ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° F2FS ΠΈ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Btrfs, ΡΠΈΠ΅ΡΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ Π·Π° Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΎ ΡΡΠ΅Π· ΡΠ°Π±ΠΎΡΠ° Π² CoW (copy-on -ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΠΈΡΠ°Π½Π΅.
Π Π°Π±ΠΎΡΠ° Ρ Ext4 ΠΈ XFS Π²ΡΡΡ
Ρ Π·ΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ dm-zoned. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ΡΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ZBD ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΠΎΡΠΎΡΠΈ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru