Для ядра Linux ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ntfsplus с Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ NTFS

НамдТэ Π§ΠΎΠ½ (Namjae Jeon), участник ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Samba, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ EXFAT ΠΈ сСрвСр KSMBD Π² ядрС Linux, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ядро Π½ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы NTFS β€” ntfsplus. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ качСствСнный ΠΈ сопровоТдаСмый NTFS-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Linux-систСм с Windows-устройствами ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° NTFS Π² Linux ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° старым NTFS-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΈΠ· ядра Linux ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π²ΡˆΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ NTFS3, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ имССтся ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π΅Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ·-Π·Π° ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ сопровоТдСния. Из-Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ дистрибутивы ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ старый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ntfs-3g, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ качСствС основы Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ntfsplus использована кодовая Π±Π°Π·Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· ядра классичСского Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ntfs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ записи Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сущСствСнно Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ соврСмСнных возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ использованиС Ρ„ΠΎΠ»ΠΈΠ°Π½Ρ‚ΠΎΠ² страниц памяти (folios) вмСсто структуры buffer_head. Π’ Π½ΠΎΠ²ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ², позволившСС Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ сниТСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Для Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи/чтСния, прямого Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° экстСнтов ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ страничной записи/чтСния задСйствована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° iomap.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ntfs3, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Paragon Software, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ntfsplus дСмонстрируСт Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ iomap, ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² (delayed allocation) ΠΈ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (idmap). ПослС принятия Π² основной состав ядра Π² ntfsplus ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π² ntfs3 создаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ replay-ΠΆΡƒΡ€Π½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² тСстах Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ). Новый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ 287 тСстов ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° xfstests, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ возмоТности, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для выполнСния тСстов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Bonnie++ (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ntfs3 ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» 218 тСстов xfstests ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡ€ΠΈ запускС Bonnie++).

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСстов iozone Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ntfsplus оказался Π½Π° 3-5% быстрСС ntfs3 ΠΏΡ€ΠΈ записи Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ Π½Π° 35-110% ΠΏΡ€ΠΈ использовании 4 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ чтСния ntfsplus ΠΈ ntfs3 находится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π’ тСстС Π½Π° Π²Ρ‹Π²ΠΎΠ΄ списка Ρ„Π°ΠΉΠ»ΠΎΠ² (ls -lR) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… со 100/200/400 тысячами Ρ„Π°ΠΉΠ»ΠΎΠ² ntfsplus быстрСС Π½Π° 12~14%. По скорости монтирования ntfsplus быстрСС Π² 5-6 Ρ€Π°Π·. Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся Π² ntfsplus Π·Π° счёт примСнСния асинхронных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ iomap, ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ выдСлСния Π±Π»ΠΎΠΊΠΎΠ², ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ выдСлСния Π½ΠΎΠ²Ρ‹Ρ… кластСров, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ слияния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ кластСров Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² inode ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ….

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ntfsplus ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ntfsprogs-plus, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ основанных Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ… ntfsprogs ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ntfs-3g. Из ntfsprogs пСрСнСсСны ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ntfsclone, ntfscluster ΠΈ ntfsinfo. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° новая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ntfsck для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ восстановлСния ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² с NTFS.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