tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

A Linux fájlrendszerek típusai és jellemzőik. Fájlrendszerek ext2, ext3, XFS, ReiserFS, NTFS Munka az ext2 fájlrendszerrel

Nézzük meg az ext2fs fájlrendszer logikai felépítését. Fizikailag merevlemez 512 bájtos szektorokra osztva. Bármely fájlrendszerben a lemezpartíció első szektora tekinthető rendszerindítási területnek. Az elsődleges partícióban ez a terület tartalmazza a rendszerindítási bejegyzést – egy kódrészletet, amely elindítja a rendszerindítási folyamatot operációs rendszer indításkor. Ezt a területet más partíciókon nem használják. A fennmaradó szektorokat 1, 2 vagy 4 kilobájt méretű logikai blokkokba egyesítik. A logikai blokk a legkisebb címezhető adat: minden fájl adata egész számú blokkot foglal el. A blokkokat pedig blokkcsoportokká egyesítik. A blokkcsoportok és a csoporton belüli blokkok sorszámozása 1-től kezdődően történik.

Az ext2fs fájlrendszerrel végzett munka során használt adatstruktúrákat az /usr/include/linux/ext2fs .h fejlécfájl írja le.

A szuperblokk a fájlrendszer kiindulópontjaként szolgál, és mindent tárol

információkat róla. 1024 bájt méretű, és a fájlrendszer kezdetétől 1024 bájtnyi eltolásban található. Minden blokkcsoportban megduplázódik, ami lehetővé teszi, hogy gyorsan visszaállítsa a hibák után. A szuperblokk meghatározza a fájlrendszer méretét, a fájlok maximális számát a partícióban, a szabad terület mennyiségét, és információkat tartalmaz arról, hogy hol kell keresni a fel nem osztott területeket. Amikor az operációs rendszer elindul, a szuperblokk beolvassa a memóriába, és a fájlrendszer minden változása először az operációs rendszerben található szuperblokk másolatában jelenik meg, és csak időszakonként íródik a lemezre. Ez javítja a rendszer teljesítményét, mivel sok felhasználó és folyamat folyamatosan frissíti a fájlokat. Másrészt, amikor a rendszer leáll, a szuperblokkot lemezre kell írni, ami nem teszi lehetővé a számítógép kikapcsolását egyszerűen az áramellátás kikapcsolásával. Ellenkező esetben a következő rendszerindításkor a fényvédőben rögzített információk nem lesznek meg

megfelel a fájlrendszer valós állapotának.

A szuperblokk után a blokkcsoport leírása (leírója) következik. A benne tárolt információk lehetővé teszik a blokk és inode bitképek, valamint az inode tábla megtalálását.

A blokk bittérkép egy olyan struktúra, amelyben minden bit jelzi, hogy ugyanaz a blokk van-e lefoglalva egy fájlhoz. Az 1-es érték azt jelzi, hogy a blokk foglalt. Ez a térkép szabad blokkok keresésére szolgál olyan esetekben, amikor szükséges helyet foglalni egy fájl számára.

Az inode bitmap hasonló funkciót lát el, mint az inode táblázat: megmutatja, hogy mely inode-ok vannak használatban.

Minden fájlnak egy és csak egy inode van (inode, i-node, információs csomópont), amelyet a sorozatszáma - a fájl indexe - azonosít. Az inode tárolja a fájl metaadatait. Ezek között megtalálható a fájl összes attribútuma, kivéve a nevét, és a fájladatokra mutató mutatót.

Normál fájl vagy könyvtár esetén ez a mutató egy 15 blokkcímből álló tömb. Ebben a tömbben az első 12 cím közvetlen hivatkozás a blokkszámokhoz, amelyekben a fájladatokat tárolják. Ha az adatok nem férnek el 12 blokkba, akkor az indirekt címzési mechanizmus aktiválódik. A következő cím ebben a tömbben egy közvetett hivatkozás, vagyis egy blokk címe, amely a következő blokkok címlistáját tárolja az ebből a fájlból származó adatokkal.

Hány adatblokkot lehet így megcímezni? A blokkcím 4 bájt, a blokk, mint már említettük, 1, 2 vagy 4 kilobájt. Ez azt jelenti, hogy indirekt címzéssel 256 - 1024 blokk helyezhető el.

Mi van, ha a fájl még hosszabb? A mutatótömb következő címe a kettős indirekt címzési blokkra mutat (kettős indirekt blokk). Ez a blokk a blokkcímek listáját tartalmazza, amely viszont a következő adatblokkok címlistáit tartalmazza.

És végül, a mutatótömb utolsó címe a hármas indirekt blokk címét adja meg, vagyis egy blokk címét olyan blokkcímekkel, amelyek kettős közvetett blokkok.

Továbbra sem világos, hogy hol található a fájlnév, ha nem szerepel a fájladatok vagy a metaadatai között. UNIX-szerű rendszerekben a fájlnév nem magának a fájlnak, hanem a fájlrendszernek az attribútuma, ami logikai könyvtárszerkezetként értendő. A fájlnév csak abban a könyvtárban tárolódik, amelyhez a fájl hozzá van rendelve, és sehol máshol. Érdekes következmények következnek ebből.

Először is, egyetlen inode tetszőleges számú, különböző könyvtárakhoz rendelt névnek felelhet meg, amelyek mindegyike valódi. A nevek (kemény hivatkozások) számát az inode számolja. Ez az a szám, amelyet az Is -1 paranccsal láthat.

Másodszor, egy fájl törlése egyszerűen azt jelenti, hogy eltávolítjuk a bejegyzést a könyvtáradatokból, és 1-gyel csökkentjük a hivatkozások számát.

Harmadszor, ugyanazon a fájlrendszeren belül csak egy inode számhoz lehet nevet párosítani, ezért nem hozható létre kemény hivatkozás egy másik fájlrendszerre (lehet szimbolikus, annak más a tárolási mechanizmusa).

Maga a könyvtár ugyanígy van hozzárendelve a szülőkönyvtárához. A gyökérkönyvtár mindig a 2-es számú inode-ba íródik (az 1-es szám a hibás blokkok címlistájának van fenntartva). Minden könyvtár tartalmaz egy hivatkozást önmagára és a szülőkönyvtárára – ezek a „pszeudo-alkönyvtárak”. És "...".

Így egy könyvtárra mutató hivatkozások száma megegyezik az alkönyvtárak számával plusz kettővel.

A címtáradatok egy csatolt lista változó hosszúságú bejegyzésekkel, és így néz ki:

Az ext2fs könyvtárszerkezete

Mi a helyzet a fizikai eszköz fájljaival? Lehetnek ugyanabban a könyvtárban, mint normál fájlok: A könyvtárban nincs olyan adat, amely arra utalna, hogy a név a lemezen vagy az eszközön lévő fájlhoz tartozik. A különbség az inode szinten van. Ha egy normál fájl i-csomópontja azokra a lemezblokkokra mutat, ahol az adatait tárolják, akkor az eszközfájl i-csomópontja tartalmaz egy mutatót a kernelben lévő eszközillesztő-listára - a lista azon elemére, amelyik megfelel fő eszközszám:

Különbség a normál fájl és az eszközfájl között

ext2fs fájlrendszer tulajdonságai:

A fájlrendszer maximális mérete 4 TB.

A maximális fájlméret 2 GB.

A fájlnév maximális hossza 255 karakter.

A minimális blokkméret 1024 bájt.

A lefoglalt inódok száma a partíció 4096 bájtjaként 1.

(Második kiterjesztett fájlrendszer).

· A Linux fájlrendszerek fejlődésének története

· Lemezpartíció szerkezete az ext2fs-ben

·

· Katalógusok

· Eszközfájlok

·

·

· EXT2fs könyvtár

· EXT2fs rendszereszközök

· Teljesítményszámítás

Matek fakultás

Szoftver program

2. évfolyam 5. gr.

Andrej Chichirov

Hamis rendszer EXT2fs (második kiterjesztett fájlrendszer).

A Linux fájlrendszerek fejlődésének története

A Linux első verzióit a Minix operációs rendszer alapján fejlesztették ki. Könnyebb lenne megosztani a lemezeket két rendszer között, mint egy új fájlrendszert kifejleszteni, ezért Linus Torvalds úgy döntött, hogy támogatja a Minix fájlrendszert Linuxon. Akkoriban ez a fájlrendszer meglehetősen hatékony szoftvertermék volt, viszonylag kevés hibával.

A Minix fájlrendszer felépítésével kapcsolatos korlátok azonban meglehetősen magasak voltak, ezért elkezdtek gondolkodni egy új fájlrendszer fejlesztésén Linuxra.

Az új fájlrendszer Linux kernelbe való bevezetésének egyszerűsítésére egy virtuális fájlrendszert (VFS) fejlesztettek ki. A VFS-t eredetileg Chris Provenzano írta, majd Linus Torvalds írta újra, mielőtt integrálták volna a kernelbe.

A VFS kernelbe történő telepítése után 1992 áprilisában egy új fájlrendszert fejlesztettek ki, az EXTfs-t (Extended File System), amelyet hozzáadtak a Linux 0.96c verziójához. Az új fájlrendszerben a Minix rendszer két jelentős korlátja megszűnt: maximális mérete elérheti a 2 gigabájtot, a fájlnév maximális hossza pedig 255 karakter lehet. Ez előrelépés volt a Minix fájlrendszerhez képest, bár néhány probléma továbbra is fennállt. Nem támogatott a megosztott hozzáférés, az indexleíró módosítása és a fájlváltási idő celláinak módosítása. Ez a fájlrendszer linkelt listákat használt a szabad blokkok és inode-ok kezelésére, ami nagymértékben befolyásolta a rendszer teljesítményét: idővel a listák rendezetlenek és rendezetlenek lettek, ami a fájlrendszer töredezettségéhez vezetett.

A megoldás ezekre a problémákra az volt, hogy 1993 januárjában kiadták két új alfa verzióját fájlrendszerek: Xia és EXT2fs (második kiterjesztett fájlrendszer). A Xia fájlrendszer nagyrészt Minixen alapult, néhány új funkcióval. Ez elsősorban a hosszú fájlnevekkel való munkavégzés, a nagyobb lemezpartíciók támogatása és a három fájlváltási időcella támogatása volt. Másrészt az EXT2fs az EXTf-eken alapult, számos fejlesztéssel és kiegészítéssel. A jövőbeni fejlődésre is volt lehetőség.

Amikor ez a két fájlrendszer megjelent, funkcionálisan megközelítőleg egyenrangúak voltak. A Xia rendszer megbízhatóbb volt, mint az EXT2fs, mivel minimálisra csökkentette azt. Ahogy egyre szélesebb körben elterjedtek, az EXT2fs rendszer hibáit fedezték fel, és számos új funkcióval és fejlesztéssel egészültek ki. Az EXT2fs fájlrendszer mára nagyon megbízható, és de facto szabványos Linux fájlrendszerré vált.

Az alábbi táblázat általános információkat tartalmaz a különböző fájlrendszerek által biztosított funkciókról.

Minix FS

Ext FS

Ext2FS

Xia FS

Maximális fájlrendszerméret

Maximális fájlhossz

A fájlnév maximális hossza

Három fájlváltási időcella támogatása

Bővíthetőség

Átméretezhető blokkméret

Információvédelem

Ha szükséges, adja meg a fájlnév hosszát Ext 2 1012-re növelhető.

Az EXT2fs bizonyos számú blokkot tart fenn a root felhasználó számára. Ez általában a teljes összeg 5%-a, ami lehetővé teszi a rendszergazdának, hogy elkerülje, hogy kifogyjon a hely merevlemez amikor megtelik más felhasználók folyamatainak munkájával.

Lemezpartíció szerkezete az ext2fs-ben

Gyártók merevlemezekáltalában alacsony szinten formázva szállítják termékeiket. Amennyire én tudom, ez azt jelenti, hogy a teljes lemezterület 512 bájt méretű „szektorokra” van felosztva speciális címkék segítségével. Az ilyen lemezt (vagy lemezpartíciót) fel kell készíteni egy adott operációs rendszeren való használatra. MS-DOS vagy Windows esetén az előkészítési eljárást formázásnak, Linuxban pedig fájlrendszer létrehozásának nevezik. Fájlrendszer létrehozása ext2fs konkrét létrehozásából áll logikai szerkezet. Ez a szerkezet a következőképpen épül fel. Először egy rendszerindítási terület van lefoglalva a lemezen. A rendszerindítási terület bármely fájlrendszeren létrejön. Az elsődleges partíción tartalmaz egy rendszerindító rekordot – egy kódrészletet, amely elindítja az operációs rendszer betöltésének folyamatát az indításkor. Ezt a területet más partíciókon nem használják. A lemezterület többi része blokkra van osztva. Egy blokk 1, 2 vagy 4 kilobájt méretű lehet. A blokk címezhető egység lemezterület. A fájlok blokkokban vannak kiosztva, így a blokkméret kiválasztásakor kompromisszumok vannak. Nagy méret blokk általában csökkenti a lemezelérések számát egy fájl olvasása vagy írása során, de növeli az elpazarolt terület arányát, különösen, ha sok kis fájl van.

A területükön lévő blokkok blokkcsoportokba vannak kombinálva. A fájlrendszer blokkcsoportjai és a csoporton belüli blokkok sorszámozása 1-gyel kezdődik. A lemezen lévő első blokk 1-gyel van számozva, és az 1-es számú csoportba tartozik. Egy lemezen (egy lemezpartíción) lévő blokkok teljes száma a lemez kapacitásának osztója, szektorokban kifejezve. És a blokkcsoportok számának nem kell osztania a blokkok számát, mert előfordulhat, hogy az utolsó blokkcsoport nem teljes. Minden blokkcsoport elejéhez tartozik egy cím, amelyet a következőképpen kaphatunk: ((csoportszám - 1)* (blokkok száma a csoportban)).

Minden blokkcsoportnak azonos a felépítése. Felépítését a következő táblázat mutatja be.

Egy lemezpartíció blokkcsoportjának szerkezete ext2fs

Ennek a struktúrának az első eleme (szuperblokk) minden csoportnál azonos, a többi csoportonként egyéni. A szuperblokk minden blokkcsoport első blokkjában tárolódik (kivéve az 1. csoportot, amelynek az első blokkban van egy rendszerindító rekordja). Superblock a fájlrendszer kiindulópontja. 1024 bájt méretű és Mindig a fájlrendszer elejétől 1024 bájtnyi eltolásnál található. A szuperblokk több példányának jelenlétét a fájlrendszer ezen elemének rendkívüli fontossága magyarázza. A Superblock duplikátumokat a fájlrendszer hibák utáni helyreállításakor használják.

A szuperblokkban tárolt információk a lemezen lévő többi adathoz való hozzáférés megszervezésére szolgálnak. A szuperblokk meghatározza a fájlrendszer méretét, a fájlok maximális számát a partícióban, a szabad terület mennyiségét, és információkat tartalmaz arról, hogy hol kell keresni a fel nem osztott területeket. Amikor az operációs rendszer elindul, a szuperblokk beolvassa a memóriába, és a fájlrendszer minden változása először az operációs rendszerben található szuperblokk másolatában jelenik meg, és csak időszakonként íródik a lemezre. Ez javítja a rendszer teljesítményét, mivel sok felhasználó és folyamat folyamatosan frissíti a fájlokat. Másrészt, amikor a rendszer ki van kapcsolva, a szuperblokkot lemezre kell írni, ami nem teszi lehetővé a számítógép kikapcsolását egyszerűen az áramellátás kikapcsolásával. Ellenkező esetben a következő rendszerindításkor a szuperblokkban rögzített információk nem felelnek meg a fájlrendszer valós állapotának.

A Superblock rendelkezik következő szerkezetet

Mezőnév

Írja be

Megjegyzés

s_inodes_count

ULONG

Az inódák száma a fájlrendszerben

s_blocks_count

ULONG

Blokkok száma a fájlrendszerben

s_r_blocks_count

ULONG

Superuser számára fenntartott blokkok száma

s_free_blocks_count

ULONG

Ingyenes blokkszámláló

s_free_inodes_count

ULONG

Ingyenes inode számláló

s_first_data_block

ULONG

Az első adatot tartalmazó blokk. A blokk méretétől függően ez a mező 0 vagy 1 lehet.

s_log_block_size

ULONG

Logikai blokkméret-jelző: 0 = 1 KB; 1 = 2 KB; 2 = 4 KB.

s_log_frag_size

HOSSZÚ

Töredékméret-jelző (úgy tűnik, a töredék fogalmát jelenleg nem használják)

s_blokkok_csoportonként

ULONG

Blokkok száma az egyes blokkcsoportokban

s_frags_per_group

ULONG

A töredékek száma az egyes blokkcsoportokban

s_inodes_per_group

ULONG

Az inódok száma az egyes blokkcsoportokban

s_mtime

ULONG

