ext2

ext2
Gyártó Rémy-kártya
Teljes név Második kiterjesztett fájlrendszer
Első kiadás 1993. január ( Linux )
Partíció azonosító Apple_UNIX_SVR2 ( Apple Partition Map )
0x83 ( Master Boot Record )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( GPT )
Technikai megvalósítás
Fájlok Inode
Maximális értékek
A fájl mérete 2 TiB
Az összes fájl száma 10 18
A fájlnév hossza 255 bájt
Fájlrendszer mérete 16 TiB
Engedélyezett karakterek a fájlnévben Minden karakter, kivéve a NUL és /
tulajdonságait
Időintervallum 1901-12-13 20:45:52 - 2038-01-19 03:14:07 ( UTC +0)
(lásd  a 2038. évi problémát )
Villák támogatott
Fájljogok kezelése POSIX
Átlátszó tömörítés opcionális (lásd alább)
Átlátszó titkosítás Nem
Operációs rendszerek támogatása Linux, BSD, Mac OS X,
Windows (az ext2 fájlrendszer-illesztőprogram vagy az Ext2 IFS segítségével )

A második kiterjesztett fájlrendszer , vagy röviddel ext2 , a második kiterjesztett fájlrendszer számára Linux - operációs rendszerek . Ez az eredeti ext - fájlrendszert követi , amelyet 1993 - ban a Rémy Card fejlesztett ki a Minix fájlrendszer alapján . A mai implementáció a Linux kernelben tőle, valamint Theodore Ts'o-tól és Stephen Tweedie-től származik. Az ext2 hosszú évekig a Linux-disztribúciók szokásos fájlrendszere volt, és végül korszerűbb naplózási fájlrendszerek váltották fel . Az utódai ext2 van ext3 és ext4 , ahonnan nagyrészt helyébe.

A GPLv2 alatt álló Linux kernel forráskódján kívül léteznek implementációk az AmigaOS , a FreeBSD , a GNU Hurd , a Mac OS X , a MiNT , a MorphOS , a NetBSD , az OpenBSD , az OS / 2 , a RISC OS és a Windows számára különböző licencek alatt. .

leírás

Az ext2 számos tulajdonságát megosztja a hagyományos Unix fájlrendszerekkel, például a blokkok, az inódok és a könyvtárak fogalmával . Kívánt esetben kibővíthető olyan funkciókkal, mint a hozzáférés-vezérlési listák , a töredékek, a törölt adatok helyreállítása és a tömörítés . A legtöbb említett funkciók nem hajtják végre, mint normál, de csak addig létezhet, tapaszok . Van egy olyan verziómechanizmus is, amely lehetővé teszi az új függvények lefelé kompatibilis hozzáadását (ahogy az ext3 naplózási kiterjesztésnél tettük ). Minden információt egy ext2 rendszeren tárolunk „ Little Endian ” formátumban, így a fájlrendszer különböző architektúrákra illeszthető összeütközések nélkül.

blokkok

Az ext2-vel formázott partíció helye blokkokra oszlik. Ezek rögzített mérete 1 KiB, 2 KiB vagy 4 KiB, az Alpha processzorokon 8 KiB blokkméretek is lehetségesek. A blokkok méretét a fájlrendszer létrehozásakor határozzák meg. A kisebb blokkok kevesebb fájlpazarlást eredményeznek fájlonként, de több költségre van szükségük a fájlok és a teljes fájlrendszer maximális méretének kezeléséhez és közvetett korlátozásához.

Csoportok blokkolása

Annak érdekében , hogy a kezdetektől fogva a lehető legnagyobb mértékben elkerülhető legyen a töredezettség , amely lassítaná az egymás utáni blokkok nagy mennyiségéhez való hozzáférést, a blokkokat csoportosítják. Az egyes blokkcsoportokról szóló információkat egy leíró táblázatban tároljuk, amely közvetlenül a szuperblokk után található. Két blokk a blokkcsoport kezdete közelében két bittérkép számára van fenntartva, amelyek jelzik a blokk és az inode foglaltságát a csoportban. Mivel minden bittérkép csak egy blokkot foglalhat el, az egyes blokkcsoportok maximális mérete (blokkokban) a blokk méretének nyolcszorosára korlátozódik (bájtokban). A bittérképeket követő blokkok tartalmazzák a blokkcsoport inode tábláját, a többiek pedig adatblokkként használhatók.

A szuperblokk

A szuperblokk minden információt tartalmaz a fájlrendszer konfigurációjáról. Az elsődleges szuperblokk 1024 bájttal van az eszköz eleje mögött, és fontos a fájlrendszer integrálásához ( csatlakoztatásához ) . A szuperblokk információi olyan mezőket tartalmaznak, amelyek megadják például a fájlrendszerben lévő blokkok és inódok számát, hány közülük szabad, hány inode és blokk található az egyes blokkcsoportokban, amikor a fájlrendszert csatlakoztatták, és hogy a legutóbbi változtatáskor leválasztották-e helyesen, melyik verzió érhető el, és melyik operációs rendszer hozta létre. Mivel a teljes fájlrendszer használhatatlan lenne, ha a szuperblokk megsérülne, a szuperblokk több példányát több blokkcsoportban tároljuk. Ezek a szuperblokk-példányok lehetővé teszik az eredeti szuperblokk kijavítását hiba esetén.

Ha a fájlrendszer 1. vagy újabb verziójú, a szuperblokkban további mezők vannak, amelyek meghatározzák a kötet nevét, egyedi azonosító számát, az inode méretét és helyet az opcionális fájlrendszer-funkciók konfigurációs információinak.

Inodes

Az inode (index csomópont) alapvető fogalom az ext2 fájlrendszerben. A fájlrendszer minden objektumát egy inode képviseli. Az inode struktúra mutatókat (hivatkozásokat) tartalmaz azokra a blokkokra, amelyekben az objektum adatait tárolják, valamint az objektumról szóló összes metaadatot , a nevét kivéve. A metaadatok tartalmazzák a hozzáférési jogokat, a tulajdonos, a csoport, a jelzőket, a méretet, a felhasznált blokkok számát, a hozzáférés idejét, a változás idejét, a törlés idejét, a linkek számát, a töredékeket, a verziót (az NFS előírja), a kiterjesztett attribútumokat és az esetleges hozzáféréseket ellenőrzési listák .

Van néhány kihasználatlan és túlterhelt mező az inode struktúrában. Az egyik mező a címtár-hozzáférés-vezérlési listának van fenntartva, ha az inode könyvtár, alternatív megoldásként ez a mező a fájlméret felső 32 bitjét tartja, ha az inode normál fájl (ez lehetővé teszi a 2 GiB feletti fájlméreteket ). A fennmaradó mezők nagy részét a Linux és a GNU Hurd használja kibővített tulajdonos- és csoportmezőként. A GNU Hurd további mezőket ismer a kiterjesztett jogkezeléshez és a program inode-jához, amely általában ezt az inode-t értelmezi.

Az inode-ban vannak az első 12 blokkra mutató mutatók , amelyek a fájl adatait tartalmazzák. Van még egy mutató egy közvetett blokkra (amely viszont tartalmaz egy mutatót a fájl következő blokkkészletére), egy mutató egy kettős közvetett blokkra (amely további közvetett blokkokra mutatókat tartalmaz), és egy mutató egy hármasra közvetett blokk (a kettős közvetett blokk mutatója tartalmazza).

További attribútumok

A Zászlók mező tartalmaz néhány ext2-specifikus zászlót, amelyeket például nem lehet chmodbefolyásolni. Ezek a zászlók felsorolhatók a programmal lsattrés chattrmegváltoztathatók. Ezek a zászlók lehetővé teszik a fájlok olyan különleges viselkedését, amelyeket a POSIX fájl zászlók nem képviselhetnek: Biztonsági törlés, visszavonhatatlanság, tömörítés, szinkron frissítések, írásvédelem, indexelt könyvtárak, naplók és még sok minden más létezik. A könyvtár attribútumait az újonnan létrehozott mögöttes fájlok öröklik. Az ext2 meghajtó azonban nem minden zászlót hajt végre a kernelben: például a „c” (tömörítés) attribútumot nem támogatja a Linux kern ext2 megvalósítása. Ehhez használták az azóta megszűnt extz projektet (= ext3 + tömörítés + titkosítás).

Könyvtárak és (kemény) linkek

A könyvtár egy fájlrendszer-objektum, és egy normál fájlhoz hasonlóan rendelkezik inóddal. Elvileg egy speciális fájlról van szó, amely a könyvtár minden fájlnevét egy inode számmal kapcsolja össze. A fájlrendszer újabb verziói tárolják az objektum típusát is (fájl, könyvtár, szimbolikus link , eszköz, FIFO , socket ) annak elkerülése érdekében, hogy magát az inode-ot ne kelljen ellenőrizni ezen információk után (annak érdekében, hogy ezt használni lehessen, a glibc újabb verziója szükséges).

A könyvtárba beírt fájlnévre hivatkozásként vagy hard linkként hivatkozunk, ha a szimbolikus linktől való megkülönböztetést hangsúlyozni kell. E mögött a linkek és a fájlok közötti "N-től 1-ig" kapcsolat áll. A felhasználói adatokból és az inode-ból álló fájl csak fájl elérési útján, azaz könyvtár bejegyzésen keresztül használható. Mivel egy fájlhoz tetszőleges számú könyvtár bejegyzés hozható létre, akkor ésszerű nem azonosítani őket a fájllal, hanem megérteni őket a fájlra való "hivatkozásként". Több fájlra mutató link ugyanabban a könyvtárban lehet. A linkek számát a fájl inode tárolja. A fájl utolsó hivatkozásának törlése után maga a fájl, azaz az inode és a felhasználói adatblokkok felszabadulnak.

Új könyvtárfájl létrehozásakor két linket állítanak fel: egyet a magasabb szintű könyvtárban a kiválasztott könyvtárnévvel, egyet pedig a "" névvel. "Magában az új könyvtárban. Az alkönyvtárak mindegyikének tartalmaz egy" .. "nevű hivatkozást a a magasabb szintű könyvtárfájl. A két "." És ".." link megegyezik a fájlrendszer gyökérkönyvtárával.

Speciális fájlok

Szimbolikus linkek

A szimbolikus linkek inode-okat tartalmazó fájlrendszer-objektumok is. Ha azonban a link 60 bájtnál rövidebb, akkor az adatait közvetlenül az inode tárolja. Ez olyan mezőket használ, amelyek normál esetben az adatblokkok mutatóit tartanák. Mivel a legtöbb link kevesebb, mint 60 karakter hosszú, ez megmenti a blokk használatát a szimbolikus hivatkozáshoz. A szimbolikus hivatkozások a fájlrendszer határain túl is használhatók (több merevlemezen vagy partíción is). Előfordulhat, hogy a fájl, amelyre a szimbolikus hivatkozás utal, törlődik, de a hivatkozás megmarad. A link tehát egy olyan fájlra mutat, amely már nem létezik, és így használhatatlanná vált.

Eszközfájlok

A karakter- és blokkorientált eszközökhöz soha nem rendelünk adatblokkokat. Ehelyett a kernel által kiosztott eszközszámot az inode tárolja, ismét felhasználva a mutató mezőket az adatblokkokhoz.

Foglalt hely

A fájlrendszeren belül bizonyos számú blokkot lehet lefoglalni egy bizonyos felhasználó számára, általában a rendszergazda gyökér számára . Ez lehetővé teszi a rendszer működését akkor is, ha a kiváltságtalan felhasználók kitöltik a rendelkezésükre álló teljes területet. A mechanizmus a lemezkvótáktól függetlenül működik . Segít megakadályozni a fájlrendszer teljes feltöltését és ezáltal a széttöredezettség elleni küzdelmet is.

A fájlrendszer ellenőrzése

Az indítási szakaszban a legtöbb rendszer konzisztencia- ellenőrzést ( e2fsck ) hajt végre a fájlrendszerein. Az ext2 rendszer szuperblokkja több mezőt tartalmaz, amelyek jelzik, hogy fsckfutnia kell-e (mivel a fájlrendszer ellenőrzése sokáig tarthat, ha nagyon nagy). fsckáltalában akkor fut, ha a fájlrendszert nem szerelték le megfelelően, vagy túllépték a két rutinellenőrzés közötti konfigurálható maximális időt.

kompatibilitás

Az ext2 egy kifinomult kompatibilitási mechanizmussal rendelkezik, amely lehetővé teszi a fájlrendszerek használatát olyan kernek alatt , amelyek ext2fs illesztőprogramja nem tud semmit a használt funkciókról. A kompatibilitási mechanizmus az ext2fs 1. verziója óta elérhető. Három 32 bites mező található, az egyik a kompatibilis tulajdonságokhoz (COMPAT), egy a csak olvasható szolgáltatásokhoz (RO_COMPAT) és egy az inkompatibilis tulajdonságokhoz (INCOMPAT).

A COMPAT jelző azt jelenti, hogy a fájlrendszer tartalmaz egy tulajdonságot, de a lemezen lévő adatformátum 100% -ban kompatibilis a régebbi formátumokkal, így egy kern, amely nem ismeri ezt a funkciót, olvashat és írhat a fájlrendszerben anélkül, hogy következetlenné tenné azt. A COMPAT zászló legjobb példája az ext3 fájlrendszer HAS_JOURNAL függvénye. Az ext3 támogatás nélküli rendszermag könnyen csatlakoztathat egy ilyen fájlrendszert, mint ext2fs, majd a napló használata nélkül, bármi károsítása nélkül írhat rá.

A RO_COMPAT jelző azt jelzi, hogy a fájlrendszer adatformátuma 100% -ban kompatibilis a régebbi formátumokkal olvasás közben. Azonban egy kernel, amely nem ismeri a kérdéses funkciót, megrongálhatja a fájlrendszert, amikor arra ír, ezért ezt megakadályozzuk. Az olvasással kompatibilis tulajdonságokra példa a SPARSE_SUPER, egy fájlrendszer-elrendezés, amelyben a normálnál kevesebb szuperblokk-mentést tárolnak a lemezen. Egy régi kernel gond nélkül képes olvasni egy ilyen merevlemezről, de ha megpróbálna írni, akkor az írási rutinja félrevezető hibaüzeneteket eredményezne, és a bittérképek következetlenné válhatnak.

Az INCOMPAT zászló azt jelzi, hogy az adatformátum oly módon változott, hogy a tulajdonság nélküli kernelek sem írni, sem olvasni, sem csatlakoztatni nem tudtak. Az opcionális tömörítés egy nem kompatibilis kiegészítő funkció példaként szolgálhat; egy kernel, amely nem tudja kibontani az adatokat, csak a szemetet olvassa a lemezről. Még egy inkonzisztens ext3 fájlrendszer sem kompatibilis mindaddig, amíg egy ext3-képes kernel elolvasta a naplót és megszüntette az ellentmondásokat. Ezután az ext3 rendszert újra csatlakoztathatjuk ext2 néven.

Új tulajdonságok hozzáadása az ext2 / 3 fájlrendszerhez mindig megköveteli a társított e2fsprogs eszközkészlet frissítését , mivel az abban található ellenőrző eszközöknek ismerniük kell az összes fájlrendszer tulajdonságát annak érdekében, hogy az inkonzisztenciákat megbízhatóan lehessen azonosítani és kijavítani.

A fájlrendszer korlátai

Az ext2 fájlrendszer határadatai Linuxon
Blokk mérete: 1 KiB 2 KiB 4 KiB 8 KiB
max. fájlméret: 16 GiB 256 GiB 1 TiB 2 TiB
max. fájlrendszer-méret: 4 TiB 8 TiB 16 TiB 32 TiB

Az ext2 fájlrendszer bizonyos korlátozásainak okai egyrészt az adathordozón lévő adatformátumon, másrészt az alapul szolgáló operációs rendszer kerneljén alapulhatnak. Legtöbbjüket egyszer állítják be a fájlrendszer létrehozásakor, és a kiválasztott blokkmérettől, valamint a blokkok és az inódok kiválasztott arányától függenek. Alapértelmezés szerint a 8 KiB blokkméretek csak Alpha architektúrákon, valamint speciálisan konfigurált és javított más architektúrákon lehetségesek. A kernel képességeitől függetlenül, néhány olyan nagy felhasználói fájlokat támogató felhasználói térprogram, amely nem támogatja a nagy fájlokat, nem képes megfelelően kezelni a 2 GiB-nél nagyobb fájlokat.

A fájlrendszer 32 000-re korlátozza az alkönyvtárak számát egy adott könyvtárban. Figyelmeztetést adnak ki akkor is, ha egy könyvtárban több mint 10 000 - 15 000 fájl található, amelyek ilyen nagy könyvtárakban a fájlműveletek hosszú ideig tarthatnak. A fájlok maximális száma akadémiai jellegű, mivel már elég nehéz lesz fájlneveket létrehozni a könyvtárankénti 130 kvintmilliárd (10 18 elérés) fájlkorlát előtt .

Lásd még

Egyéni bizonyíték

  1. Ext2 fájlrendszer-illesztőprogram (Ext2fsd) - natív hozzáférést biztosít az ext2-hez Windows alatt
  2. Ext2 Installable File System for Windows - lehetővé teszi natív hozzáférést az ext2-hez Windows alatt
  3. ahol 1 KiB = 1024 bájt, 1 MiB = 1024 KiB, 1 GiB = 1024 MiB, 1 TiB = 1024 GiB

web Linkek