Mi a Linux fájlrendszerben a Superblock?


Legjobb válasz

Röviden

Minden fájlrendszernek van egy szuperblokkja, amely információkat tartalmaz a fájlrendszerről, például:

  • fájlrendszer típusa
  • méret
  • állapot
  • Információ más metaadatszerkezetekről

Részletesen

A szuperblokk egy fájlrendszert reprezentáló struktúra. Tartalmazza a fájlrendszer működés közbeni kezeléséhez szükséges információkat. Tartalmazza a fájlrendszer nevét (például ext4), a fájlrendszer méretét és állapotát, a blokkoló eszközre való hivatkozást és a metaadatokat (például szabad listákat és így tovább). A szuperblokkot általában az adathordozón tárolják, de valós időben létrehozható, ha nem létezik ilyen. A szuperblokk-struktúrát a ./linux/include/linux/fs.h fájlban találhatja meg.

One A szuperblokk fontos eleme a szuperblokk-műveletek meghatározása. Ez a struktúra meghatározza az inódok kezelésének funkcióit a fájlrendszeren belül. Például az inódok kioszthatók alloc\_inode vagy törölhetők a destroy\_inode paranccsal. Inode-okat olvashat és írhat a read\_inode és write\_inode fájlokkal, vagy szinkronizálhatja a fájlt sync\_fs rendszer. A super\_operations szerkezetet a ./linux/include/linux/fs.h fájlban találja meg. Minden fájlrendszer biztosítja a saját inode módszerek, amelyek végrehajtják a műveleteket, és a VFS réteg számára a közös absztrakciót biztosítják.

Fizikai felépítés

Az Ext2 fájlrendszerek fizikai felépítését erősen befolyásolta az elrendezés a BSD fájlrendszer. A fájlrendszer blokkcsoportokból áll. A blokkcsoportok analógak a BSD FFS hengercsoportjaival. A blokkcsoportok azonban nem kötődnek a blokk fizikai elrendezéséhez a lemezen, mivel a modern meghajtók általában optimalizálva vannak a szekvenciális hozzáféréshez, és elrejtik fizikai geometriájukat az operációs rendszer előtt.

,---------+---------+---------+---------+---------,

| Boot | Block | Block | ... | Block |

| sector | group 1 | group 2 | | group n |

`---------+---------+---------+---------+---------"

Minden blokkcsoport tartalmazza a fontos fájlrendszer-vezérlési információk (szuperblokk és a fájlrendszer) redundáns másolatát descriptorok) és tartalmazza a fájlrendszer egy részét (blokk bitképet, inode bitképet, az inode táblázat egy részét és adatblokkokat). A blokkcsoport felépítése ebben a táblázatban látható:

,---------+---------+---------+---------+---------+---------,

| Super | FS | Block | Inode | Inode | Data |

| block | desc. | bitmap | bitmap | table | blocks |

`---------+---------+---------+---------+---------+---------"

A blokkcsoportok használata nagy győzelmet jelent a megbízhatóság szempontjából: mivel a vezérlő struktúrák minden blokkcsoportban megismétlődnek, e Asy helyreállítani egy fájlrendszerből, ahol a szuperblokk sérült. Ez a struktúra a jó teljesítmény eléréséhez is hozzájárul: az inode tábla és az adatblokkok közötti távolság csökkentésével csökkenthető a fájlok I / O során keresett lemezfejje.

Hivatkozás: – Kiterjesztett fájlrendszerek (Ext, Ext2, Ext3)

Válasz

A Linux fájlrendszerei több rétegben működnek: A) a primitív rutinok összessége az eszközzel (azaz az illesztőprogrammal) való interakcióhoz, B) a lemezen található rekordok halmaza, amely fájloknak nevezzük, és C) metaadat-információk az egyes fájlokról, amelyeket inódoknak neveznek, minden fájlhoz 1 inode tartozik. Ezek az inodes nyomon követi például a fájlattribútumokat, a fájlok olvasásának / írásának meghatározását stb.

Kiderült, hogy ez csak egy hiányos kép. Ezt megelőzően minden fájlrendszer dönthet úgy, hogy az inode-okat bármilyen módon elrendezi a lemezen. Még az inode-ok lemezen való megjelenítése is változhat a különböző fájlrendszerek között – csak az a fontos, hogy a nézet a VFS-hez biztosított az inode-struktúrák megegyezésével. Tehát a Linux önmagában nem tudja, hogyan érhetők el a fájlrendszer egyes fájljai / inódjai.

A problémát rendesen kezeli a struct fájl\_rendszer és a struct használata super\_block típusok. Ez utóbbi a lemezen él, míg az előbbi csak a memóriában él. Amikor csatol egy fájlrendszert mondat használatával,

mount -t ext4 / dev / usb1 / mnt / usb1

Az ext4 típust meghatározó file\_system objektum tartalmaz egy mount () rutin, amely meghatározza, hogy miként olvasható le a lemezről a superblock objektum. Ez a szuperblokk objektum meghatározza mindazt, amire szüksége van (hozzárendelés, törlés, olvasás, jobb, szinkronizálás az eszköz és a memória között stb.) Az eszköz inódjaihoz.Miután ezt a szuperblokk-objektumot behívta a memóriába, lookup () műveleteivel az inódokat olvassuk le a lemezről a memóriába. Ezután ezeket az inodes-eket egymás után használjuk a fájlrendszerek eléréséhez. Hierarchikus, valóban és nagyon szép ebben!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük