Nejlepší odpověď
Stručně
Každý systém souborů má superblok, který obsahuje informace o systému souborů, například:
- Typ systému souborů
- Velikost
- stav
- Informace o dalších strukturách metadat
Podrobně
Superblok je struktura, která představuje souborový systém. Obsahuje nezbytné informace pro správu souborového systému během provozu. Zahrnuje název systému souborů (například ext4), velikost systému souborů a jeho stav, odkaz na blokové zařízení a informace o metadatech (například bezplatné seznamy atd.). Superblok je obvykle uložen na paměťovém médiu, ale může být vytvořen v reálném čase, pokud neexistuje. Strukturu superbloku najdete v ./linux/include/linux/fs.h.
Jeden důležitým prvkem superbloku je definice operací superbloku. Tato struktura definuje sadu funkcí pro správu inodů v systému souborů. Inody lze například přidělit pomocí alloc\_inode
nebo odstranit pomocí destroy\_inode
. Inody můžete číst a psát pomocí read\_inode
a write\_inode
nebo synchronizovat soubor systém s sync\_fs
. Strukturu super\_operations
najdete v ./linux/include/linux/fs.h. Každý souborový systém poskytuje své vlastní metody inode, které implementují operace a poskytují společnou abstrakci vrstvě VFS.
Fyzická struktura
Fyzická struktura souborových systémů Ext2 byla silně ovlivněna rozvržením souborového systému BSD. Souborový systém je tvořen skupinami bloků. Skupiny bloků jsou obdobou skupin válců BSD FFS. Skupiny bloků však nejsou vázány na fyzické rozložení bloků na disku, protože moderní disky mají tendenci být optimalizovány pro sekvenční přístup a skrýt svou fyzickou geometrii operačnímu systému.
,---------+---------+---------+---------+---------,
| Boot | Block | Block | ... | Block |
| sector | group 1 | group 2 | | group n |
`---------+---------+---------+---------+---------"
Každá skupina bloků obsahuje redundantní kopii důležitých informací o ovládání souborového systému (superblok a souborový systém deskriptory) a obsahuje také část souborového systému (bitmapu bloků, bitmapu inodů, část tabulky inodů a datové bloky). Struktura skupiny bloků je uvedena v této tabulce:
,---------+---------+---------+---------+---------+---------,
| Super | FS | Block | Inode | Inode | Data |
| block | desc. | bitmap | bitmap | table | blocks |
`---------+---------+---------+---------+---------+---------"
Používání skupin bloků je velkou výhodou z hlediska spolehlivosti: protože kontrolní struktury jsou replikovány v každé skupině bloků, je e Asy obnovit ze souborového systému, kde byl superblok poškozen. Tato struktura také pomáhá dosáhnout dobrých výkonů: zmenšením vzdálenosti mezi tabulkou inodů a datovými bloky je možné omezit hledání hlavy disku během I / O u souborů.
Odkaz: – Rozšířené souborové systémy (Ext, Ext2, Ext3)
Odpověď
Souborové systémy v Linuxu fungují v několika vrstvách: A) a sada primitivních rutin pro interakci se zařízením (tj. ovladačem), B) sada záznamů na disku odpovídající tomu, co nazýváme soubory, a C) informace o metadatech o každém souboru, které se nazývají inody, pro každý soubor je 1 inode. Tyto inody sledují například to, jaké jsou vaše atributy souborů, jak jsou definovány soubory pro čtení a zápis, atd.
Ukázalo se, že jde pouze o neúplný obrázek. To je předtím, než se každý druh souborového systému může rozhodnout uspořádat své inody jakýmkoli způsobem, který se mu na disku líbí. Dokonce i reprezentace inodů na disku se může u různých souborových systémů lišit – důležité je jen to, že pohled , který VFS poskytuje ze struktur inode, souhlasí. Linux tedy sám o sobě neví, jak lze přistupovat k jednotlivým souborům / inodům v systému souborů.
Problém je úhledně vyřešen použitím struct file\_system a struktury typy super\_block . Ten druhý žije na disku, zatímco ten druhý žije pouze v paměti. Když připojíte souborový systém pomocí příkazu say,
mount -t ext4 / dev / usb1 / mnt / usb1
objekt file\_system definující typ ext4 obsahuje mount () rutina, která určuje, jak číst objekt superbloku z disku. Tento objekt superbloku určuje vše, co potřebujete pro přístup (přidělení, odstranění, čtení, právo, synchronizace mezi zařízením a pamětí atd.) Inody v zařízení.Jakmile je tento objekt superbloku načten do paměti, použijeme jeho operace lookup () ke čtení inodů z disku do paměti. Potom tyto inody používáme zase k tomu, abychom se dostali k souborovým systémům. Je to opravdu hierarchické a celkem pěkné!