ΠΠΈΡΠ΅ΠΊΡΠΎΡ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Western Digital ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ΄ΡΠ° Linux Π½ΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Zonefs, Π½Π°ΡΠ΅Π»Π΅Π½Π½ΡΡ Π½Π° ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ. Zonefs ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ Π·ΠΎΠ½Ρ Π² Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² raw-ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΠΊΡΠΎΡΠΎΠ² ΠΈ Π±Π»ΠΎΠΊΠΎΠ².
Zonefs Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ POSIX-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ Π€Π‘ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ·ΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ API Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π±Π»ΠΎΡΠ½ΠΎΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ioctl. Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π·ΠΎΠ½Π°ΠΌΠΈ ΡΠ°ΠΉΠ»Ρ ΡΡΠ΅Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π° (Π·Π°ΠΏΠΈΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ).
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² Zonefs ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ
Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ ΠΠ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ΅ Π»ΠΎΠ³Π° LSM (log-structured merge), ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» — ΠΎΠ΄Π½Π° Π·ΠΎΠ½Π° Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΠ RocksDB ΠΈ LevelDB. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π·Π°ΡΡΠ°ΡΡ Π½Π° ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π° Π½Π΅ Π±Π»ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ°Ρ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΡΡ
ΠΎΡ Π‘ΠΈ.
ΠΠΎΠ΄ Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° ΠΆΡΡΡΠΊΠΈΡ
ΠΌΠ°Π³Π½ΠΈΡΠ½ΡΡ
Π΄ΠΈΡΠΊΠ°Ρ
ΠΈΠ»ΠΈ NVMe SSD, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°Π·Π±ΠΈΡΠΎ Π½Π° Π·ΠΎΠ½Ρ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠΎΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²ΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ Π±Π»ΠΎΠΊΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ
c ΡΠ΅ΡΠ΅ΠΏΠΈΡΠ½ΠΎΠΉ ΠΌΠ°Π³Π½ΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ (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-write).
Π Π°Π±ΠΎΡΡ Ext4 ΠΈ XFS ΠΏΠΎΠ²Π΅ΡΡ
Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ dm-zoned. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ZBD, ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru