Co to jest superblok, i-węzeł, dentystyka i plik?


125

Z artykułu Anatomia systemu plików Linux autorstwa M. Tima Jonesa przeczytałem, że Linux przegląda wszystkie systemy plików z perspektywy wspólnego zestawu obiektów, a obiekty te to superblok , i- węzeł , dentystyka i plik . Mimo że w pozostałej części akapitu wyjaśniono powyższe, nie było mi tak wygodnie z tym wyjaśnieniem.

Czy ktoś mógłby mi wyjaśnić te warunki?

Odpowiedzi:


136

Przede wszystkim i zdaję sobie sprawę, że to nie był jeden z terminów z twojego pytania, musisz zrozumieć metadane . W skrócie i skradzione z Wikipedii, metadane to dane o danych. To znaczy, że metadane zawierają informacje o danych. Na przykład, jeśli jestem właścicielem samochodu, to mam zestaw informacji o samochodzie, ale który nie jest częścią samego samochodu. Informacje takie jak numer rejestracyjny, marka, model, rok produkcji, informacje o ubezpieczeniu i tak dalej. Wszystkie te informacje są łącznie nazywane metadanymi. Jak widać, w systemach plików Linux i UNIX metadane istnieją na wielu poziomach organizacji.

Superblock jest zasadniczo metadane systemu plików i określa typ systemu plików, wielkości, stanu i informacji o innych struktur metadanych (metadane metadanych). Superblok ma bardzo duże znaczenie dla systemu plików i dlatego jest przechowywany w wielu nadmiarowych kopiach dla każdego systemu plików. Superblok jest strukturą metadanych bardzo „wysokiego poziomu” dla systemu plików. Na przykład, jeśli superblok partycji, / var, zostanie uszkodzony, to dany system plików (/ var) nie może zostać podłączony przez system operacyjny. Zwykle w tym wydarzeniu musisz biegaćfsckktóry automatycznie wybierze alternatywną kopię zapasową superbloku i spróbuje odzyskać system plików. Same kopie zapasowe są przechowywane w grupach bloków rozmieszczonych w systemie plików, przy czym pierwsze są przechowywane z przesunięciem o 1 blok od początku partycji. Jest to ważne w przypadku, gdy konieczne jest ręczne przywracanie. Możesz wyświetlić informacje o superblokowych kopiach zapasowych za pomocą polecenia, dumpe2fs /dev/foo | grep -i superblockktóre jest przydatne w przypadku ręcznej próby odzyskania. Załóżmy, że polecenie dumpe2fs wyświetla linię Backup superblock at 163840, Group descriptors at 163841-163841. Możemy wykorzystać te informacje oraz dodatkową wiedzę na temat struktury systemu plików, aby próbować korzystać z tej kopii zapasowej superbloku: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Należy pamiętać, że dla tego przykładu przyjęłam rozmiar 1024 bajtów.

I- węzeł istnieje w systemie plików lub w nim i reprezentuje metadane dotyczące pliku. Dla jasności wszystkie obiekty w systemie Linux lub UNIX są plikami; rzeczywiste pliki, katalogi, urządzenia i tak dalej. Należy pamiętać, że wśród metadanych zawartych w i-węźle nie ma nazwy pliku, jak myślą o tym ludzie, będzie to ważne później. I-węzeł zawiera zasadniczo informacje o własności (użytkownik, grupa), trybie dostępu (odczyt, zapis, wykonywanie uprawnień) i typ pliku.

Dentry jest klej, który trzyma węzłów i pliki razem odnosząc numery-węzła do nazwy pliku. Dentries odgrywają również rolę w buforowaniu katalogów, co idealnie utrzymuje pod ręką najczęściej używane pliki w celu szybszego dostępu. Przejście do systemu plików jest kolejnym aspektem dentystycznym, ponieważ utrzymuje on związek między katalogami i ich plikami.

Plik , oprócz tego, że to, co ludzie zwykle myśleć kiedy prezentowane ze słowem, jest naprawdę tylko blok logicznie powiązanych dowolnych danych. Stosunkowo bardzo nudny, biorąc pod uwagę całą pracę wykonaną (powyżej) w celu ich śledzenia.