A fájlrendszer utolsó csatlakoztatásának ideje.

s_wtime

ULONG

A fájlrendszer utolsó írásának ideje

s_mnt_count

USHORT

A fájlrendszer-csatlakozások számának számlálója. Ha ez a számláló eléri a következő mezőben megadott értéket (s_max_mnt_count), akkor ellenőrizni kell a fájlrendszert (ez megtörténik újraindításkor), és a számláló nullázódik.

s_max_mnt_count

RÖVID

Egy szám, amely meghatározza, hogy a fájlrendszer hányszor csatlakoztatható

s_magic

USHORT

"Mágikus szám" (0xEF53), amely azt jelzi, hogy a fájlrendszer ex2fs típusú

s_state

USHORT

A fájlrendszer aktuális állapotát jelző jelzők (tiszta-e stb.)

s_errors

USHORT

Jelzők, amelyek meghatározzák a hibaüzenetek feldolgozásának eljárásait (mi a teendő, ha hibát talál).

s_pad

USHORT

Töltő

s_lastcheck

ULONG

Az utolsó fájlrendszer-ellenőrzés ideje

s_checkinterval

ULONG

A fájlrendszer-ellenőrzések közötti maximális időtartam

s_creator_os

ULONG

Annak az operációs rendszernek a típusa, amelyben a fájlrendszert létrehozták

s_rev_level

ULONG

A fájlrendszer verziója (verziós szintje).

s_reserved

ULONG

Kitöltés akár 1024 bájtig

A szuperblokk után a blokkok csoportjának leírása (Csoportleírók) található. Ez a leírás egy tömb a következő szerkezettel.

Mezőnév

Írja be

Cél

bg_block_bitmap

ULONG

A csoport blokk-bitképét tartalmazó blokk címe

bg_inode_bitmap

ULONG

A csoport inode bittérképét tartalmazó blokk címe

bg_inode_table

ULONG

A csoport inode tábláját tartalmazó blokk címe

bg_free_blocks_count

USHORT

A csoport szabad blokkjainak számlálója

bg_free_inodes_count

USHORT

Ingyenes inódok száma ebben a csoportban

bg_used_dirs_count

USHORT

Az adott csoportban lévő könyvtárak száma

bg_pad

USHORT

Töltő

bg_reserved

ULONG

Töltő

A blokkcsoport leírásának mérete a következőképpen számítható ki (block_group_size_in_ext2 * number_of_groups) / block_size(szükség esetén körbe).

A csoportleírásban tárolt információk a blokk- és inode-bitképek, valamint az inode tábla megkeresésére szolgálnak. Ne felejtse el, hogy a blokkok és blokkcsoportok számozása 1-től kezdődik.

A blokk bittérkép egy olyan struktúra, amelyben minden bit jelzi, hogy a megfelelő blokk hozzá van-e rendelve egy fájlhoz. Ha a bit 1, akkor a blokk foglalt. Ez a térkép szabad blokkok keresésére szolgál olyan esetekben, amikor egy fájl számára helyet kell lefoglalni (blokkok_száma a csoportban / 8) / blokkméret(szükség esetén körbe).

Az inode bitmap hasonló funkciót lát el, mint az inode táblázat: megmutatja, hogy mely inode-ok vannak használatban.

A blokkcsoport-struktúra következő területe a fájl inode tábla tárolására szolgál. Magának az inode felépítéséről a következő alfejezetben lesz bővebben szó.

Nos, és végül a blokkok csoportjában az összes fennmaradó hely a tényleges fájlok tárolására van lefoglalva.

Fájlrendszer Ext 2 jellemzője:

  • hierarchikus struktúra,
  • az adatsorok összehangolt feldolgozása,
  • dinamikus fájlkiterjesztés,
  • a fájlokban lévő információk védelme,
  • perifériás eszközök (például terminálok és szalagos eszközök) fájlként kezelése.

Belső fájlábrázolás

Az Ext 2 rendszerben minden fájl egyedi indexszel rendelkezik. Az index tartalmazza a fájl eléréséhez szükséges bármely folyamathoz szükséges információkat. Feldolgozza a hozzáférést a fájlokhoz jól meghatározott rendszerhívások segítségével, és a fájlt egy karaktersorozattal azonosítja, amely minősített fájlnévként működik. Minden összetett név egyedileg azonosít egy fájlt, így a rendszermag ezt a nevet fájlindexmé alakítja. Mivel a lemezen minden blokk a saját számmal van megcímezve, ez a táblázat lemezblokkszámok gyűjteményét tárolja. A rugalmasság növelése érdekében a kernel blokkonként hozzáfűz egy fájlt, lehetővé téve a fájl információinak szétszórását a fájlrendszerben. Ez az elrendezés azonban megnehezíti az adatkeresés feladatát. A címtábla tartalmazza a fájlhoz tartozó információkat tartalmazó blokkszámok listáját, de egyszerű számítások azt mutatják, hogy egy indexben lévő fájlblokkok lineáris listáját nehéz kezelni. Annak érdekében, hogy egy kis indexstruktúra lehetővé tegye a nagy fájlokkal való munkát, a lemezblokk-címek táblázatát összhangba hozzuk az 1. ábrán látható szerkezettel.

Az Ext 2 rendszerben a legtöbb fájl nem nagyobb 10 KB-nál vagy akár 1 KB-nál Mivel egy 10 KB-os fájl közvetlen címzési blokkokban található, a fájlokban tárolt adatok nagy része egyetlen lemezelérésben elérhető. Ezért a nagy fájlok elérésével ellentétben a szabványos méretű fájlokkal való munkavégzés gyors.

Inodes fájl

Minden lemezen lévő fájl egy és csak egy fájl inode-hoz van társítva, amelyet a sorszáma – a fájlindex – azonosít. Ez azt jelenti, hogy a fájlrendszerben létrehozható fájlok számát korlátozza az inode-ok száma, amelyet vagy kifejezetten megadnak a fájlrendszer létrehozásakor, vagy a lemezpartíció fizikai mérete alapján számítják ki. Az inódák statikus formában léteznek a lemezen, és a kernel beolvassa őket a memóriába, mielőtt dolgozna velük.

Az inode fájl szerkezete a következő:

Mezőnév

Írja be

Leírás

I_mode

USHORT

A fájl típusa és hozzáférési jogai.

I_uid

USHORT

A fájl tulajdonosának azonosítója (Owner Uid).

I_size

ULONG

A fájl mérete bájtban.

I_atime

ULONG

A fájlhoz való utolsó hozzáférés időpontja (Hozzáférés ideje).

I_ctime

ULONG

A fájl létrehozásának ideje.

I_mtime

ULONG

A fájl utolsó módosításának ideje.

I_dtime

ULONG

A fájl törlésének ideje.

I_gid

USHORT

Csoportazonosító (GID).

I_links_count

USHORT

A linkek számítanak.

I_blocks

ULONG

A fájl által elfoglalt blokkok száma.

I_zászlók

ULONG

Fájljelzők (Fájljelzők)

I_reserved1

ULONG

OS számára fenntartva

I_block

ULONG

Mutatók azokra a blokkokra, amelyekbe fájladatokat írnak (példa közvetlen és közvetett címzésre az 1. ábrán)

I_verzió

ULONG

Fájlverzió (NFS-hez)

I_file_acl

ULONG

ACL fájl

I_dir_acl

ULONG

Címtár ACL

I_faddr

ULONG

Töredék cím

I_frag

UCHAR

Töredékszám

I_fsize

UCHAR

Töredék mérete

I_pad1

USHORT

Töltő

I_reserved2

ULONG

Fenntartott

A fájltípus és a hozzáférési jogok mező egy kétbájtos szó, amelynek minden bitje jelzőként szolgál, amely jelzi a fájl kapcsolatát egy adott típussal vagy egy adott fájljog beállítását.

Azonosító

Jelentése

A zászló célja (mező)

S_IFMT

F000

Fájltípus maszk

S_IFSOCK

A000

Domain socket

S_IFLNK

C000

S_IFREG

8000

Normál fájl

S_IFBLK

6000

Blokk-orientált eszköz

S_IFDIR

4000

Katalógus

S_IFCHR

2000

Bájtorientált (karakteres) eszköz

S_IFIFO

1000

Név cső (fifo)

S_ISUID

0800

SUID - tulajdonosváltás bit

S_ISGID

0400

SGID - csoportváltó bit

S_ISVTX

0200

Feladat mentési bit (ragadó bit)

S_IRWXU

01C0

Fájltulajdonosi jogok maszkja

S_IRUSR

0100

