Windows - Az NTFS fájlrendszer programozói megközelítésben

1. rész

Cikksorozatunkban a programozók számára igyekszünk alapismereteket nyújtani az NTFS fájlrendszerhez. Az első részben általánosságban ismertetjük a rendszer nyújtotta lehetőségeket, majd tovább megyünk, egyre mélyebbre ássuk magunkat a részletekben. A programozókon kívül ajánljuk mindenkinek, akit egy kicsit jobban érdekel, hogy mi van az operációs rendszer fájlkezelésének hátterében.
Élet az NTFS előtt...
A FAT fájlrendszer soha nem látott karriert futott be a Windows-ok történetében. Még a DOS-ból maradt ránk és a Windows 95 fájlkezelésének is az alapját képezte. Egy partíciót maximum 2 GB-ig tudott megcímezni, ami azokban az időkben, amikor fejlesztették még bőségesen elegendőnek tűnt. A hardvergyártók azonban nem álltak le és sorra jelentek meg az egyre nagyobb kapacitású merevlemezek. A világ kinőtte a 2 GB-os korlátot. Elsőként a Windows 95 OSR 2 verzióban mutatkozott be a FAT utódjaként emlegetett FAT32 fájlrendszer. Sokban nem különbözött elődjétől, de a 2 GB-os korlát feljebb tolódott. Gondolhatnánk, hogy vesztét ismét a hardvergyártók okozták, de ez tévedés. Igazából az igények változtak: a fájlokhoz és mappákhoz tartozó információk (attribútumok) és a biztonság iránt nőt meg a kereslet. Utóbbi a UNIX-ban már régóta jelen volt, ott már egész korán lehetett fájlszinten állítani a hozzáférési jogosultságot, az állományoknak voltak tulajdonosaik és az egyéb attribútumok száma is jobban kiszolgálta az igényeket. FAT32 alatt is történtek kísérletek a fájlinformáció kiterjesztésére: a felhasználó legtöbbször a desktop.ini fájllal találkozott, mely egy mappa megjelenítésével és beállításaival kapcsolatos adatokat tartalmazta. Programozók már több eszközt kaptak kézhez a FileSystemObject-el, névtér kiterjesztéssel (namespace extensions) és a Shell Automation Object Model-el. Ezek inkább kényszerű megoldásként keltek életre és egyikük sem hozta meg az igazi áttörést.
Az NTFS fájlrendszer főbb jellemzői
A Windows NT már ekkor használta az NTFS fájlrendszert és abban az időben talán még kevesen sejtették, hogy ez lesz a jövő. Ha komolyabb feladatokat akarunk elvégezni egy Windows 2000-el vagy XP-vel, akkor mindenképpen NTFS-re lesz szükségünk. Vannak programok (Exchange 2000 Server, de akár az Active Directory-t is említhetnénk) melyek működéséhez alapfeltétel. A fájlszinten állítható biztonságot megfejelték még az adattitkosítás és a kvótabejegyzések használatának lehetőségével is. Ugyanakkor továbbra is megmaradt a desktop.ini fájl, mint a megjelenítés személyre szabásának egyik eszköze. Nézzük meg a főbb funkciókat a FAT32-höz képest:
  • Lemez kvóták (Disk Quotas)
Felhasználónként, illetve kötetenként állítható a maximálisan igénybe vehető merevlemez terület. Beállításfüggő, hogy túllépés esetén hogyan reagál a rendszer. Használatával megakadályozható, hogy egy felhasználó megtöltse a merevlemezt és másoknak ne maradjon hely.
  • Reparse Points
Felhasználók által definiált adatok gyűjteménye, melyek hozzárendelődnek a fájlokhoz és/vagy mappákhoz. Az adatokat az alkalmazások értelmezik és jelenítik meg.
  • Titkosított fájlrendszer (Encrypted File System)
Rendszergazdák előírhatják a kötetek tartalmának titkosítását. Minden programot és fájlt ugyanúgy lehet használni, mint előtte. A módszer lényege, hogy az állományok titkosítva tárolódnak a merevlemezen és használatuk előtt az operációs rendszer valós időben fejti vissza őket. Ez átlagos használat mellett észrevehetetlen lassulást eredményez a rendszer működésében, de a merevlemezt áttéve egy másik gépbe olvashatatlanok lesznek az adatok.
  • Mount points
Komplett köteteket vagy merevlemezeket lehet a fájlrendszer egy mappájába csatlakoztatni. A kötet elérése úgy történik, mint ha a forráskötet adott mappája lenne és semmi más. Alkalmazásával felszabadíthatók a meghajtó betűjelek, elegendő csak egyet megtartani (C:).
  • Change Journal
A Change Journal egy adatbázis mely a fájlrendszerbe épül be láthatatlanul és minden fájlokkal illetve mappákkal kapcsolatos változtatást eltárol. Minden egyes NTFS kötet saját Change Journal-al rendelkezik.
FAT fájlrendszer NTFS-é konvertálása
Meglévő FAT vagy FAT32 fájlrendszerünket átkonvertálhatjuk NTFS-re, de NTFS-t FAT-ra vagy FAT32-re már nem. Utóbbinak egyik oka, hogy a sok extra információ elveszne, az esetleges titkosítást meg kellene szüntetni, stb. Windows 2000/XP telepítéskor felajánlja a meglévő fájlrendszer adatvesztés nélküli NTFS-re konvertálását és az adatvesztéses NTFS-re formázást is. Választhatunk szükségleteinknek megfelelően, de ha nem kívánunk változtatni, később bármikor meggondolhatjuk magunkat. Működő operációs rendszer alatt is átalakítható a fájlrendszer, csak egy újraindítás szükséges. Amint érzékeli a Windows az NTFS jelenlétét, azonnal megjelennek a hozzá tartozó funkciók.
Próbáljuk ki FAT32 alatt: kattintsunk az Intézőben (Explorer) egy fájlon a jobboldali egérgombbal és válasszuk a "Tulajdonságok" ("Properties") menüt. A megjelenő ablakban nem fogunk "Biztonság" ("Security") oldallal találkozni. Végezzük el a konvertálást és azonnal megjelenik, használatával beállíthatjuk a hozzáférési jogosultságokat.
Az utólagos konvertálást parancssorból a következő utasítással tudjuk végrehajtani:
convert x: /fs:ntfs
Ahol az x: az NTFS-é konvertálandó meghajtó betűjele.
Ha azt a kötetet jelöljük ki átalakításra melyen az operációs rendszer található, akkor csak a legközelebbi újraindítás alkalmával hajtódik végre, mert kizárólagos jogokkal való megnyitásra van szükség, ami azt jelenti, hogy senki és semmi nem használhatja az adott kötetet a művelet végrehajtása alatt.
Ha Delphi is van telepítve a gépre és parancssorból megpróbáljuk kiadni a convert utasítást, előfordulhat, hogy a Delphi Form Conversion Utility indul el. Ebben az esetben tallózzunk el a %systemroot%\system32 könyvtárba és ismételjük meg a parancsot.
A következő részben a Stream-ekről lesz szó.

Az NTFS fájlrendszer programozói megközelítésben cikksorozat