A fájlokat valahogyan rendszerezni kell, és erre a legelfogadhatóbb megoldást a hierarchikus könyvtárszerkezet biztosítja. Ekkor a valamilyen szempont szerint összetartozó fájlok kerülnek egy könyvtárba. A hierarchikus szerkezet azt jelenti, hogy a könyvtárak tartalmazhatnak alkönyvtárakat is. Ebben a könyvtárszerkezetben az egyes fájlokra úgy tudunk hivatkozni, hogy meg kell adnunk, mely könyvtárakon keresztül érhetjük el a könyvtárszerkezet gyökerétől kiindulva. Ezt nevezik a fájl elérési útjának. Az elérési út egyes tagjait a / jel választja el egymástól, a legelső / jel a hierarchia legtetején lévő úgynevezett gyökér-könyvtárat jelöli, amelyből a többi elágazik.
Az nagyon kényelmetlen lenne, ha minden fájl elérését csak a gyökértől tudnánk meghatározni, ezért kialakították a munka-könyvtár fogalmát (working directory, lekérdezésére a pwd >>15.93. fejezet<< parancs szolgál). Így elég a munka-könyvtár alatt lévő könyvtárak nevét felsorolni a bennük lévő fájlok eléréséhez.
A fájlokra való hivatkozáskor nem kell tudnunk azt, hogy milyen fizikai eszközön (floppy, CD-ROM, merevlemez, stb.) helyezkednek el, elég a könyvtár hierarchia-beli helyüket megadnunk.
,,A lemezpartíció és a rajta 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, inode, 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.''[57]
Kapcsolódó témakörök: