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!