Bemutatkozik az NTFSPLUS: Új Linux-meghajtó az NTFS fájlrendszerhez jobb teljesítménnyel és több funkcióval

A Windows világában továbbra is alapértelmezett NTFS fájlrendszer Linux alatti támogatása évek óta ellentmondásos. A régi, csak olvasható „NTFS Classic” kikerült a kernelből, a jelenlegi, gyengén karbantartott ntfs3 pedig sok felhasználónál és disztribúciónál továbbra is a felhasználói térben futó ntfs-3g használatát tartja életben. Ezt a patthelyzetet kívánja feloldani Namjae Jeon új, „ntfsplus” néven benyújtott 11 részes patch-sorozata, amely egy átfogó, a klasszikus kódolapra visszanyúló, de modern Linux-kernel elvárásokhoz igazított NTFS-megvalósítást hoz. A cél a megbízható írhatóság, a nagy teljesítmény és a hosszú távon fenntartható karbantarthatóság úgy, hogy közben a Linux ökoszisztéma eszközeivel – az iomap infrastruktúrától a foliókon át a kerneles segédprogramokig – kéz a kézben működjön.

Bemutatkozik az NTFSPLUS: Új Linux-meghajtó az NTFS fájlrendszerhez jobb teljesítménnyel és több funkcióval

Klasszikus alapokon, de modern megoldásokkal: mi az az ntfsplus?

Az ntfsplus a korábbi, kizárólag olvasásra képes NTFS-kód alapjaira épül, amelynek letisztult szerkezete és részletes dokumentációja megkönnyítették az új fájlrendszer-illesztőprogram fejlesztését. A projekt célja, hogy mind felépítésében, mind működésében a modern Linux-kernel irányelveihez igazodjon. Ennek részeként az alrendszer teljesen elhagyja a buffer head használatát, helyette foliokat alkalmaz, míg a fájlműveleteket – legyen szó olvasásról, írásról, közvetlen I/O-ról, kiterjesztés-leképezésről vagy lapozásról – egységesen az iomap infrastruktúra kezeli.

A fejlesztés azonban nem áll meg a kernel szintjén: az ntfs-3g-ből származó, FUSE-komponenstől megtisztított „ntfsprogs-plus” segédcsomag teljes körű felhasználói eszközkészletet nyújt, amely a formázástól az fsck-ellenőrzésen át a hibajavításig terjed. Az ntfsplus így nem csupán egy új meghajtó, hanem egy komplett ökoszisztéma lesz. Az egyik legfontosabb előrelépés az írási műveletek fejlett kezelésében nyilvánul meg: késleltetett allokációval, több-klaszteres foglalással és a klaszter bitmap töredezettségének csökkentésével javítja az írási teljesítményt, miközben a frissen lefoglalt blokkok nullázása és a futáslisták optimalizált egyesítése további sebességnövekedést biztosít.

A teljesítménytesztek ígéretesnek tűnnek

Az iozone-alapú mérések jól szemléltetik az ntfsplus teljesítménybeli előnyét: egy szálon mérsékelt, de stabil gyorsulás tapasztalható, több szál használatakor viszont jelentős ugrás figyelhető meg. A kisebb és közepes blokkméretek esetén a párhuzamos írás sebessége messze meghaladja az ntfs3 eredményeit, miközben az olvasási teljesítmény gyakorlatilag változatlan marad. A való életben is jellemző feladatok, például a fájlrendszer-bejárások és nagyméretű könyvtárak listázása során az ntfsplus kétszámjegyű javulást hoz, több százezer fájl esetében is érzékelhetően rövidebb végrehajtási idővel. A nagyobb, terabájtos partícióknál a csatolási idő is drasztikusan csökken, hiszen a korábbi több másodperces késlekedést az új meghajtó a másodperc töredékére szorítja le.

A mérési eredmények ígéretesek

A stabilitás terén is látványos előrelépés történt: az ntfsplus jóval több xfstests próbát teljesít sikeresen, amit többek között az új fallocate implementáció, az idmapped mount támogatás és a kifinomultabb jogosultságkezelés tesz lehetővé. Kiemelt figyelmet kapott a Bonnie++ tesztben korábban jelentkező törlési hiba is: az ntfsplus újraírta a readdir működését, így láncbejárással kezeli az indexeket, elkerülve a párhuzamos törlésekből fakadó kihagyott bejegyzéseket. A fejlesztők a jövőben a naplózási rendszer teljes körű bevezetését is tervezik, mivel a ntfs3 jelenlegi, csak részleges journal-replayt kínáló megoldása nem bizonyult megbízhatónak. Az ntfsplus célja ezzel a teljes journaling-funkció integrálása, ami a fájlrendszer egyik legfontosabb hiányosságát hivatott megszüntetni.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.