Olvasási jog

S_IWUSR

0080

Írj helyesen

S_IXUSR

0040

Végrehajtási jog

S_IRWXG

0038

Csoportjog-maszk

S_IRGRP

0020

Olvasási jog

S_IWGRP

0010

Írj helyesen

S_IXGRP

0008

Végrehajtási jog

S_IRWXO

0007

Más felhasználók jogainak maszkja

S_IROTH

0004

Olvasási jog

S_IWOTH

0002

Írj helyesen

S_IXOTH

0001

Végrehajtási jog

Az inode-ok között több olyan inode található, amelyek speciális célokra vannak fenntartva, és különleges szerepet töltenek be a fájlrendszerben. Ezek a következő leírók

Azonosító

Jelentése

Leírás

EXT2_BAD_INO

Egy inode, amely felsorolja a lemezen lévő hibás blokkok címeit (Bad blocks inode)

EXT2_ROOT_INO

A fájlrendszer gyökérkönyvtárának inode (Root inode)

EXT2_ACL_IDX_INO

ACL inode

EXT2_ACL_DATA_INO

ACL inode

EXT2_BOOT_LOADER_INO

Boot loader inode

EXT2_UNDEL_DIR_INO

Inode könyvtár törlésének visszavonása

EXT2_FIRST_INO

Első fenntartás nélküli inode

A lista legfontosabb fogója a gyökérkönyvtár fogantyúja. Ez a fogantyú a gyökérkönyvtárra mutat, amely, mint minden könyvtár, a következő struktúrájú bejegyzésekből áll:

Mezőnév

Írja be

Leírás

Inode

ULONG

fájl inode száma

rec_len

USHORT

Ennek a bejegyzésnek a hossza

name_len

USHORT

Fájlnév hossza

Név

CHAR

Fájlnév

Egy egyedi címtárbejegyzés nem léphet át egy blokkhatárt (azaz teljes egészében egyetlen blokkon belül kell lennie). Ezért, ha a következő rekord nem fér el teljesen egy adott blokkba, akkor átkerül a következő blokkra, és az előző rekord úgy folytatódik, hogy a blokkot a végéig kitölti.

1. ábra Közvetlen és közvetett címzési blokkok az indexben

2. ábra A fájl mérete bájtban 1 KB-os blokkmérettel

3. ábra Példa lemezindexre

A 3. ábra egy bizonyos fájl lemezindexét mutatja. Ez az index egy normál fájlhoz tartozik, amelynek tulajdonosa "mjb", mérete pedig 6030 bájt. A rendszer lehetővé teszi az "mjb" felhasználó számára a fájl olvasását, írását és végrehajtását; az "os" csoport tagjai és az összes többi felhasználó csak olvasni vagy végrehajtani tudja a fájlt, de adatokat nem írhat bele. Az aktát utoljára 1984. október 23-án, 13 óra 45 perckor olvasták, utoljára 1984. október 22-én 10:30-kor írták rá. Az index utoljára 1984. október 23-án 13 óra 30 perckor módosult, bár akkor semmilyen információt nem írtak az aktába. A kernel az összes fenti adatot egy indexbe kódolja. Jegyezze meg a különbséget az index és a fájl tartalmának lemezre írásakor. A fájl tartalma csak akkor változik meg, ha írás történik a fájlba. Az index tartalma megváltozik akkor is, ha a fájl tartalma megváltozik, és amikor a fájl tulajdonosa, hozzáférési jogosultságai és mutatókészlete megváltozik. A fájl tartalmának megváltoztatása automatikusan az index módosítását eredményezi, de az index módosítása nem jelenti a fájl tartalmának megváltoztatását.

Katalógusok

A könyvtárak azok a fájlok, amelyekből a fájlrendszer hierarchikus szerkezete felépül; játszanak fontos szerepet a fájlnév indexszámmá alakításában. A könyvtár olyan fájl, amelynek tartalma a könyvtárban található indexszámból és fájlnévből álló bejegyzések halmaza. A minősített név egy null karakterrel végződő karakterlánc, amelyet perjel ("/") választ el több összetevőre. Az utolsó kivételével minden összetevőnek egy könyvtár nevének kell lennie, de az utolsó összetevő lehet olyan fájl neve is, amely nem könyvtár. A UNIX V verziójában az egyes összetevők hossza 14 karakterre korlátozódik; Így az indexszámhoz kiosztott 2 bájttal együtt a címtárbejegyzés mérete 16 bájt.

Byte offset
a könyvtáron belül

Mutatószám
(2 bájt)

Névfájlt

1798

init

1276

fsck

clri

1268

motd

1799

hegy

mknod

2114

passwd

1717

umount

1851

ellenőrző lista

fsdbld

config

1432

getty

összeomlik

mkfs

4. ábra /etc könyvtárformátum