W pełni zdaję sobie sprawę z tego, że kilka zdań nie zawiera pełnego wyjaśnienia któregokolwiek z tych pojęć, dlatego prosimy o dodatkowe informacje, kiedy i gdzie to konieczne.


@Tok: Czy zrzut będzie taki (jak pokazano w odpowiedzi): Superblok kopii zapasowej 163840, Deskryptory grup 163841-163841, czy też w ten sposób: Superblok kopii zapasowej 163840, Deskryptory grupy 163841-163842? Czy to był błąd literówki? :-)
Sen

@TOK: Kopia zapasowa superbloku o 163840, Deskryptory grup o 163841-163842, Jakie informacje przekazuje Deskryptory grup?
Sen

@Sen - teoretycznie deskryptory grup mogą obejmować wiele bloków, ale w przypadku większości komputerów stacjonarnych zobaczysz, że zajmują tylko jeden blok i są określane jako $ ((BackupBlock + 1)) - $ ((BackupBlock + 1))
Tok

@TOK: ok w moim systemie widzę to jak $ ((BackupBlock + 1)) - $ ((BackupBlock + 2))
Sen

@Sen - Deskryptor grupy opisuje grupę bloków. Co to znaczy? Więcej metadanych. Zasadniczo deskryptor grupy zawiera bitmapę bloków (numer bloku bitmapy alokacji bloków), bitmapę i-węzła (to samo dla i-węzłów), tablicę i-węzłów (numer bloku bloku początkowego dla tabeli i-węzłów), liczbę wolnych bloków i i-węzłów, oraz liczba używanych katalogów. Wszystko to opiera się na systemie plików ext2. Deskryptory grup są bardzo ważne dla prawidłowego działania systemu plików i są duplikowane obok superbloku.
Tok

49

Plik

Plik oznacza po prostu kilka bajtów ułożonych w określonej kolejności. Tak zwykli ludzie nazywają zawartość pliku. Kiedy Linux otwiera plik, tworzy również obiekt pliku, który przechowuje dane o tym, gdzie plik jest przechowywany i jakie procesy go wykorzystują. Obiekt pliku (ale nie same dane pliku) jest wyrzucany po zamknięciu pliku.

I-węzeł

I-węzeł (skrót od „node index”) to kilka atrybutów dotyczących pliku, który przechowuje Linux. Na każdy plik przypada jeden i-węzeł (choć w niektórych systemach plików Linux musi tworzyć własne i-węzły, ponieważ informacje są rozproszone po całym systemie plików). I-węzeł przechowuje informacje o tym, kto jest właścicielem pliku, jak duży jest ten plik i kto może go otworzyć. Każdy i-węzeł zawiera także numer unikalny dla partycji systemu plików; to jest jak numer seryjny pliku opisanego przez ten i-węzeł.

Dentystyka

Uzębienie (skrót od „wpisu do katalogu”) to jądro Linuksa używane do śledzenia hierarchii plików w katalogach. Każda dentystyka mapuje numer i-węzła na nazwę pliku i katalog macierzysty.

Superblok

Superblok jest unikalną strukturą danych w systemie plików (chociaż istnieje wiele kopii w celu ochrony przed uszkodzeniem). Superblok przechowuje metadane dotyczące systemu plików, np. Który i-węzeł jest katalogiem najwyższego poziomu oraz typ używanego systemu plików.


11

superblok , węzeł indeksu (lub i- węzeł ), pozycja katalogu (lub dentry ), a na koniec obiekt pliku jest częścią wirtualnego systemu plików (VFS) lub przełącznika wirtualnego systemu plików . Celem VFS jest umożliwienie aplikacjom klienckim dostępu do różnych rodzajów konkretnych systemów plików w jednolity sposób.

Relacje głównych obiektów w VFS

wprowadź opis zdjęcia tutaj


