Tamás Ferenc: Fájlrendszerek Linuxon


A Linux rendszerek önálló fájlrendszerrel üzemelnek, melynek jelenleg (2020. augusztusában) 4 főbb verziója ismert. Ezek: ext2, ext3, ext4 és ReiserFS. Az eredeti verziót, az ext fájlrendszer már nem használják, mivel erősen idejétmúlt, korszerűtlen rendszer. Az ext maga az "extended file system", a kiterjesztett fájlrendszer rövidített verziója. A fejlesztések mindig tettek hozzá újabb funkciókat és lehetőségeket az előző verziókhoz.

Történelmileg a Linux elődje a Minix operációs rendszer volt, így persze a Linux fájlrendszere is a Minix-ből származott. Az eredeti Minix fájlrendszer gyakorlatilag hibamentes volt, de az akkori követelmények és az igen szűk kapacitások miatt még csak 16 bites eltolást (offset) tudott alkalmazni, így a maximális méret mindössze 64 Mbájt lehetett. A másik szűk keresztmetszet a fájlok névhossza volt, ami max. 14 karakter lehetett. A Linux kezdeti célja ezen korlátok kitágítása, illetve elhagyása volt. A Linux fejlesztésekor egy új virtuális fájlrendszer-réteget hoztak létre, melyet azonnal hozzá is adtak a Linux-rendszermaghoz. Ez az új kiterjesztett fájlrendszert (extended fájl system) ext néven 1992-ben véglegesítették és egyből bele is került a Linux 0.96c kernelébe. Az ext fájlrendszer megoldotta a Minix két nagy problémáját: a maximális partíció-méretet és a fájlnév hosszának 14 bájtos korlátozását, mivel az új rendszerben immáron 2 GB volt a korlát és a fájlnevek hossza is max. 255 bájt lehetett. De még voltak problémák: nem volt önálló időbélyeg-támogatása a fájl-hozzáférésnek, az inode-módosításnak és az adatok átírásának.
Ezen problémák megoldására két új fájlrendszert fejlesztettek ki 1993 januárjában: az xiafs-t és a második kiterjesztett fájlrendszert (ext2 néven), amely utóbbi sok ötletet vett a Berkeley Fast File System-től. Az ext2 tervezésekor a bővíthetőséget tartották fontosnak, valamint minél több hely felhasználását a tárolóeszközön a későbbi fejlesztések miatt. Az ext2 stabilitásának egyik oka éppen a rengeteg tervező és a hosszú tesztelési idő által sziklaszilárddá gyúrt működés. Például rendszerkimaradás vagy váratlan, nem tervezett leválasztás után az e2fsck elkezdi elemezni a fájlrendszer adatait. Ha valamit talál, azt beleírja a kijelölt „lost+found” (elveszett és megtalált)  blokkba, de ez az ellenőrzés a naplófájl hiánya miatt a teljes fájlrendszer végigvizsgálja, így néha elég hosszú ideig (fél óra vagy akár egy egész) is eltart. Ám mivel az ext2 a legtöbb fájlrendszerrel szemben nem csinál naplót és elég kevés memóriát használ, így igen gyors.

Ext2


Az ext2 kifejlesztője: Rémy Card 1993 januárjában. Lényeg: az ext fájlrendszer korszerűbbé és gyorsabbá  tétele. Alapvetően nincs naplózó funkciója. Az egyedi fájlok max. mérete 16 GB - 2 TB; míg az ext2 partíció teljes mérete 2 TB – 32 TB lehet. (Részletesen később!) Az ext2 számos Linux-disztribúció alapértelmezett fájlrendszere volt, beleértve a Debian és a Red Hat Linuxot is, mindaddig, amíg kiszorította az újabb verzió, az ext3.
Az ext2 a blokkot használja alapvető tárolóegységként. Ezek a blokkok blokk-csoportokba vannak osztva. Általában több ezer blokk-csoport van a nagy fájlrendszereken. Egy adott fájl többnyire egy ilyen blokk-csoportban található. Így a diszk-hozzáférési idő minimalizálható egy összefüggő fájl olvasásakor. Minden blokk-csoport tartalmaz egy szuperblokk-másolatot és egy blokk-csoport leíró táblát, valamint egy blokk-térképet (bitmap), egy inode-térképet (inode bitmap), egy inode-táblát, és végül a tényleges blokk adatait. A szuperblokk az operációs rendszer bootolásához elengedhetetlenül fontos információkat tartalmaz. Ezek a biztonsági másolatok a fájlrendszer számos helyén el vannak tárolva. Azonban tipikusan csak az első megtalálható példányt használja fel a rendszer egy indításkor (boot-folyamatban). A csoport leíró tartalmazza a blokk-térkép helyét, az inode-térképet, minden egyes blokk-bejegyzés inode-térképének indítási helyét.
Minden egyes fájl vagy könyvtár egy inode-hoz van hozzárendelve. Maga az inode kifejezés eredeti ismeretlen, de a legvalószínűbb magyarázat az „index node” lehet, azaz az index-jegyzet. Az inode tartalmaz adatokat a méretről, az engedélyekről, a tulajdonjogról, valamint a fájl vagy könyvtár lemezen való helyéről. Az ext2 inode-szerkezetét a következő rajz szemlélteti:
 
