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

2. rész

Cikksorozatunk második részében az NTFS adatfolyamokkal foglalkozunk. Ismertetjük működésüket és gyakorlati bizonyítékot keresünk létezésükre. Az alábbiak elolvasását ajánljuk rendszergazdák számára is, akik biztonsági másolatot készítenek NTFS fájlrendszerről - nem NTFS fájlrendszerre. Ne csodálkozzanak, ha eközben adatvesztés lép fel és nem teljesen azt kapják vissza, amit az NTFS-en látnak...
Összetett adatfolyamok (Multiple Streams)
A felhasználó egy fájlból a fájlnevet, kiterjesztést és az attribútumokat látja, azt nem, hogy ez milyen összetevőkből épül fel a háttérben. Nem NTFS fájlrendszeren egy fájlt egyetlen adatfolyam (stream) alkot. NTFS fájlrendszeren több adatfolyam is lehetséges. Közülük az egyiket fő adatfolyamnak (main stream) nevezzük. Az összetett adatfolyamok, egyszerű adatfolyamok gyűjteményei, melyek egyenként vagy csoportosan törölhetők. Ha FAT32-ről NTFS-re másolunk egy fájlt a kezdeti egy adatfolyam később továbbiakkal bővülhet, ebben az irányban nincsenek kompatibilitási problémák. Más a helyzet, ha egy összetett adatfolyamból álló fájlt másolunk át FAT32-re. Mivel a FAT32 nincs felkészítve egynél több fogadására a plusz információ elveszik. Ilyenkor csak a fő adatfolyam (main stream) kerül átmásolásra, de csak ha egy figyelmeztető ablakban a felhasználó engedélyt ad rá.
Keressünk gyakorlati bizonyítékot az elhangzottakra:
Indítsuk el az Intézőt és egy nem NTFS köteten kattintsunk a jobboldali egérgombbal egy üres helyre, majd válasszuk az Új > Szöveges dokumentum (New > Text Document) menüt. Ha hirtelen nincs kéznél nem NTFS fájlrendszer, egy floppy lemez is megteszi (azon ugyanis "sima" FAT fájlrendszer van). Ne csináljunk mást, csak hozzuk létre a dokumentumot, ne szerkesszük, ne nyúljunk hozzá. Figyeljük meg, hogy a mérete 0 kB.
Most hajtsuk végre ugyanezt egy NTFS köteten is. A méret itt is 0 kB. Eddig nincs semmi különbség. Vagy mégis? Kattintsunk rá mindkét fájlra a jobboldali egérgombbal és lépjünk a tulajdonságok menüre. Máris találtunk egy eltérést. A nem NTFS fájlrendszeren létrehozott állomány tulajdonságlapján csak egy "Általános" ("General") oldal szerepel, míg az NTFS változatnál van egy "Biztonság" ("Security") és egy "Összegzés" ("Summary") is. Előbbi a jogosultságokat szabályozza és megtalálható minden fájl esetében, míg utóbbi kifejezetten a szöveges dokumentumokról tárol információt (média fájloknál is szerepel csak más tartalommal). (Windows XP alatt egyszerű fájlmegosztás esetén a "Biztonság" ("Security") oldal nem jelenik meg.)
Maradjunk az NTFS verziónál és töltsük ki az "Összegzés" ("Summary") oldal mezőit (nem kötelező mindet). Kattintsunk az "OK" gombra és nézzük meg ismét a fájl hosszát. Hopp, még mindig 0 kB. Akkor hova került az általunk beírt információ? Talán elveszett? Nézzük meg ismét a tulajdonságlapot, még mindig ott van. Másoljuk át az állományt az NTFS fájlrendszeren belül - még mindig megvan. Mi történt?
Mielőtt választ adnánk, tegyünk egy kis kitérőt: FAT32 alatt egy Word dokumentumot is el lehetett látni hasonló adatokkal, de ekkor minden esetben változott a fájlméret, aminek az az egyszerű oka, hogy a beírt információ magában a dokumentumban tárolódott. Lekérdezni csak olyan programokkal lehetett, melyek ki tudták olvasni és képesek voltak értelmezni, illetve megjeleníteni. Az Office feltelepítése után a Windows Intéző is fel lett ruházva ezekkel a képességekkel.
Úgy tűnik az NTFS fájloknál más a helyzet, mert mint láttuk a fájlméret nem változott. Amikor létrehoztuk az új szöveges dokumentumot, keletkezett egy fájl és hozzá egy fő adatfolyam (main stream). Amint megadtuk a kiterjesztett attribútumok valamelyikét, létrejöttek további adatfolyamok, melyek eltárolták az információt. Ekkor vált a fájl összetett adatfolyammá (Multiple Streams). Természetesen mindez a háttérben történt a felhasználó elől elrejtve. A beírt adatok belekerültek a fájlrendszer adatbázisába. Az adatbázis létezésére nagyon egyszerű bizonyítékot találni: formázzunk meg egy kötetet NTFS fájlrendszerre és nézzük meg a méretét. Nem kell csodálkozni, ha azt látjuk, hogy kisebb a rendelkezésre álló terület, mint a teljes kapacitás. Olyan, mint ha már lenne valami a köteten, holott egyetlen bájtot sem írtunk rá. Minél nagyobb a kötet mérete és minél több extra információt kell tárolni, annál nagyobb lesz a háttéradatbázis mérete.
Cikkünk elején írtuk, hogy az összetett adatfolyamból álló fájlok nem NTFS fájlrendszerre másolásakor elvesznek - a fő adatfolyam kivételével - az adatfolyamok. Próbáljuk ki: töröljük a nem NTFS köteten lévő fájlt és kíséreljük meg átmásolni az NTFS-en lévő, extra információval ellátott példányt.
Megjelenik egy ablak "Adatfolyam-veszteség megerősítése" ("Confirm Stream loss") fejléccel. Tájékoztatást kapunk arról, hogy a fájl tartalma nem fog változni és egy bekeretezett mezőben láthatjuk, hogy mit veszíthetünk. Ha igenlő választ adunk és folytatjuk a műveletet, a fő adatfolyam kivételével a többi törlődik.
Ha visszamásoljuk a fájlt NTFS fájlrendszerre, változatlanul egy adatfolyamos marad az állomány egészen addig, amíg ismét kitöltjük az adatlapot és az operációs rendszer létrehozza a többi adatfolyamot.
A következő részben a Hard Linkekkel foglalkozunk.

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