I- węzeł to struktura danych w systemie plików Unix / Linux. I-węzeł przechowuje metadane dotyczące zwykłego pliku, katalogu lub innego obiektu systemu plików. I-węzeł działa jako interfejs między plikami i danymi. I-węzeł może odnosić się do pliku lub katalogu lub dowiązania symbolicznego do innego obiektu. Zawiera unikalny numer (i-number), atrybuty pliku, w tym nazwę, datę, rozmiar i uprawnienia do odczytu / zapisu oraz wskaźnik do lokalizacji pliku. Jest odpowiednikiem tabeli FAT w świecie DOS / Windows.

Programy, usługi, teksty, obrazy itd. Są plikami . Urządzenia wejściowe i wyjściowe oraz ogólnie wszystkie urządzenia , zgodnie z systemem , są uważane za pliki .

Superblock jest pojemnikiem na metadanych wysokiego szczebla na temat systemu plików. Superblok jest strukturą istniejącą na dysku (w rzeczywistości, wiele miejsc na dysku dla redundancji), a także w pamięci. Stanowi podstawę do obsługi systemu plików na dysku, ponieważ określa parametry zarządzania systemem plików (na przykład całkowitą liczbę bloków, wolne bloki, główny indeks węzła).

Dentry to interfejs między plikami i i-węzłami. Dentries odgrywają również rolę w buforowaniu katalogów, co idealnie utrzymuje pod ręką najczęściej używane pliki w celu szybszego dostępu.

Źródło


5

Mówiąc prościej, dentystyka i i-węzeł to to samo, abstrakcja pliku lub katalogu. Różnice między dentystyką i i-węzłem polegają na tym, że dentystyka służy do ułatwienia operacji specyficznych dla katalogu, a i-węzeł to tylko zbiór metadanych dotyczących pliku lub katalogu. Superblock to abstrakcja systemu plików.

struct file, w jądrze Linuksa, jest źle nazwany jako wiele innych (np. struct address_space) i nie jest abstrakcją prawdziwego „pliku” (np. / etc / passwd). To oznacza otwarty „plik” lub katalog. struct filejest tworzony przez sys_openw jądrze, więc proces może mieć wiele struct files dla tego samego pliku.

Dlaczego potrzebujemy dentysty? Służy do przyspieszenia tłumaczenia z nazwy ścieżki (np. / Etc / passwd) na i-węzeł. Jądro Linux używa i-węzła do manipulowania „plikiem” lub katalogiem, a nie ich nazwą.


4

Pamiętaj, że te warunki nie są specyficzne dla systemu Linux, ale specyficzne dla systemu plików. Większość systemów plików używanych przez obecne systemy uniksowe i podobne do systemu uniksowego pochodzą albo są inspirowane oryginalnym systemem plików uniksowym, który zdefiniował idiomy superbloku i i-węzła. Linux może również montować kilka systemów plików, w których nie ma pojęcia superbloku i / lub i-węzła, najczęściej FAT. Kolejny, ZFS, nie używa superbloków, ale überblocks.


Mam nadzieję, że po tak długim czasie przeczytasz ten komentarz. Czytam, że VFS ma i-węzły i superbloki, które nie są powiązane z i-węzłami i superblokami, powiedzmy EXT2. Tak więc, aby nie pomylić tego, co powiedziałeś, z racji tego, że każdy Linux ma VFS, wszyscy powinni używać i-węzłów i superbloku, prawda?
CuriousKimchi,

1
@CuriousKimchi Pomimo tego, że mają tutaj tę samą nazwę, nie należy mylić informacji przechowywanych na dysku (superblok / i-węzły) i struktur używanych przez jądro w celu uzyskania dostępu do systemu plików i jego plików. Każdy system plików ma na dysku pewne metadane, które opisują cechy systemu plików, te metadane są używane do zapełniania struktury superbloku Linux VFS. Podobnie pliki mają strukturę i-węzłów jądra w systemie VFS. Gdy w bazowych systemach plików brakuje pojęcia i-węzła, struktura ta zawiera fałszywy numer i-węzła tworzony w locie przez system operacyjny.
jlliagre
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.