Fájlrendszerek - LOK 2012

Tartottam a LOK 2012 konferencián egy előadást a fájlrendszerekről. Itt a prezentáció és a nagyjából hozzá tartozó jegyzet.

A konferencián az admin szekcióban volt az előadásom.

Fájlrendszerek prezentáció

2012_LOK-fajlrendszerek.ppt

Fájlrendszerek jegyzet

A fájlrendszer az operációs rendszer és a szolgáltatások alatti réteg. Linux rendszereken számos választási lehetőségünk van, már telepítéskor is, ellentétben a proprietary rendszerekkel, ahol általában csak egy vagy két fájlrendszerre tudjuk telepíteni a rendszerünket.

Ez a számos fájlrendszer miben különbözik egymástól és mi alapján válasszam ki a nekem megfelelőt?

A naplózás fogalma

Minden modern fájlrendszer használ valamilyen naplózási technológiát. Az alapelv az, hogy íráskor nem a fájlba írjuk a tartalmat, hanem egy ún. napló területre, amint a napló írása befejeződött megjelöljük az adatott véglegesként. Ha írás közben a gépünk leáll (áramszünet, egyéb meghibásodás), akkor a fájlunk kisebb valószínűséggel sérül, a napló alapján pedig ellenőrizni tudjuk, hogy milyen fájlok voltak nyitva a katasztrófa idején. Így az ellenőrző műveletek (fsck) rövidebb lehet, a javítás pedig pontosabb. Viszont sebességet veszítünk ezekért a funkciókért.

Választási lehetőségek

Ext - Extended filesystem. Erre mozdult el a Linux a Minix FS-ről. Nagyon régi, nem támogatott.

Ext2 - Ez még nem tud naplózni, már tud kezelni 2 terrabájtos lemezt. Mivel nem tud naplózni elég gyors is. Pendrive-ra lehet még optimális megoldás.

Ext3 - Az ext2 fájlrendszer naplózással kibővített változata. Fokozottan figyeltek a fejlesztők a visszafele kompatibilitásra, ezért nagyon könnyű ext2-ext3 között konvertálni a fájlrendszert, formázás nélkül is. Viszont ennek hátránya, hogy az ext2-ben található limitációk nagy része ext3-ra is igaz. De a tesztesetek jelentős része is érvényes mindkét fájlrendszerre, ezért az ext3 már kiadásakor is nagyon stabil tudott lenni. Ráadásul éveken keresztül optimalizálták adatbázisok alá, ezért itt nagyon jó a teljesítménye. Nem tud snapshotot és a fájlok visszaállítása nagyon nehézkes.

Ext4 - szintén törekedtek a fejlesztők a visszafele kompatibilitásra. Az ext2 és ext3 fájlrendszereket fel lehet csatolni ext4 fájlrendszerként, ami bizonyos esetekben önmagában képes sebességnövekedést eredményezni. Az ext4 fájlrendszert pedig fel lehet csatolni ext3-ként, és szabályosan tud működni. Az ext4-nél az volt a cél, hogy csökkentsék a fájlok töredezettségét, nagyobb kötet- és fájlméreteket támogasson, és a késleltetett írással nagyobb sebességet és hosszabb életet biztosítson a flashmemória alapú meghajtóknak. Mindazonáltal a késleltett írás növeli az adatvesztés kockázatát bizonyos körülmények között. SSD-re jobb választás, mint az ext3, és ha a disztribúciód támogatja, akkor egy nagyon jó általános fájlrendszer. Adatbázisok alá is elég jó választás lehet, jó géneket örökölt.

BtrFS - Az Oracle által fejlesztett fájlrendszer, mely a ReiserFS-hez hasonló funkciókkal rendelkezik. A neve a B-Tree File System rövidítése. Kezel lemez-pool-okat, támogatja a futásidejű snapshotokat, (transparent) adattömörítést és online töredezettség-mentesítést. Nagyvállalatok igényeire lett szabva, de a legtöbb disztribúció tervezi, hogy alapértelmezett fájlrendszerként használja, amit stabil lesz. Már most lehet konvertálni ext3/4 fájlrendszereket BtrFS-re, szóval egyértelműen ez lesz a következő “Linux fájlrendszer”. Számos funkciója és nagy teljesítménye miatt kiváló kiszolgáló oldali fájlrendszer lesz. Az Oracle a BtrFS mellé/felé tervezi a CRFS-t, ami az NFS/CIFS megosztásokat hivatott váltani. A kettő együtt nagyszerű fájlszolgáltatást fog nyújtani. Jelenleg az ext4 még szinte minden téren gyorsabb.

