Co to jest Superblock w systemie plików Linux?


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!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *