Najlepsza odpowiedź
W skrócie
Każdy system plików ma superblok, który zawiera informacje o systemie plików, takie jak:
- Typ systemu plików
- Rozmiar
- Stan
- Informacje o innych strukturach metadanych
Szczegóły
Superblok jest strukturą reprezentującą system plików. Zawiera informacje niezbędne do zarządzania systemem plików podczas pracy. Zawiera nazwę systemu plików (na przykład ext4), rozmiar systemu plików i jego stan, odniesienie do urządzenia blokowego oraz informacje o metadanych (takich jak wolne listy itp.). Superblok jest zwykle przechowywany na nośniku pamięci, ale można go utworzyć w czasie rzeczywistym, jeśli taki nie istnieje. Strukturę superbloku można znaleźć w ./linux/include/linux/fs.h.
Jeden ważnym elementem superbloku jest definicja operacji superbloku. Ta struktura definiuje zestaw funkcji do zarządzania i-węzłami w systemie plików. Na przykład i-węzły mogą być przydzielane za pomocą alloc\_inode
lub usuwane z destroy\_inode
. Możesz czytać i zapisywać i-węzły za pomocą read\_inode
i write\_inode
lub synchronizować plik system z sync\_fs
. Strukturę super\_operations
można znaleźć w ./linux/include/linux/fs.h. Każdy system plików zapewnia własne metody i-węzła, które implementują operacje i zapewniają wspólną abstrakcję dla warstwy VFS.
Struktura fizyczna
Na fizyczną strukturę systemów plików Ext2 duży wpływ wywarł układ systemu plików BSD. System plików składa się z grup bloków. Grupy bloków są analogiczne do grup cylindrów BSD FFS, jednak grupy bloków nie są powiązane z fizycznym układem bloków na dysku, ponieważ nowoczesne dyski są zwykle optymalizowane pod kątem dostępu sekwencyjnego i ukrywają swoją fizyczną geometrię przed systemem operacyjnym.
,---------+---------+---------+---------+---------,
| Boot | Block | Block | ... | Block |
| sector | group 1 | group 2 | | group n |
`---------+---------+---------+---------+---------"
Każda grupa bloków zawiera nadmiarową kopię ważnych informacji sterujących systemem plików (superblok i system plików deskryptory), a także zawiera część systemu plików (bitmapę blokową, bitmapę i-węzłów, fragment tablicy i-węzłów oraz bloki danych). W tej tabeli przedstawiono strukturę grupy bloków:
,---------+---------+---------+---------+---------+---------,
| Super | FS | Block | Inode | Inode | Data |
| block | desc. | bitmap | bitmap | table | blocks |
`---------+---------+---------+---------+---------+---------"
Korzystanie z grup bloków to duża korzyść pod względem niezawodności: ponieważ struktury kontrolne są replikowane w każdej grupie bloków, jest e asy do odzyskania z systemu plików, w którym superblok został uszkodzony. Ta struktura pomaga również uzyskać dobre wyniki: zmniejszając odległość między tabelą i-węzłów a blokami danych, można zmniejszyć liczbę poszukiwań głowicy dysku podczas operacji we / wy na plikach.
Odniesienie: – Rozszerzone systemy plików (Ext, Ext2, Ext3)
Odpowiedź
Systemy plików w Linuksie działają na kilku warstwach: A) a zestaw prymitywnych procedur do interakcji z urządzeniem (np. sterownikiem), B) zestaw rekordów na dysku odpowiadający temu, co nazywamy plikami, oraz C) informacje metadanych o każdym pliku, które są określane jako i-węzły, istnieje 1 i-węzeł dla każdego pliku. Te i-węzły śledzą takie rzeczy, jak atrybuty plików, sposób odczytu / zapisu plików itp.
Okazuje się, że to tylko niepełny obraz. To znaczy, zanim każdy system plików może zdecydować się na ułożenie swoich i-węzłów w dowolny sposób na dysku. Nawet reprezentacja i-węzłów na dysku może się różnić w różnych systemach plików – liczy się tylko to, że widok VFS jest zgodny ze strukturami i-węzłów, więc Linux nie ma per se, w jaki sposób można uzyskać dostęp do poszczególnych plików / i-węzłów w systemie plików.
Problem jest rozwiązany starannie przez użycie struktury file\_system i struct super\_block . Ten ostatni żyje na dysku, podczas gdy pierwszy żyje tylko w pamięci. Kiedy montujesz system plików używając powiedzmy,
mount -t ext4 / dev / usb1 / mnt / usb1
file\_system definiujący typ ext4 zawiera mount () , procedura, która określa, jak odczytać obiekt superbloku z dysku. Ten obiekt superbloku określa wszystko, czego potrzebujesz, aby uzyskać dostęp (przydzielanie, usuwanie, odczytywanie, poprawianie, synchronizacja między urządzeniem a pamięcią itp.) I-węzłów w urządzeniu.Po załadowaniu tego superbloku do pamięci używamy jego operacji lookup () , aby odczytać i-węzły z dysku do pamięci. Następnie używamy tych i-węzłów po kolei, aby dostać się do systemów plików. To naprawdę hierarchiczne i całkiem zgrabne!