|
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.
|