ReiserFS - Amikor 2001-ben bemtatták ezt a fájlrendszert, akkor nagy előre lépésnek számított. Rengeteg olyan szolgáltatást nyújtott, amit azt extended fájlrendszereken nem lehetett implementálni. 2004-ben a Reiser4 váltotta, ami a korábbi verziók hiányosságait javította, de a nagyon lassú fejlesztési tempó miatt még mindíg nem került bele a Linux kernelbe. A legtöbb disztribúcióban csak a ReiserFS érhető el. Nagy teljesítményű, jól kezeli a kis állományokat, naplókat, adatbázisokat, stb. Dinamikusan növelhető, de nem csökkenthető. A Reiser4-nél jobb választás a BtrFS, ezért megkérdőjelezhető a fájlrendszer jövője.

XFS - A Silicon Graphics 1994-ben fejlesztette ezt a fájlrendszert a saját operációs rendszerük alá, és később portolták Linuxra. Az ext4-hez hasonló funkciókkal rendelkezik, késleltetett írást használ a töredezettség elkerülésére, és nem támogatja a felcsatolt snapshotokat. Nagy fájlok kezelésében nagyon jó teljesítményt nyújt. Futásidőben növelhető, de semmilyen módon nem csökkenthető a mérete. Média fájlkiszolgálónak tökéletes, mert a nagyméretű fájlok átvitelét nagy teljesítménnyel kezeli. Általában külön /boot kötetre van szükség, mert a GRUB bizonytalanúl kezeli ezt a fájlrendszert. Kis fájlok esetén ez a fájlrendszer nem a legjobb választás. Meglehetősen kicsi a felhasználói bázisa, ezért a támogatása sem a legjobb, de nagyon régi, kiforrott, stabil és megbízható fájlrendszer. Teljesítményben talán kicsit jobb, mint az ext3/4 fájlrendszerek.

JFS - IBM fejlesztette még 1990-ben, később portolták Linuxra. Alacsony processzorigényére büszke, kis- és nagyméretű fájlok kezelésében eggyaránt nagyon fürge. Dinamikusan növelhető, de csökkenteni nem lehet, csakúgy mint az XFS és ReiserFS fájlrendszereket. Extrém módon jól megtervezték és a legtöbb nagy disztribúció támogatja, viszont sokkal kevesebben használják mint az ext3/4 fájlrendszereket, ezért kevésbé jól tesztelt megoldás. Eredetileg AIX-re tervezték. Nagy teljesítménye és kis erőforrásigénye miatt alacsony fogyasztású kiszolgálókban érdemes használni. A BtrFS fájlrendszerrel nem összehasonlítható, de egy netbookban hasznos lehet. Nagyon gyorsan ellenőrzi a fájlrendszert, de számos hibárol számoltak be a felhasználók hosszabb használat után.

ZFS - Éredemes ezt is megemlíteni, szintén az Oracle fejleszti (a SUN kezdte el), és a BtrFS-hez illetve ReiserFS-hez hasonló funkciókkal rendelkezik. Arról is pletykáltak pár évvel ezelőtt, hogy az Apple erre a fájlrendszerre lép tovább a saját HPFS megoldásáról. A SUN CDDL licenc miatt nem lehet a Linux kernelbe beépíteni, de userspace módban futó FUSE segítségével Linux alatt is lehet használni ezt a fájlrendszert. Nagy lemeztömbök esetén hatalmas teljesítményt nyújt. Számos funkciót nyújt (drive pooling, snapshots, dynamic disk striping). A FUSE miatt nagyon nehéz beüzemelni Linuxon.

Melyiket válasszam?

Általános használatra a laptopon, vagy az asztali gépen az ext4 a legésszerűbb választás, mert modern, nagy felhasználói bázisa van és a legtöbb disztribúcióban támogatják.

Hogyha speciális igényeid vannak, akkor mostmár elegendő információval rendelkezhetsz a döntésedhez.