(Rajz eredetije: http://en.wikipedia.org/wiki/Ext2 )
A fenti ábrán a legfelső inode-információs blokkban 7 bejegyzés van, amelyekből az első 5 konkrét fájlra mutat (tehát egy pointer), míg az alsó kettő egy újabb inode-panelre. Az utolsó előtti inode-bejegyzés által mutatott inode-ban 3 újabb fájl található, míg a főkönyvtár utolsó pointere egy másik inode-bejegyzésre mutat (rajzon alsó sor!). Ebben három újabb harmadlagos inode-pointer  van, melyekben végül megtalálhatóak a duplán indirekt blokkok.
A gyakorlatban minden könyvtár könyvtár-bejegyzések listája, ahol minden egyes könyvtár-bejegyzéshez társul egy inode-szám, amely tartalmazza az inode számát, a fájlnév hosszát, és a fájlnév aktuális szövegét. Egy adott fájlnév megtalálásáért a rendszer végigkeresi a könyvtárat az elejétől a végéig. Az ésszerű méretű könyvtáraknál ez könnyedén megy is, ám a hatalmas nagy könyvtáraknál ez nem eléggé hatékony, mivel itt az ext3 biztosít megbízható módot, ami hatékonyabb, mint a fájlnevek egyszerű listája. A gyökérkönyvtár mindig tárolja az inode számot, tehát a fájlrendszer kódja mindig meg tudja találni a felcsatlakozási időt (értsd: amikor a meghajtót csatlakoztattuk a rendszerhez). Az alkönyvtárak mindig tárolják a saját nevüket, és az inode számukat. Az összes alkönyvtár két bejegyzéssel kezdődik: az egy pont ("." ) a saját, aktuális könyvtárat jelöli, míg a két pont ("..") a szülő-könyvtárat jelöli. Ezek a bejegyzések is a saját nevükön kívül tárolják a a saját inode-számukat, valamint a két pont tárolja a szülő könyvtár inode-számát is. Csak ez a két bejegyzés kapja ezt a különleges bánásmódot, mivel ők ketten automatikus létrejönnek az alkönyvtár létrehozásakor; ráadásul nem is lehet őket törölni.
Amikor egy új fájl vagy könyvtár létrejön, az ext2 rendszernek el kell döntenie, hogy hol fogja tárolni az adatokat. Ha a lemez nagyjából üres, akkor az adatfolyam csaknem bárhol tárolható. Azonban az adatok megfelelő csoportosításával és rendezésével a rendszer eléri a minimális keresési időt és a maximális teljesítményt. Az ext2 megpróbálja kiosztani a létrejövő csoportbeli valamennyi új könyvtárat a szülő könyvtárban elméletileg úgy, hogy a szülő könyvtár és az alkönyvtár-bejegyzések aránylag közel legyenek a minél gyorsabb hozzáférés miatt. Az ext2 igyekszik a fájlokat elhelyezni az őket tartalmazó könyvtár csoportjában, mivel a könyvtár nevének lekérdezése után általában a teljes tartalom lekérdezése szokott következni. Azonban, ha a csoport már tele van, akkor az új fájl vagy könyvtár át lesz rakva egy másik, nem feltétlenül tele lévő csoportba. Az adatblokkok eléréséhez feltétlenül szükséges fájlok és  könyvtárak megtalálhatóak az adatelosztási tervben. (data allocation bitmap). Az inode-tábla minden szükséges bejegyzése megkereshető ebben az adateloszlási térképben.
Méretkorlátok ext2 használata esetén:

Blokkméret

Fájlméret max.

Fájlrendszer max. mérete

1 KBájt

kb. 16 GB

2 TB

2 KBájt

256 GB

8 TB

4 KBájt

2 TB

16 TB

8 KBájt

kb. 64 TB

32 TB


(Emlékeztetőül: 1 TB = 1024 GB = 1024*1024 MB = 1024*1024*1024 Kbájt)

A lehetséges alkönyvtár-bejegyzések elméleti határa 31998, de a gyakorlatban ezt meg sem szokták közelíteni. A könyvtár nem indexelhető az ext2 rendszerekben, ezért komoly problémák lehetnek, ha egy könyvtárban igen sok (pl. 10000 feletti) fájl található. Egy könyvtárban található fájlok elméleti határa: 1.3*1020 db, habár ez a gyakorlatban az előbbi indexelési gond miatt nem megvalósítható.

Megjegyzés: habár már két modernebb verziója is van az ext fájlrendszernek, igen sok helyen még mindig az ext2-t használják egyszerűsége is igen jó kihasználhatósága miatt.



Ext3


Az ext3 kifejlesztője: Stephen Tweedie 2001 novemberében, bár az első próba-verziója már 1999 februárjában megjelent. Ez a fájlrendszer nem egy teljesen egyedi fejlesztés, hanem a már meglévő és kiválóan működő ext2 tervezési és szervezési elveire épült, így a két fájlrendszer igen szorosan egymáshoz kapcsolódik. A más fájlrendszerekre való áttérés elég körülményes, mivel általában a meglévő fájlrendszerben mindent el kell menteni, majd a többnyire teljes partíció-formázás után teljesen előlről fel kell építeni a teljes, új fájlrendszert. Ezzel szemben az ext2-ről az ext3-ba áttérés direkt módon megtörténhet, külön rendszermentés nélkül; ráadásul az egész művelet a partíció méretétől függően pár perctől 10-15 percig szokott tartani.
Az ext3 fájlrendszer a Linux-rendszermag (kernel) 2.4.15-ös verziójától elérhető. Az egyedi fájlok max. mérete 16 GB - 2 TB; míg az ext3 partíció teljes mérete 2 TB – 32 TB lehet. Legfőbb előnye, hogy engedélyezi a naplózást, amelyre egy külön erre a célra fenntartott hely szolgál, ahol könnyedén lehet nyomon követni a változásokat. Egy esetleges rendszerösszeomlásnál a fájlok így kevésbé sérülhetnek. Tagadhatatlan tény, hogy az ext3 sebessége miatt kevésbé vonzó, mint a konkurens Linuxos fájlrendszerek, pl. ext4, ReiserFS vagy XFS; de velük szemben az ext3 jelentős előnye az, hogy jóval kevesebb a CPU-igénye. Azt is figyelembe kell venni, hogy biztonságosabb, mint más Linuxos fájlrendszer köszönhetően a viszonylag egyszerű fájlrendszerének és a széleskörű tesztelő közösségnek.
Háromféle naplózó rendszer létezik az ext3 rendszereken:
- Journal (naplózott) – a metaadatok és a tartalom egyaránt belekerül a naplóba. A rendszert a sok adminisztráció lelassíthatja. Alacsony kockázatú.
- Ordered (rendezett) – csak a metaadatok lesznek naplóba, viszont az adatok és a metaadatok integritását egyaránt biztosítja a rendszer. A metaadatok csak a lemezre írás után kerülnek naplózásra. Ezzel a metaadatok és az adatok egyaránt konzisztensek maradnak, ám a teljesítmény nem romlik. Ez az alapértelmezett verzió. Közepes kockázatú.
- Writeback (visszaírásos) – csak a metaadatok lesznek mentve a naplóba. Az adatok a fő fájlrendszerre íródnak, miután a metaadatok a naplóba kerültek. Általában ez a legjobb teljesítményű rendszer. Azonban egy esetleges rendszer-összeomlás utáni visszaállításkor a régi adatok jelennek meg a fájlokban a teljes fájlrendszer integritása megmarad. Magas kockázatú.

Az ext3 alapvetően a következő szolgáltatásokkal egészítette ki az ext2 működését: naplózás (lásd fent!), online fájlrendszer növekedés és Htree indexelés a nagyobb könyvtárakban. (Megjegyzés: a  Htree a közismert B-tree indexelési módszer kicsit finomított verziója.) Ezen funkciók nélkül az ext3 teljesen megfelel az ext2 fájlrendszernek. Ez a helyzet tette lehetővé, hogy a jól bevált és kipróbált ext2 fájlrendszerbéli karbantartó és javító segédprogramok különösebb változtatás nélkül alkalmazhatóak az ext3 rendszereken is. Az ext3 ennek ellenére nem rendelkezik a modernebb fájlrendszerek számos funkciójával, például dinamikus inode-foglalás és kiterjesztés. Ellenben a fájlrendszerben a metaadatok mindene esetben rögzítettek, jól ismert helyeken vannak, ráadásul az adatszerkezetekben van némi redundancia. A fenti szerkezeti megoldás miatt jelentős adatvesztéskor az ext2 és ext3 fájlrendszerek visszaállíthatóak, míg egyéb fájlrendszerek esetén gyakori az adatvesztés.
Mivel az ext3 alapvető célja, hogy visszafelé kompatibilis legyen az ext2-vel, ezért örökölte annak korlátait, tehát nincsenek sem dinamikus inode-ok, sem blokkok rész-kiosztása. Továbbá egy könyvtárban legfeljebb 31988 alkönyvtár lehet, mivel az inode-ok maximális száma 32000 lehet. További hátrány, hogy nincsen online ext3-as töredezettségmentesítő eszköz, ami az egész fájlrendszer szintjén működik. Bár létezik egy offline ext2-es töredezettségmentesítő, az e2defrag, de használatához először az egész fájlrendszert át kell konvertálni ext2-be, majd vissza ext3-ba. De ezzel óvatosan kell eljárni, mivel az e2defrag megsemmisítheti az adatokat attól függően, hogy a szolgáltatásbitek be vannak-e kapcsolva egész fájlrendszeri szinten. Ellenben vannak user-szintű töredezettségmentesítő eszközök, mint a Shake (lásd: http://www.vleu.net/shake/) és a Defrag (lásd: http://ck.kolivas.org/apps/defrag/ és http://bazaar.launchpad.net/~jdong/pyfragtools/trunk/files). A Shake működésekor az egész fájlt egy műveletként áthelyezi egy új helyre, így általában elegendő mennyiségű új, üres, egybefüggő lemezterület keletkezik. Ha vannak olyan fájlok, amelyeket egy időben használnak, akkor a Shake megpróbálja őket egymás mellé kiírni. A Defrag működésekor a fájlok egyesével íródnak át saját magukra. Azonban ez a stratégia csak akkor működik, ha létezik megfelelő mennyiségű üres hely. De összességében sajnos nem létezik megfelelő töredezettségmentesítő eszköz az (eredeti) ext3 fájlrendszereken, bár igazság szerint az ext3-as rendszerekben nem is nagyon van szükség Windows-os mennyiségű töredezettségmentesítésre, hiszen a fájlrendszer kezelő szoftvere a lehető legközelebbi helyeket igyekszik lefoglalni a fájlok részei számára. Mindezek ellenére az ext3 idővel, vagy meglehetősen speciális használattól töredezetté válhat, ilyen például a nagy fájlok lassú írása lemezre. Éppen ezért az ext3 utódjában, az ext4-ben már van egy kiválóan megírt online töredezettségmentesítő (defragmentation) segédprogram.
Az ext3 egyébként nem támogatja az egyszer már törölt fájlok visszaállítását, mivel az ext3 meghajtó-programja biztonsági okokból aktívan törli a törölt fájlok inode bejegyzéseit. Bár létezik számos ingyenes és fizetős technológia is a már törölt fájlok visszaállítására, de ezek közül egy sem garantál teljes visszaállítási biztonságot. Az ext3-ban nincsen automatikus tömörítés, bár léteznek eszközök a tömörítésre, de ezek egyike sem (fájl)rendszer-szintű.

Méretkorlátok ext3 használata esetén:

Blokkméret

Fájlméret max.

Fájlrendszer max. mérete

1 KBájt

16 GB

2 TB

2 KBájt

256 GB

8 TB

4 KBájt

2 TB

16 TB

8 KBájt

2 TB

32 TB


(Emlékeztetőül: 1 TB = 1024 GB = 1024*1024 MB = 1024*1024*1024 Kbájt)
Megjegyzés: a blokkok száma ext3 esetén: 232.



Ext4


Az ext4 fájlrendszer 2008-ban került kifejlesztésre és az előzetes (fejlesztői) verzió a Linux-rendszermag 2.6.19-es verziójától hozzáférhető. A véglegesnek szánt verziót 2008. december 25-én publikálták a Linux 2.6.28-as kernel-verziójában. Sikerére jellemző, hogy a Google 2010. január 15-én bejelentette, hogy az addig használt ext2-es fájlrendszereit ext4-re újítja fel (értsd: upgrade-eli).
Visszafelé kompatibilis az ext2/3 fájlrendszerekkel, de azok lehetőségeit nagyban kiterjesztette. Komolyan támogatja a hatalmas fájlméreteket és nagyságrendileg megnöveli a rendelkezésre álló, illetve elérhető lemezterületet. Az egyedi fájlok max. mérete 16 GB - 16 TB; míg az ext4 partíció teljes mérete 1 EB lehet. (1 EB/ExaBájt = 1024 PB/petabájt és 1 PB = 1024 TB/terrabájt) Az ext3 32ezres alkönyvtárszám-limitjével szemben itt már nincsen korlát. Csatlakoztatni lehet hozzá a már létező ext2-es és ext3-as meghajtókat. Érdekes, hogy az ext4 fájlrendszert fel lehet csatolni ext3-ként, ráadásul szabályosan képes működni. Számos új funkció került bevezetésre: multiblokk kiosztás, késleltetett allokáció, fejlett naplózás, gyors állomány-ellenőrzés (fsck), stb..
Ezt a fájlrendszert éppen a terjedelme miatt már nem lehet simán visszafelé lekonvertálni ext2/3-ra. A fájlrendszer méretének növelése összefügg a blokkok fizikai méretének növelésével, a nagy fájlok jobb tárolásával, valamint a töredezettség csökkentésével. Az ext4 egyetlen lépésben megnövelte a régebbi 128 bájtos inode-okat 256 bájtosra, így sokkal több mindenre jut hely, például az időbélyegző is sokkal pontosabb lett. Egyetlen inode-ban több (négy) fájlt is lehet tárolni, míg ennél több fájl esetén rendelkezésre áll (az amúgy alapértelmezett) Htree igen hatékony indexelési rendszere. Az ext4 lehetővé teszi a fájlok előzetes helyfoglalását a lemezen. A legtöbb fájlrendszernél ez azt jelenti, hogy egy csomó zérus kerül a létrehozott fájlba. Ám az ext4 és néhány más fájlrendszer (mint az XFS) esetén egy új rendszerhívás, a fallocate() aktivizálódik. Az így lefoglalt terület biztosított lesz és nagy valószínűséggel összefüggő. Ez igen kényelmes lehetőséget nyújt az adatbázisoknak és a média sugárzásának (media streaming). Az ext4 egy különlegesen hatékony technikát (ún. röptében törlést) használ a foglalások törléséhez. Ez a gyakorlatban azt jelenti, hogy az ext4 késlelteti a blokkok foglalását amíg az adatokat kiírja a lemezre; viszont néhány fájlrendszer már a lemezre írás előtt lefoglalja a blokkokat. A törölt foglalás növeli a teljesítményt és csökkenti a töredezettséget, mivel az aktuális fájl méretét használja a blokkok pontos foglalásához. Újdonság a naplózás terén az ext3-hoz képest a CRC ellenőrző-összegek megjelenése, ami talán az egyik legnagyobb sikerű újítás lett.

ReiserFS és Reiser4


A ReiserFS egy általános célú, naplózott fájlrendszer, amit a Hans Reiser vezette Namesys tervezett. Jelenleg a Linux támogatja a 2.4.1-es rendszermag verziója óta. Ez volt az egyik legelső naplózó fájlrendszer, ami belekerült a hivatalos Linux-rendszermagba. A ReiserFS a következő disztribúciók hivatalos fájlrendszere: Elive, Xandros, Linspire, GoboLinux és Yoper Linux. A ReiserFS volt a Novell-féle Suse Linux Enterprise hivatalos fájlrendszere, amíg a Novell 2006. október 12-én át nem tért az ext3-ra a további verziói számára. A Namesys szerint a ReiserFS (más néven Reiser 3) stabil és végleges, így a megszokott biztonsági frissítéseken és hibajavításokon kívül a fejlesztése befejeződött. A cég immár az utódjára, a Reiser 4-re koncentrált. Maga a Namesys amúgy kiszállt az üzleti életből, miután az alapító Hans Reisert 2008-ban megvádolták felesége meggyilkolásával. Azonban az önkéntesek viszik tovább az immáron nyílt forráskódú (Open Source) projektet. A ReiserFS óriási előnye volt, hogy bevezetésekor ez volt a legelső Linux-környezetben naplózni képes fájlrendszer.
Az összes adat egy dinamikus B*-fastruktúrában van szervezve. Ez a fastruktúra jobban ki tudja használni a rendelkezésre álló lemezterületet, mivel a kis méretű fájlok közvetlenül a B*-struktúra levélcsomópontjaiban vannak eltárolva, nem máshol és csak egy link (mutató) jelzi a fájl tényleges helyét. Ráadásként a tárterület nem 1 vagy 4 Kbájtos egységekben van szervezve, hanem az adatok egész pontosan a nekik szükséges helyet foglalják le. Másik előny az inode-ok dinamikus lefoglalása, így a rendszer igen rugalmas lesz. Ezzel ellentétben pl. az ext2 esetén az inode-okat a rendszer kialakításakor már meg kell adni. Még egy tagadhatatlan előny: a legutolsó metaadatokat tároló naplózás miatt az esetleges rendszerösszeomlás után a teljes fájlrendszer helyreállítása még igen nagy fájlrendszerek esetén is igen gyorsan megvalósul.
Az ext2/3-mal összehasonlítva a ReiserFS sebessége 4 Kbájt alatti fájlokra nézve gyorsabb. Ezért (is) alkalmazta a Usenet számos csatornán, valamint a HTTP-cache célokra és gyakori a levelezőszervereken is, valamint egyéb rendszereken, ahol a kis fájlok esetén lényeges a rendszer működési sebessége. Azonban a gyakorlatban a hírszerverek másik szolgáltatást használnak (cycbuf), amely a cikkeket egyetlen nagy fájlban tárolja – hasonlóan a gyors HTTP-cache állományokhoz. Számos rendszer alapos felülvizsgálata a gyorsaságból fakadó előnyt semmissé tette. Az email szerverek a fentiekhez hasonló problémával küszködtek, ráadásul a ReiserFS esetén is fellépett a máshol gyakran tapasztalható probléma: a fájlrendszer gyakori, sűrű használata miatt a teljesítmény drámaian csökkent idővel.
Technikai adatok:
- 32 biten a maximális kezelhető fájlrendszer-méret: 8 TB
- 64 bites ugyanez: 1 EB (= 1024 TB).
- Fájlok maximális száma: 232-3 db.
- Maximális fájlnév-hossz: 4032 bájt, ami a Linux-rendszerekben általában 255 bájt.
- Időbélyeg felbontása: 1 mp.
- Fájlnévben megengedett karakterek: minden, kivéve a „NUL” és a „/”.
- Tömörítés: nincs.

Részletesebb magyar nyelvű cikk:
http://www.linuxvilag.hu/content/files/cikk/04/cikk_04_51_53.pdf , illetve
http://www.linuxvilag.hu/content/files/cikk/32/cikk_32_30_33.pdf

XFS fájlrendszer


Az XFS az egyik legelső 64 bites naplózó fájlrendszer még 1994-ből. SGI fejlesztés, mivel még a Silicon Graphics fejlesztette ki az IRIX operációs rendszerhez. Még 2000 májusában a fejlesztő cég GPL-t csinált belőle, így teljesen szabadon felhasználhatóvá vált. A Linux 2.4-es kernel megjelenése óta terjedt el. A FreeBSD csak a számok olvasását támogatta, de a 7.0-CURRENT megjelenése (2006) óta már elérhető az írás is. A maximális fájlméret: 8 Exbibájt, a fájlnév maximális hossza: 255 bájt, míg a kötet lehetséges maximális hossza 16 Exbibájt. (Megjegyzés: 1 ExbiBájt = 10246 bájt) Támogatja a tárolt dátumokat, az attribútumokat és a fájlrendszer (ACL) engedélyeket. XFS-t támogató operációs rendszerek: FreeBSD, IRIX, Linux.
A fájlrendszer igen jól méretezhető, mivel az egyik legjobb a több részben tárolt fájlok és a nagyméretű könyvtárak tárolásánál, ráadásul a tervezésének köszönhetően kiválóan működik csúcsminőségű hardveren is. Fontosabb funkciói:
- Háromféle metaadat-naplózás érhető el: logikai, külső és belső. Csak metaadat!
- Online növelhető méret – csak növelhető!
- Töredezettségmentesítés valós időben.
- POSIX-kompatibilitás.
- Mivel az operációs rendszer megkerüli a cache-t, így az I/O-sávszélesség elérhető a felhasználói szint számára. (direkt I/O)
- Allokációs csoportokat használ, így növeli a skálázhatóságot és a párhuzamos I/O-teljesítményt.
- Létrehozásakor a blokkméret 512 bájt és 64 KB között változtatható.
- Késleltetett lefoglalást használ, azaz a RAM-ban eltárolja a függőben lévő tranzakciót, lefoglalja  a szükséges területet, de nem dönti el a tárolás pontos helyét, mivel az késleltetve van. Így van olyan ideiglenes állomány, ami egyáltalán nem kerül kiírásra. A teljesítmény nő, a töredezettség viszont csökken.
- Kiterjesztett attribútumok használatának támogatása.
- Ideiglenesen fagyasztható fájlrendszer, ami hasznos pl. pillanatkép készítésekor.
- Biztonsági mentés és visszaállítást végző segédprogramok.
- A fejlett kvótarendszer miatt a kvóták állíthatóak felhasználónként, csoportonként, illetve projektenként.
- A bootszektort is használja, így oda nem lehet bootloadert tölteni.





Felhasznált irodalom:
http://www.thegeekstuff.com/2011/05/ext2-ext3-ext4/
http://almafan.hu/index.php?option=com_content&view=article&id=63&Itemid=56
http://www.novell.com/hu-hu/documentation/sled10/sled_deployment_sp2/html/SLED-deployment/sec.filesystems.major.html
http://linuxreviews.org/sysadmin/filesystems/     
http://en.wikipedia.org/wiki/Ext2
http://www.debian-administration.org/articles/388
http://e-oktat.pmmf.hu/webgui/www/uploads/images/1690/nagy-krisztian-EXT3_filerendszer.pdf
http://www.vleu.net/shake/ 
http://ck.kolivas.org/apps/defrag/
http://bazaar.launchpad.net/~jdong/pyfragtools/trunk/files
http://www.ehow.com/how_7462220_defragment-ext3.html
http://en.wikipedia.org/wiki/Htree 
http://linuxaria.com/article/does-linux-need-defrag?lang=en
http://www.tldp.org/LDP/sag/html/filesystems.html
http://sharevm.wordpress.com/2008/12/16/435/
http://en.wikipedia.org/wiki/Ext3
http://arstechnica.com/information-technology/2010/01/google-upgrading-to-ext4-hires-former-linux-foundation-cto/
http://www.linux-mag.com/id/7271/
http://itcafe.hu/hir/jon_az_ext4_fajlrendszer.html 
http://www.memorx.eoldal.hu/cikkek/alapok/ext4-ext4.html
https://sites.google.com/site/piooland/eloadasok/fajlrendszerek
http://en.wikipedia.org/wiki/Ext4
http://news.cnet.com/8301-13580_3-9851703-39.html
http://www.linuxvilag.hu/content/files/cikk/04/cikk_04_51_53.pdf 
http://www.linuxvilag.hu/content/files/cikk/32/cikk_32_30_33.pdf
http://en.wikipedia.org/wiki/ReiserFS
http://users.iit.uni-miskolc.hu/~mileff/linux/Unix_Linux_rendszergazda_v9_beta.pdf
http://en.wikipedia.org/wiki/Reiser4
http://e-oktat.pmmf.hu/webgui/www/uploads/images/1689/maaqacp-xfs.pdf
http://www.linuxvilag.hu/content/files/cikk/75/cikk_75_39_42.pdf

(c) TFeri.hu, 2014.

Felújítva: 2020.