A 4. ábra az "etc" könyvtár formátumát mutatja. Minden könyvtár olyan fájlokat tartalmaz, amelyek nevét egy pont és két pont (." és "..") jelöli, és amelyek indexszáma egybeesik az adott könyvtár, illetve a szülőkönyvtár indexszámával. A "." fájl indexszáma a "/etc" könyvtárban a cím eltolása 0, értéke pedig 83. A ".." fájl inode-számának címe a könyvtár elejétől számított 16-os eltolásnál, értéke pedig 2. A bejegyzések A könyvtár lehet üres is, de az inode száma 0. Például a 224-es cím bejegyzése a "/etc" könyvtárban üres, annak ellenére, hogy egykor tartalmazott egy belépési pontot a "crash" nevű fájlhoz. Az mkfs program inicializálja a fájlrendszert úgy, hogy a fájlok inode számai "." és a gyökérkönyvtárban található ".." megegyezik a fájlrendszer gyökérindexszámával.

A kernel ugyanúgy egy könyvtárban tárolja az adatokat, mint egy normál fájltípusban, indexstruktúrát, valamint közvetlen és közvetett címzési szintű blokkokat használ. A folyamatok ugyanúgy ki tudják olvasni az adatokat a könyvtárakból, mint a hagyományos fájlokat, de a könyvtárhoz való kizárólagos írási hozzáférést a kernel fenntartja, így biztosítva a könyvtárszerkezet helyességét. A címtárengedélyek jelentése a következő: az olvasási engedély lehetővé teszi a folyamatoknak, hogy adatokat olvassanak ki a címtárból; az írási engedély lehetővé teszi a folyamat számára, hogy új bejegyzéseket hozzon létre egy könyvtárban, vagy távolítsa el a régieket (a creat, mknod, link és unlink rendszerműveletek segítségével), ezáltal módosítva a könyvtár tartalmát; A végrehajtási jog lehetővé teszi a folyamat számára, hogy fájlnév alapján keressen egy könyvtárat (mivel egy könyvtár "végrehajtása" értelmetlen).

Amikor egy folyamat fájl elérési utat használ, a kernel a könyvtárakból keresi a megfelelő inode számát. A fájlnév inode számmá konvertálása után az inode a memóriába kerül, majd a következő kérésekben felhasználható.

A Unix fájlrendszerek fogalma magában foglalja a hivatkozás fogalmát. Egyetlen inode több fájlnévhez is társítható. A leíró tartalmaz egy mezőt, amely a fájlhoz társított számot tárolja. A hivatkozás hozzáadása egy olyan könyvtárbejegyzés létrehozásából áll, ahol az inode száma egy másik inode-ra mutat, és megnöveli a hivatkozásszámlálót az inode-ban. Amikor egy hivatkozást eltávolítanak, a kernel csökkenti a hivatkozásszámlálót, és eltávolítja a fogantyút, ha a számláló nullává válik.

Az ilyen hivatkozásokat kemény hivatkozásoknak nevezzük, és csak egy fájlrendszeren belül használhatók (nem hozhat létre hivatkozást egy másik fájlrendszerből származó fájlhoz). Ráadásul egy merev hivatkozás csak egy fájlra mutathat (a könyvtárra mutató merev hivatkozás hurkot okozhat a fájlrendszerben).

A legtöbb Unix rendszeren van egy másik típusú hivatkozás is. Ezeket a hivatkozásokat, amelyek csak a fájl nevét tartalmazzák, szimbolikusnak nevezzük. Amikor a kernel feldolgozza az ilyen hivatkozásokat, a fájl elérési útjának inode-dá alakításakor a kernel lecseréli a hivatkozás nevét az inode tartalmára (vagyis a célfájl nevére), és újraértelmezi a fájl elérési útját. Mivel a szimbolikus hivatkozás nem mutat inode-ra, lehetséges hivatkozásokat létrehozni egy másik fájlrendszeren található fájlokhoz. Ezek a hivatkozások bármilyen típusú fájlra mutathatnak, még a nem létezőkre is. A szimbolikus hivatkozásokat széles körben használják, mert nem vonatkoznak rájuk ugyanazok a korlátozások, mint a kemény hivatkozásokra. Azonban elfoglalnak egy kis helyet a lemezen, ahol az inode és az adatblokkok találhatók. Használatuk némi késést eredményezhet a fájl elérési útjának inode-vá való konvertálásában, mivel a kernelnek újra kell értelmeznie a fájl elérési útját a szimbolikus hivatkozás feldolgozása során.

Eszközfájlok

A Unix-szerű operációs rendszerekben az eszközöket speciális fájlokon keresztül érik el. Az ilyen fájl nem foglal helyet a fájlrendszerben. Ez csak egy hozzáférési pont az eszközillesztőhöz.

Kétféle eszközfájl létezik: karakter és blokk. Karaktertípus használatakor csak karakter módban tud adatot cserélni egy eszközzel, míg a blokk típusú eszközfájlok csak puffer használatával teszik lehetővé a blokkok cseréjét. Amikor I/O kérést küldenek egy eszközfájlhoz, a kérést a rendszer a megfelelő eszközillesztőhöz továbbítja. Minden ilyen fájlnak van egy főszáma, amely azonosítja az eszköz típusát, és egy mellékszám, amely magát az eszközt azonosítja.

Az EXT2fs további funkciói

A szabványos Unix-szolgáltatásokon kívül az EXT2fs olyan további funkciókat is kínál, amelyeket a Unix fájlrendszerek általában nem támogatnak.

A fájlattribútumok lehetővé teszik annak megváltoztatását, hogy a kernel hogyan reagáljon, amikor fájlkészletekkel dolgozik. Beállíthat attribútumokat egy fájlhoz vagy könyvtárhoz. A második esetben az ebben a könyvtárban létrehozott fájlok öröklik ezeket az attribútumokat.

A rendszer beillesztése során bizonyos, a fájlattribútumokhoz kapcsolódó funkciók beállíthatók. A mount opció lehetővé teszi a rendszergazdának, hogy megválassza a fájlok létrehozásának módját. A BSD-specifikus fájlrendszerben a fájlok ugyanazzal a csoportazonosítóval jönnek létre, mint a szülőkönyvtár. A System V jellemzői valamivel összetettebbek. Ha egy könyvtárnak be van állítva a setgid bitje, akkor generált fájlokat az adott könyvtár csoportazonosítóját, az alkönyvtárak pedig a csoportazonosítót és a setgid bitet öröklik. Ellenkező esetben a fájlok és könyvtárak a hívó folyamat elsődleges csoportazonosítójával jönnek létre.

Az EXT2fs rendszer a BSD rendszerhez hasonlóan képes szinkron adatmódosítást használni. A mount opció lehetővé teszi az adminisztrátor számára, hogy megadja, hogy módosításukkor minden adatot (inode-ok, bitblokkok, közvetett blokkok és könyvtárblokkok) szinkronban írjanak a lemezre. Ezzel nagy adatrögzítési kapacitást lehet elérni, de gyenge teljesítményt is eredményezhet. A valóságban ezt a funkciót általában nem használják, mert a teljesítmény csökkenése mellett olyan felhasználói adatok elvesztéséhez is vezethet, amelyek nem kerülnek megjelölésre a fájlrendszer ellenőrzésekor.

Az EXT2fs lehetővé teszi a logikai blokk méretének kiválasztását fájlrendszer létrehozásakor. Mérete 1024, 2048 vagy 4096 bájt lehet. A nagyobb blokkok használata gyorsabb I/O műveleteket eredményez (mivel kevesebb lemezkérés történik), és ezáltal kevesebb fejmozgást tesz lehetővé. Másrészt a nagy blokkok használata elpazarolt lemezterülethez vezet. Jellemzően a fájl utolsó blokkját nem használják teljesen információ tárolására, így a blokk méretének növekedésével nő az elpazarolt lemezterület mennyisége.

Az EXT2fs lehetővé teszi a gyorsított szimbolikus hivatkozások használatát. Ilyen hivatkozások használatakor a fájlrendszer adatblokkjai nem használatosak. A célfájl neve nem az adatblokkban tárolódik, hanem magában az inode-ban. Ez a struktúra lehetővé teszi a lemezterület megtakarítását és a szimbolikus hivatkozások feldolgozásának felgyorsítását. Természetesen a fogantyúnak fenntartott hely korlátozott, így nem minden linket lehet gyorsítottként ábrázolni. A gyorsított hivatkozásban a fájlnév maximális hossza 60 karakter. A közeljövőben a tervek szerint ezt a sémát kis fájlokra is kiterjesztik.

Az EXT2fs figyeli a fájlrendszer állapotát. A kernel egy külön mezőt használ a szuperblokkban a fájlrendszer állapotának jelzésére. Ha a fájlrendszer olvasási/írási módban van csatlakoztatva, akkor az állapota "Not Clean"-ra van állítva. Ha csak olvasható módban leszereli vagy visszaszereli, akkor az állapota „Clean” lesz. A rendszerindítás és a fájlrendszer állapotának ellenőrzése során ez az információ annak meghatározására szolgál, hogy szükséges-e a fájlrendszer ellenőrzése. A kernel néhány hibát is elhelyez ebben a mezőben. Amikor a kernel eltérést észlel, a fájlrendszer "Hibás"-ként jelenik meg. A fájlrendszer-ellenőrző ezt az információt teszteli a rendszer ellenőrzéséhez, még akkor is, ha az állapota valójában tiszta.

A fájlrendszer tesztelésének hosszú ideig tartó figyelmen kívül hagyása néha nehézségekhez vezethet, ezért az EXT2fs két módszert tartalmaz a rendszer rendszeres ellenőrzésére. A szuperblokk tartalmazza a rendszerrögzítési számlálót. Ez a számláló minden alkalommal növekszik, amikor a rendszert olvasási/írási módba szerelik. Ha az értéke eléri a maximumot (ez is a szuperblokkban van tárolva), akkor a fájlrendszertesztprogram elkezdi ellenőrizni, még akkor is, ha az állapota "Tiszta". Az utolsó ellenőrzési idő és az ellenőrzések közötti maximális intervallum is a szuperblokkban tárolódik. A vizsgálatok közötti maximális intervallum elérésekor a rendszer figyelmen kívül hagyja a fájlrendszer állapotát, és elindul a vizsgálat.

Az EXT2fs rendszer tartalmaz eszközöket a beállításához. A tune2fs programmal módosítható:

  • műveletek hiba észlelésekor. Ha a kernel eltérést észlel, a fájlrendszer "Hibás" jelzést kap, és a következő három művelet egyike végrehajtható: a végrehajtás folytatása, a fájlrendszer újracsatlakoztatása csak olvasható módban a sérülés elkerülése érdekében, vagy a rendszer újraindítása a fájlrendszer.
  • maximális érték felszerelés.
  • az ellenőrzések közötti maximális intervallum.
  • a root felhasználó számára fenntartott logikai blokkok száma.

A csatolásnál megadott opciók arra is használhatók, hogy megváltoztassuk, mit tegyen a kernel, ha hibát észlel.

Az attribútumok használatával a felhasználók érzékeny fájlokat törölhetnek. Egy ilyen fájl törlésekor a rendszer véletlenszerű információkat ír azokhoz a blokkokhoz, amelyeket korábban a fájl elhelyezésére használtak. Ez megakadályozza, hogy kívülállók lemezszerkesztővel hozzáférjenek a fájl korábbi tartalmához.

A közelmúltban új fájltípusok kerültek az EXT2fs rendszerbe, a 4.4 BSD fájlrendszerből. Az első típusú fájlok csak olvasásra használhatók: senkinek nincs joga megváltoztatni vagy törölni őket. Ez a fontos konfigurációs fájlok védelmére használható. Egy másik típusú fájl az írási módban megnyitható fájl, és csak a fájl végéhez lehet adatokat hozzáfűzni. Az ilyen típusú fájlok szintén nem törölhetők vagy nevezhetők át. Használhatók naplófájlként, amelyek mérete csak nőhet.

Teljesítmény optimalizálás

Az EXT2fs rendszer számos olyan funkciót tartalmaz, amelyek optimalizálják a teljesítményét, ami megnöveli az információcsere sebességét fájlok olvasása és írása során.

Az EXT2fs aktívan használja a lemezpuffert. Amikor egy blokkot kell olvasni, a kernel I/O műveleti kérelmet küld több szomszédos blokknak. Így a kernel megpróbálja megbizonyosodni arról, hogy a következő olvasandó blokk már be van töltve a lemezpufferbe. Az ilyen műveleteket általában a fájlok egymás utáni olvasásakor hajtják végre.

Az EXT2fs rendszer számos optimalizálást is tartalmaz az információelhelyezéshez. A blokkcsoportok a megfelelő inódok és adatblokkok csoportosítására szolgálnak. A kernel mindig megpróbálja ugyanabba a csoportba helyezni egy fájl adatblokkjait, valamint annak leíróját. Ennek célja a hajtófejek mozgásának csökkentése a leíró és a hozzá tartozó adatblokkok beolvasásakor.

Amikor adatot ír egy fájlba, az EXT2fs legfeljebb 8 összefüggő blokkot előre lefoglal egy új blokk lefoglalásakor. Ez a módszer lehetővé teszi nagy teljesítmény elérését nagy rendszerterhelés mellett. Ez azt is lehetővé teszi, hogy a fájlokat egybefüggő blokkokban helyezzék el, ami felgyorsítja a későbbi olvasást.

EXT2fs könyvtár

Az EXT2fs erőforrások használatának és a fájlrendszer vezérlőstruktúráinak működésének egyszerűsítésére a libext2fs könyvtárat fejlesztették ki. Ez a könyvtár olyan funkciókat tartalmaz, amelyek segítségével meghatározhatók és módosíthatók az EXT2 fájlrendszer adatai a fizikai eszköz közvetlen elérésével.

A legtöbb EXT2fs segédprogram (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs stb.) ezt a könyvtárat használja. Ez nagymértékben leegyszerűsíti ezen segédprogramok módosítását, mivel bármilyen változtatást be kell vezetni további funkciók az EXT2fs fájlrendszerre csak az EXT2fs könyvtárban szabad megtenni.

Mivel az EXT2fs könyvtár felülete meglehetősen széles és elvont, a fájlrendszerhez közvetlen hozzáférést igénylő programok könnyen megírhatók a segítségével. Például az EXT2fs könyvtárat használták a 4.4 BSD dump átvitele és néhány segédprogram visszaállítása során. Nagyon kevés változtatásra volt szükség ahhoz, hogy ezeket az eszközöket Linuxhoz igazítsuk (több fájlrendszerrel kölcsönhatásba lépő függvényt le kellett cserélnünk az EXT2fs könyvtár hívásaival).

Az EXT2fs könyvtár több osztály műveleteihez biztosít hozzáférést. Az első osztály a fájlrendszerhez kapcsolódó műveletek. Bármely program képes megnyitni vagy bezárni egy fájlrendszert, olvasni vagy írni egy bitblokkot, vagy létrehozni egy új fájlrendszert a lemezen. Vannak funkciók a fájlrendszer hibás blokkjainak listájának kezelésére is.

A műveletek második osztálya könyvtárakkal működik. Az EXT2fs könyvtárat használó programok létrehozhatnak vagy kibonthatnak egy könyvtárat, valamint bejegyzéseket adhatnak hozzá vagy törölhetnek egy könyvtárban. Léteznek függvények a fájl elérési útjának meghatározására inode használatával, valamint a fájl elérési útjának meghatározására egy adott leíró használatával.

A műveletek utolsó osztálya indexleírókon működik. Lehetőség van a leíró táblázat olvasására, leíró olvasására vagy írására, valamint a megadott leíró összes blokkjának megtekintésére. Lehetőség van a blokkok és leírók kiosztására és felszabadítására szolgáló függvények használatára.

EXT2fs rendszereszközök

Az EXT2fs rendszerhez erőteljes vezérlőket fejlesztettek ki. Ezek az eszközök az EXT2fs fájlrendszerek esetleges következetlenségeinek létrehozására, módosítására és kijavítására szolgálnak. Az mke2fs program egy üres EXT2fs fájlrendszert tartalmazó lemezpartíció csatlakoztatására szolgál.

A tune2fs programmal konfigurálhatók a fájlrendszer paraméterei. Segítségével módosítható a hibákra adott válasz, a rendszercsatolások maximális száma, a rendszerellenőrzések közötti maximális intervallum és a root felhasználó számára fenntartott logikai blokkok száma.

Talán a legérdekesebb eszköz a fájlrendszer-ellenőrző. Az E2fsck célja, hogy kiküszöbölje a fájlrendszer inkonzisztenciáit a teljes rendszer pontatlan leállítása után. Az e2fsck program kezdeti verziója a Linus Torvald fsck programon alapul a Minix fájlrendszerhez. A program jelenlegi verziója azonban át van írva az EXT2fs könyvtár használatával, és gyorsabb és javítható több hibák a rendszerben annak ellenőrzésekor, az eredeti verzióhoz képest.

Az e2fsck programot úgy tervezték, hogy maximális sebességgel fusson. Mivel a fájlrendszer-ellenőrző programok lemezbetöltéshez vezetnek, az e2fsck algoritmusokat úgy kell optimalizálni, hogy a fájlrendszer-struktúrákhoz sokkal ritkábban férhessen hozzá. Ezenkívül az inode-ok és könyvtárak ellenőrzésének sorrendje a blokkszám alapján történne, hogy csökkentse a lemezmeghajtófejek mozgatásához szükséges időt.

Az első lépésben az e2fsck végigfut a fájlrendszer összes inodonján, és minden inode-ot külön rendszerelemként vizsgál. Így a többi fájlrendszer-objektum nem kerül ellenőrzésre a tesztelés során. Az ilyen ellenőrzések egyik célja az ellenőrzött fájl típusának megléte, valamint a leíró összes blokkja és a meglévő számokkal rendelkező blokk megfelelőségének ellenőrzése. Az első lépés a blokkok és leírók használatát jelző bittérképeket ellenőrzi.

Ha az e2fsck olyan adatblokkokat talál, amelyek száma egynél több leíróban szerepel, akkor az 1B-től 1D-ig terjedő lépések futnak az eltérés feloldására, akár a megosztandó blokkok számának növelésével, akár egy vagy több leíró eltávolításával.

Az első lépés tart a legtöbb időt, mivel minden inódot be kell olvasni a memóriába és ellenőrizni kell. A következő lépésekben az I/O műveletek idejének csökkentése érdekében minden szükséges információ a pufferben marad. Ennek a sémának a jellemzője a fájlrendszer összes könyvtárblokkjának keresése. Ennek az információnak a megszerzéséhez a második lépésben újra beolvassák a fájlrendszer összes könyvtárának leíró szerkezetét.

A második lépésben a könyvtárakat mint egyedi elemek fájlrendszer. Minden egyes könyvtárblokk külön-külön kerül ellenőrzésre, a többi könyvtárblokkra való hivatkozás nélkül. Ez lehetővé teszi az e2fsck számára, hogy az összes könyvtárblokkot blokkszám szerint rendezze, és növekvő sorrendben ellenőrizze őket, így csökkentve a lemezelérési időt. A címtárblokkokat tesztelik, hogy megbizonyosodjanak arról, hogy bejegyzéseik érvényesek, és hivatkozásokat tartalmaznak a meglévő számokkal rendelkező leírókra (az első lépésben meghatározottak szerint).

Minden címtárleíróban az első könyvtárblokknál ellenőrzik a "." bejegyzések meglétét. és "..", valamint a "." bejegyzés leírószáma. megegyezik az aktuális könyvtárral. (A „..” bejegyzés leírószámát a harmadik lépésig nem teszteljük.)

A második lépés során a szülőkönyvtárnak megfelelő információ egy pufferben kerül tárolásra.

Megjegyzendő, hogy a második lépés végére szinte minden I/O művelet befejeződik a lemezzel. A harmadik, negyedik és ötödik lépéshez szükséges összes információ megtalálható a memóriában, azonban a fennmaradó lépések terhelik a processzort, és az e2fsck teljes végrehajtási idejének kevesebb mint 5-10%-át foglalják el.

A harmadik lépésben a címtárkapcsolatokat ellenőrizzük. Az E2fsck a második lépés során kapott információk alapján ellenőrzi az egyes könyvtárak elérési útját a gyökér felé. Itt minden könyvtárhoz be van jelölve a ".." bejegyzés. Az ellenőrzés után azonosított összes könyvtár, amely nem kapcsolódik a gyökérkönyvtárhoz, a /lost+found könyvtárba kerül.

A negyedik lépésben az e2fsck ellenőrzi az egyes inode referenciaszámait úgy, hogy végigmegy az összes inodon, és összehasonlítja a referenciaszámokat (ezt az információt az első lépésből menti) a belső számlálókkal, amelyeket a második és harmadik lépés során számítottak ki. Minden nulla hivatkozási számmal rendelkező vissza nem törölt fájl szintén a /lost+found könyvtárba kerül.

Végül az ötödik lépésben az e2fsck ellenőrzi, hogy minden fájlrendszer-információ egyezik-e. Itt az előző lépésekben kapott blokkok és leírók bittérképeit összehasonlítják a tényleges értékekkel, és szükség esetén a lemezen lévő információkat ennek megfelelően módosítják.

Egy másik hasznos eszköz a fájlrendszer hibakeresője. A Debugfs egy hatékony program, amely lehetővé teszi a fájlrendszer állapotának meghatározását és beállítását. Lényegében egy interaktív interfész az EXT2fs könyvtárhoz, vagyis a begépelt parancsokat könyvtári függvények hívásaira fordítja.

A Debugfs használható a fájlrendszer belső szerkezetének meghatározására, a sérült rendszer kézi javítására, vagy feltételes tesztek létrehozására az e2fsck számára. Sajnos ez a program károsíthatja a fájlrendszert, ha nem tudja, hogyan kell használni. Ezzel az eszközzel egyszerűen megsemmisítheti a fájlrendszert. Ezért a debugfs alapértelmezés szerint csak olvasható módban nyitja meg a fájlrendszert. Írás/olvasás módban való eléréshez adja meg a -w kapcsolót.

Teljesítményszámítás

A Bonnie-teszt eredményei a következő táblázatból láthatók:

Karakterenkénti felvétel (Kb/s)

Rögzítés blokkolása (Kb/s)

Szinkronizálás (Kb/s)

Karakterenkénti olvasás (Kb/s)

Blokkolvasás (Kb/s)

BSD Async

BSD szinkronizálás

Ext2fs

1237

1033

Xia fs

Az eredmények meglehetősen jók a blokk I/O-val: az EXT2fs rendszer teljesítményben felülmúlja a többi rendszert. Ez az elhelyezési eljárásokban szereplő optimalizálásnak köszönhető. A felvétel is elég gyorsan megtörténik, mivel csoportos módban történik. A nagy olvasási sebesség annak köszönhető, hogy a blokkokat hozzárendelték a fájlhoz, így a meghajtófejek nem mozognak két olvasás között, és az olvasás előtti optimalizálás teljes mértékben működik.

Másrészt a FreeBSD rendszer nagyobb teljesítménnyel rendelkezik a szimbolikus I/O esetében. Ennek oka lehet, hogy a FreeBSD és a Linux eltérő eljárásokat használ a megfelelő C könyvtárakhoz. Ezenkívül a FreeBSD valószínűleg optimalizáltabb szimbolikus olvasási könyvtárral rendelkezik, ezért a teljesítmény itt valamivel jobb.

Andrew teszt eredményei

Andrew teszteredményei a következő táblázatból láthatók:

1. szakasz Létrehozás

Pass 2 Másolás

3. szakasz Állapotellenőrzés

Adja meg a 4 bájtról byte ellenőrzést

5. rész Összeállítás

2203

7391

6319

17466

75314

BSD szinkronizálás

2330

7732

6317

17499

75681

Ext2fs

Az első két lépés eredménye azt mutatja, hogy a Linux nyer az aszinkron adatcserével. Könyvtárak és fájlok létrehozásakor a BSD rendszer szinkronban írja a könyvtárkezelőket és a címtárbejegyzéseket. A feltételezések szerint a FreeBSD aszinkron támogatása még nem valósult meg teljesen.

A harmadik lépésben a Linux és a BSD értékei nagyon hasonlóak. Míg a BSD jobban teljesít, a fájlnévpuffer hozzáadása a Linux VFS-hez kiküszöböli ezt a problémát.

A negyedik és ötödik lépésben a Linux gyorsabb, mint a FreeBSD, elsősorban az egységes pufferkezelés használatának köszönhetően. A puffertérfogat szükség esetén növekedhet és elfoglalható több memória mint a fix kötetet használó FreeBSD-ben. Az EXT2fs és a Xia fs rendszerek eredményeinek összehasonlítása azt mutatja, hogy az EXT2fs-ben foglalt optimalizációkat ténylegesen alkalmazzák: ezeknek a rendszereknek a teljesítménybeli különbsége körülbelül 5-10%.

Következtetés

Az EXT2 fájlrendszer a legelterjedtebb a Linux-felhasználók körében. Szabványos Unix-szolgáltatásokat és további szolgáltatásokat kínál. Ráadásul a kernelben található optimalizálásnak köszönhetően kiváló teljesítményt mutat.

Az EXT2fs rendszer olyan funkciókat tartalmaz, amelyek lehetővé teszik új képességek hozzáadását. Vannak, akik a valódi fájlrendszer kiterjesztéseinek fejlesztésén dolgoznak: Posix ACL, helyreállítás törölt fájlokés valós idejű fájltömörítés.

Először az EXT2fs rendszert integrálták a Linux kernelbe, most pedig aktívan portolják más operációs rendszerekre. Az EXT2fs a Masix operációs rendszer fontos összetevője is, amelyet az egyik szerző jelenleg fejleszt.

ext2(más néven ext2fs) - Második kiterjesztett fájlrendszer(Second Extended File System) egy Linux kernelre épülő fájlrendszer. Az ext2 megalkotója és fejlesztője a Remy Card. Az ext2 fájlrendszert ő építette a régi helyére, korábbi verzió-kieg.

A sebesség és a teljesítmény tekintetében ez a fájlrendszer viszonyítási alapként szolgálhat. Ezt bizonyítják a fájlrendszer-teljesítménytesztek eredményei. Például sebességteszteken szekvenciális olvasásés a készült felvételeket műszaki központ A Dell szerint az ext2 fájlrendszer felülmúlja az ext3-at, és olvasási sebességben a második a modernebb ext4 után.

Az ext2 fő hátránya, hogy nem naplózó fájlrendszer. Ez a hátrány azonban megszűnt a következő fájlrendszerben - ext3.

Az ext2 flash kártyákon és szilárdtestalapú meghajtók(SSD), mivel a naplózás hiánya előnyt jelent, ha írási cikluskorlátokkal rendelkező meghajtókkal dolgozik.

Az ext2 létrehozásának története

A Linux rendszer gyors fejlődése során a Minix OS fájlrendszert használta. Elég stabil volt, ugyanakkor 16 bites. Ennek eredményeképpen partíciónként szigorú korlát volt 64 Mb. Ezen kívül volt egy korlátozás is maximális hossza fájlnév, amely 14 karakterből állt.

Ezek a korlátozások együtt vezettek a „kibővített fájlrendszer” kifejlesztéséhez (innen a „ Kibővített fájlrendszer"). Azt a feladatot kapta, hogy megoldja Minix két kulcsfontosságú problémáját. Az új fájlrendszert 1992 áprilisában mutatták be. Ez az Ext volt, amely 2 gigabájtra terjesztette ki a fájlméret-korlátozást, és 255 karakteres fájlnév-hosszkorlátot állított be.

Az új fájlrendszer sikere ellenére azonban még mindig maradt jó néhány megoldatlan probléma. Például nem támogatták a külön hozzáférést, nem voltak időbélyegek az adatok módosítására. A problémák megoldásának szükségessége motiválta az ext2 kiterjesztett fájlrendszer következő verziójának elkészítését (“ Második kiterjesztett fájlrendszer"). Az ext2-t 1993 januárjában fejlesztették ki, és POSIX-kompatibilis ACL-eket és kiterjesztett fájlattribútumokat is megvalósított.

ext2 logikai szervezés

Az ext2 címtárhierarchia gráf hálózatként jelenik meg. Ez annak köszönhető, hogy egy fájl egyszerre több könyvtárba is bekerülhet.

Minden fájltípusnak szimbolikus neve van. A hierarchikusan szervezett fájlrendszerek általában háromféle nevet használnak: egyszerű, összetett és relatív. Ugyanez az ext2-ben. Egyszerű név esetén a korlátozás az, hogy hossza ne haladja meg a 255 karaktert, emellett a név ne tartalmazzon NULL karaktert és perjelet.

Ami a NULL karaktert illeti, a megszorítások a karakterláncok C nyelvben történő megjelenítéséhez kapcsolódnak, a perjel karakter esetében ez abban rejlik, hogy ezt elválasztó karakterként használják a könyvtárak között.

A teljes név az összes könyvtár egyszerű szimbolikus neveinek lánca, amelyen keresztül az elérési út a gyökértől a könyvtárig halad ezt a fájlt. Az ext2-ben egy fájl több könyvtárhoz is tartozhat, ami azt jelenti, hogy több teljes neve is lehet (egy fájl - több teljes név). De így vagy úgy, a teljes név határozza meg a fájlt.

ext2 attribútumok:

  • fájltípus és hozzáférési jogok,
  • tulajdonos, hozzáférési csoport,
  • információk az engedélyezett műveletekről,
  • létrehozási idő, utolsó hozzáférés dátuma, dátum utolsó változtatásés az utolsó törlés időpontja,
  • aktuális fájlméret,
  • fájl specifikáció:
    • normál fájl
    • katalógus,
    • bájt-orientált eszközfájl,
    • blokk-orientált eszközfájl,
    • nevű cső,
    • szimbolikus link,
  • az elfoglalt blokkok száma,
  • más

A fájlattribútumokat speciális táblák tartalmazzák, nem pedig könyvtárak, mint általában az egyszerű fájlrendszerekben. Ennek eredményeként a címtár nagyon egyszerű felépítésű, két részből áll: az inode számból és a névből.

Fizikai szervezet ext2

Lemezpartíció szerkezete

Az ext2 részeként a következők különböztethetők meg:

  • blokkok és blokkcsoportok;
  • inode;
  • szuperblokk.

A teljes lemezpartíció fix méretű blokkokra van osztva, amelyek a szektorméret többszörösei (1024, 2048, 4096 vagy 8192 bájt). A blokk méretét a fájlrendszer létrehozásakor adják meg a lemezpartíción. Minden blokk sorozatszámmal rendelkezik. A töredezettség és a mozgás csökkentése érdekében kemény fejek Ha nagy mennyiségű adatot olvas egy lemezen, a blokkokat csoportokba egyesítik.

A fájlrendszer alapkoncepciója az inode (más néven inode - információs csomópont). Ez egy speciális struktúra, amely információkat tartalmaz a fájl tulajdonságairól és fizikai helyéről. Az index-dekódolókat egy táblázatba egyesítik, amely az egyes blokkcsoportok elején található. A szuperblokk az ext2 fájlrendszer fő eleme. Általános információkat tartalmaz a fájlrendszerről. A szuperblokk a szekció elejétől 1024 bájtra található. A szuperblokk integritása határozza meg a fájlrendszer állapotát. Az operációs rendszer számos biztonsági másolatok szuperblokk - ha a partíció megsérül. A szuperblokk után következő blokkban van egy globális leíró tábla - a blokkcsoportok leírása tömb formájában, általános információkkal az összes blokkcsoportról.

Csoport blokkolása

Az ext2 partíció összes blokkja csoportokra van osztva. Minden csoportnál a külön bejegyzés a globális leíró táblázatban. Ez a rekord olyan alapvető paramétereket tárol, mint például: a blokkszám bittérképekben és táblázatokban, a szabad blokkok száma a csoportban, a könyvtárakat tartalmazó inode-ok száma.

Bittérkép blokkolása egy olyan rendszer, amelyben minden bit tájékoztat arról, hogy a megfelelő blokk le van-e foglalva egy fájlhoz. Ha a bit 1, akkor a blokk foglalt. Az inode bitmap hasonló funkciót lát el: megmutatja, hogy melyik inode foglalt, és melyik nem. A Linux kernel megpróbálja egyenletesen elosztani a könyvtárak inode-jait a csoportok között, és áthelyezi a fájlok inode-jait a szülőkönyvtárral rendelkező csoportba. Az összes fennmaradó terület, amely a táblázatban adatként jelenik meg, a fájlok tárolására van lefoglalva.

Adatcímző rendszer

Az adatcímző rendszer a fájlrendszer egyik legkomolyabb és legfontosabb összetevője. Neki köszönhetően van szükséges fájl sok üres vagy foglalt blokk között a lemezen.

Az ext2 a következő fájlblokk-címzési sémát használja. A fájl címének tárolásához 15 mező van lefoglalva, amelyek mindegyike 4 bájtból áll. Ha a fájl 12 blokkba illeszkedik, akkor a megfelelő klaszterek számai a cím első tizenkét mezőjében szerepelnek. Ha a fájl mérete meghaladja a 12 blokkot, akkor a következő mező annak a klaszternek a címét tartalmazza, amelyben a fájl következő blokkjainak száma található. Így a tizenharmadik mezőt indirekt címzésre használjuk.

at maximális méret 4096 bájtos blokk, a 13. mezőnek megfelelő fürt legfeljebb 1024 számot tartalmazhat a fájl következő blokkjaiból. Ha a fájl mérete meghaladja a 12+1024 blokkot, akkor a 14. mező kerül felhasználásra, amely egy 1024 fürtszámot tartalmazó fürt címét tartalmazza, amelyek mindegyike a fájl 1024 blokkjára vonatkozik. Itt már dupla indirekt címzést használnak. Ha pedig a fájl több mint 12+1024+1048576 blokkot tartalmaz, akkor az utolsó 15. mező kerül alkalmazásra háromszoros közvetett címzésre.

Ez a címzési rendszer lehetővé teszi a 2 TB-nál nagyobb fájlok használatát, amelyek maximális blokkmérete 4096 bájt.

Ha két operációs rendszer van telepítve, a Windows és a Linux, akkor valószínűleg szeretne egy ingyenes operációs rendszer partícióin közvetlenül a Windowsból, a számítógép újraindítása nélkül.

Sajnos a Windows rendszerben nincs támogatás a Linux OS partíciókhoz. De hiába. Számomra úgy tűnik, hogy ez kedves gesztus lehet a Microsoft részéről.

A probléma lényege, hogy a Windows fájl alapút használ NTFS rendszer, és a Linuxnak megvan a maga módja a fájlok rendezésének, a kiterjesztett fájlrendszer, legújabb verziója amelynek sorozatszáma 4.

A Linux felhasználóbarátabb, mint kereskedelmi testvére: a Linux alapértelmezés szerint támogatja a Windows NTFS fájlrendszert. Természetesen nem fogja tudni telepíteni a Linuxot NTFS-partícióra, de olvashat és írhat adatokat egy ilyen partícióról.

Ext2 IFS

Az Ext2 IFS támogatja a Windows NT4.0/2000/XP/2003/Vista/2008 x86 és x64 verzióit, és lehetővé teszi a Linux ext2 partíciók tartalmának megtekintését és írását is. A segédprogram telepíti az ext2fs.sys rendszer-illesztőprogramot, amely kibővíti a Windows képességeit, és teljes mértékben támogatja az ext2-t: az ext2 partíciókhoz meghajtóbetűjeleket rendelnek, a rajtuk lévő fájlok és mappák pedig megjelennek az összes alkalmazás párbeszédablakban, például az Explorerben.

Ext2 FSD

Ext2 FSD – ingyenes sofőr Mert Windows rendszerek(2K/XP/VISTA/7 x86 és x64 verziók). Az előző segédprogramhoz hasonlóan, amely lényegében egyben illesztőprogram is, teljes mértékben támogatja a Windows ext2 fájlrendszerét.

LTOOLS – segédprogramok készlete parancssor, amely lehetővé teszi adatok olvasását és írását Linux ext2, ext3 és ReiserFS partíciókra (standard Linux fájlrendszerek) egy DOS vagy Windows rendszert futtató gépről.

A programnak létezik grafikus shell-el (Java nyelven írt) verziója - LTOOLSgui, valamint grafikus héjjal is.

Ext2Read

A desszert, mint mindig, most is a legfinomabb.

Az Ext2Read egy fájlkezelő típusú segédprogram, amely lehetővé teszi az ext2/ext3/ext4 partíciók megtekintését és írását. Támogatja az LVM2-t és – ami megkülönbözteti a jelen áttekintésben szereplő többi programtól – az ext4 fájlrendszert. Beépített támogatás a rekurzív címtármásoláshoz.

És itt a második desszert. Eleinte azt mondták, hogy a Microsoft részéről jó gesztus lenne, ha alapértelmezés szerint engedélyezné a Linux-partíciók támogatását a Windowsban.

A gesztus azonban a Linux 20. évfordulóján történt. Nézd meg magad.

Ez minden. Köszönöm a figyelmet. Megyek, leküzdöm a kakaskakasokat. Nagyon sok van belőlük idén tavasszal. 🙂



Kapcsolódó kiadványok