.


[*]
[*]
[*]

[*]
index


Mik a fájlrendszerek?

Fájlrendszeren (filesystem) azokat a módszereket és adatstruktúrákat értjük, melyeket egy operációs rendszer használ egy lemezpartíció fájljainak kezelésére. Ezt a szót még a lemez adott típusú fájlrendszert tartalmazó partíciójára is használják, vagy csak a típus megjelölésekor. Így pl. mondhatjuk, hogy ''Két fájlrendszerem van.'', ami azt jelenti, hogy két partíciónk van, melyeken a fájlokat tároljuk. Azt is mondhatjuk, hogy valaki ''extended fájlrendszert használ'', ami viszont az általa használt fájlrendszer típusát jelenti.

A lemezpartíció és a rajt levő fájlrendszer közti különbség nagyon fontos. Néhány program, mint pl. a fájlrendszereket létrehozó programok, közvetlenül a lemez szektoraival dolgoznak. Ilyen program egy már esetleg meglevő fájlrendszert súlyosan megrongálhat. A legtöbb program viszont csak a fájlrendszert használva ír a lemezre, ezért ezek csak megfelelő fájlrendszert már tartalmazó partíción működnek.

Mielőtt egy lemezpartíciót fájlrendszerként kezdünk használni, inicializálni kell, és a nyilvántartó adatstruktúrákat a lemezre kell írni. Ezt a folyamatot fájlrendszer készítésnek nevezzük.

A legtöbb UNIX fájlrendszernek hasonló az általános felépítése, bár a részletek egy kicsit változhatnak. A központi fogalmak: szuperblokk, inode4.7, adatblokk, könyvtár blokk, és a indirekció blokk.

A szuperblokk a fájrendszer egészéről tartalmaz információkat, mint pl. a teljes méret. A szuperblokk pontos tartalma fájlrendszerfüggő. Az inode-ok egy-egy fájl minden adatát tartalmazzák a nevén kívül. A név ugyanis a könyvtárban tárolódik az inode sorszámával együtt. Az inode több adatblokk sorszámát tartalmazza, melyek a fájl adatait tárolják. Az inode-ban csak néhány adatblokk sorszámának van hely, és ha ennél több szükséges, automatikusan több terület kerül lefoglalásra. Ezek a dinamikusan lefoglalt blokkok az indirekt blokkok; a név azt jelzi, hogy az adatblokk megtalálásához az indirekt blokkban kell keresni a megfelelő blokk sorszáma után.

A UNIX fájlrendszerek rendszerint megengedik a fájlbeli lyukak (hole) létrehozását. (Lásd az lseek  kézikönyv lapját), ami azt jelenti, hogy a fájlrendszer megjegyzi, hogy a fájl egy adott helyén egymás után adott számú 0 bájt van, de nem foglal ezen 0-k számára blokkot. Ez kisebb lemezhasználatot eredményez. Egymást követő 0-k gyakran előfordulnak kis bináris programokban, Linux megosztott könyvtárakban, adatbázisokban és néhány más esetben. A lyukak megvalósítása úgy történik, hogy egy speciális érték kerül beírásra az adatblokk sorszámának helyére az inode-ban vagy az indirekt blokkban. Ez a speciális érték azt jelenti, hogy a fájl azon részéhez nem tartozik adatblokk, azaz ez egy lyuk.

A lyukak mérsékelten hasznosak. A szerző rendszerén egy egyszerű mérés kb. 4 MB-nyi megtakarítást jelzett a 200 MB használt lemezterületből, amely a lyukaknak volt köszönhető. Igaz ugyan, hogy ez a rendszer viszonylag kevés programot és adatbázis fájlt tartalmazott. A mérésre használt program megtalálható a A. appendixben.

[*]
Linux rendszeradminisztrátorok kézikönyve (első javított változat; SAG-HU 0.6b1)