wew2 - ext2

ext2
Deweloper(zy) Karta Remy
Pełne imię i nazwisko Drugi rozszerzony system plików
Wprowadzono Styczeń 1993 z Linuksem
Identyfikator partycji Apple_UNIX_SVR2( Apple Partition Map )
0x83( Główny rekord rozruchowy )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7( GPT )
Struktury
Zawartość katalogu Stół
Przydział plików bitmapa (wolne miejsce), tabela (metadane)
Złe bloki Stół
Limity
Maks. wielkość woluminu 2-32 TiB
Maks. rozmiar pliku 16 GiB – 2 TiB
Maks. liczba plików 10 18
Maks. długość nazwy pliku 255 bajtów
Dozwolone znaki w nazwach plików Wszystkie bajty z wyjątkiem NUL ('\0') i '/'
Cechy
Daty zarejestrowania modyfikacja (mtime), modyfikacja atrybutu (ctime), dostęp (atime)
Zakres dat 14 grudnia 1901 - 18 stycznia 2038
Rozdzielczość daty 1 s
Uprawnienia systemu plików POSIX
Przezroczysta kompresja Nie (dostępne poprzez poprawki)
Przejrzyste szyfrowanie Nie
Inne
Obsługiwane systemy operacyjne Linux , BSD , ReactOS , Windows (za pośrednictwem IFS ), macOS (za pośrednictwem IFS )

Ext2 lub drugi rozszerzony system plików jest system plików dla systemu Linux kernel . Został pierwotnie zaprojektowany przez francuskiego programistę Rémy Card jako zamiennik dla rozszerzonego systemu plików (ext). Zaprojektowany zgodnie z tymi samymi zasadami, co Berkeley Fast File System firmy BSD , był pierwszym komercyjnym systemem plików dla Linuksa.

Kanoniczną implementacją ext2 jest sterownik systemu plików "ext2fs" w jądrze Linuksa. Inne implementacje (o różnej jakości i kompletności) istnieją w GNU Hurd , MINIX 3 , niektórych jądrach BSD , w MiNT oraz jako sterowniki innych firm Microsoft Windows i macOS .

ext2 był domyślnym systemem plików w kilku dystrybucjach Linuksa , w tym w Debianie i Red Hat Linux , dopóki nie został wyparty przez ext3 , który jest prawie całkowicie kompatybilny z ext2 i jest systemem plików z dziennikiem . ext2 jest nadal preferowanym systemem plików dla nośników pamięci flash (takich jak karty SD i dyski flash USB ), ponieważ brak dziennika zwiększa wydajność i minimalizuje liczbę zapisów, a urządzenia flash mogą wytrzymać ograniczoną liczbę cykli zapisu. Od 2009 r. jądro Linuksa obsługuje tryb ext4 bez dziennika, który zapewnia korzyści niespotykane w ext2, takie jak większe rozmiary plików i woluminów.

Historia

Wczesny rozwój jądra Linuksa powstał jako cross-development pod systemem operacyjnym MINIX . System plików MINIX był używany jako pierwszy system plików Linuksa. System plików Minix był w większości wolny od błędów , ale używał wewnętrznie 16-bitowych przesunięć i dlatego miał maksymalny limit rozmiaru wynoszący tylko 64 megabajty , a także istniał limit długości nazwy pliku wynoszący 14 znaków. Z powodu tych ograniczeń rozpoczęto prace nad zastępczym macierzystym systemem plików dla systemu Linux.

Aby ułatwić dodawanie nowych systemów plików i zapewnić ogólny plik API , VFS , warstwa wirtualny system plików został dodany do jądra Linux. Rozszerzony system plików ( ext ) został wydany w kwietniu 1992 roku jako pierwszy system plików używający API VFS i został dołączony do systemu Linux w wersji 0.96c. System plików ext rozwiązał dwa główne problemy w systemie plików Minix (maksymalny rozmiar partycji i ograniczenie długości nazwy pliku do 14 znaków) i pozwolił na 2 gigabajty danych i nazwy plików o długości do 255 znaków. Ale nadal miał problemy: nie było obsługi oddzielnych znaczników czasu dla dostępu do plików, modyfikacji i- węzła i modyfikacji danych.

Jako rozwiązanie tych problemów, w styczniu 1993 roku opracowano dwa nowe systemy plików dla jądra Linuksa 0.99: xiafs i drugi rozszerzony system plików ( ext2 ), który był przeróbką rozszerzonego systemu plików, zawierającym wiele pomysłów z Berkeley Fast File System . ext2 został również zaprojektowany z myślą o rozszerzalności, pozostawiając miejsce w wielu strukturach danych na dysku do wykorzystania w przyszłych wersjach.

Od tego czasu ext2 jest platformą testową dla wielu nowych rozszerzeń API VFS. Funkcje takie jak wycofana propozycja projektu ACL POSIX i wycofana propozycja rozszerzonych atrybutów były generalnie implementowane najpierw na ext2, ponieważ było stosunkowo proste do rozszerzenia, a jego elementy wewnętrzne były dobrze zrozumiane.

W jądrach Linuksa starszych niż 2.6.17 ograniczenia w sterowniku blokowym oznaczają, że systemy plików ext2 mają maksymalny rozmiar pliku 2 TiB.

ext2 jest nadal zalecany zamiast rejestrowania systemów plików na rozruchowych dyskach flash USB i innych dyskach SSD . ext2 wykonuje mniej zapisów niż ext3, ponieważ nie ma księgowania. Ponieważ głównym czynnikiem starzenia się chipu flash jest liczba cykli kasowania, a cykle kasowania zdarzają się często podczas zapisu, zmniejszający się zapis wydłuża żywotność urządzenia półprzewodnikowego. Inną dobrą praktyką dla systemów plików na urządzeniach flash jest użycie opcji montowania bez atime , z tego samego powodu.

struktury danych ext2

Przestrzeń w ext2 jest podzielona na bloki . Bloki te są pogrupowane w grupy bloków, analogicznie do grup cylindrów w systemie plików Unix . W dużym systemie plików są zazwyczaj tysiące bloków. Tam, gdzie to możliwe, dane dla dowolnego pliku są zazwyczaj zawarte w pojedynczej grupie bloków. Ma to na celu zminimalizowanie liczby wyszukiwań dysku podczas odczytu dużych ilości ciągłych danych.

Każda grupa bloków zawiera kopię superbloku i tablicy deskryptorów grupy bloków, a wszystkie grupy bloków zawierają bitmapę bloku, bitmapę i-węzłów, tablicę i-węzłów i na koniec rzeczywiste bloki danych.

Superblok zawiera ważne informacje, które są kluczowe dla uruchomienia systemu operacyjnego . W ten sposób kopie zapasowe są tworzone w wielu grupach bloków w systemie plików. Jednak zazwyczaj podczas uruchamiania jest używana tylko pierwsza jego kopia, która znajduje się w pierwszym bloku systemu plików.

Deskryptor grupy przechowuje położenie mapy bitowej bloku, bitmapy i-węzłów oraz początek tablicy i-węzłów dla każdej grupy bloków. Te z kolei są przechowywane w tablicy deskryptorów grup.

i-węzły

Każdy plik lub katalog jest reprezentowany przez i-węzeł. Termin „i-węzeł” pochodzi od „węzła indeksu” (z czasem stał się i-węzłem, a następnie i-węzłem). I-węzeł zawiera dane dotyczące rozmiaru, uprawnień, własności i lokalizacji na dysku pliku lub katalogu.

Przykład struktury i-węzła ext2:

Estruktura

Cytat z dokumentacji jądra Linux dla ext2:

„Istnieją wskaźniki do pierwszych 12 bloków, które zawierają dane pliku w i-węźle. Jest wskaźnik do bloku pośredniego (zawierającego wskaźniki do następnego zestawu bloków), wskaźnik do bloku podwójnie pośredniego i wskaźnik do bloku potrójnie pośredni blok."

Tak więc istnieje struktura w ext2, która ma 15 wskaźników. Wskaźniki od 1 do 12 wskazują na bloki bezpośrednie, wskaźnik 13 wskazuje na blok pośredni, wskaźnik 14 wskazuje na blok podwójnie pośredni, a wskaźnik 15 wskazuje na blok potrójnie pośredni.

Katalogi

Każdy katalog to lista wpisów katalogu. Każdy wpis w katalogu kojarzy jedną nazwę pliku z jednym numerem i-węzła i składa się z numeru i-węzła, długości nazwy pliku oraz rzeczywistego tekstu nazwy pliku. Aby znaleźć plik, katalog jest przeszukiwany od przodu do tyłu w poszukiwaniu powiązanej nazwy pliku. W przypadku rozsądnych rozmiarów katalogów jest to w porządku. Ale w przypadku bardzo dużych katalogów jest to nieefektywne, a ext3 oferuje drugi sposób przechowywania katalogów ( HTree ), który jest bardziej wydajny niż tylko lista nazw plików.

Katalog główny jest zawsze przechowywany w i-węźle numer dwa, aby kod systemu plików mógł go znaleźć w czasie montowania. Podkatalogi są realizowane poprzez przechowywanie nazwy podkatalogu w polu name, a numeru i-węzła podkatalogu w polu i-węzła. Dowiązania twarde są implementowane przez przechowywanie tego samego numeru i-węzła z więcej niż jedną nazwą pliku. Dostęp do pliku przez dowolną nazwę skutkuje tym samym numerem i-węzła, a zatem tymi samymi danymi.

Specjalne katalogi „.” (katalog bieżący) i ".." (katalog nadrzędny) są implementowane przez przechowywanie nazw "." i ".." w katalogu oraz numer i-węzła katalogu bieżącego i nadrzędnego w polu i-węzła. Jedynym specjalnym traktowaniem, jakie otrzymują te dwa wpisy, jest to, że są one tworzone automatycznie po utworzeniu nowego katalogu i nie można ich usunąć.

Przydzielam dane

Kiedy tworzony jest nowy plik lub katalog, ext2 musi zdecydować, gdzie przechowywać dane. Jeśli dysk jest w większości pusty, dane można przechowywać prawie wszędzie. Jednak grupowanie danych z powiązanymi danymi zminimalizuje czas wyszukiwania i zmaksymalizuje wydajność.

ext2 próbuje przydzielić każdy nowy katalog w grupie zawierającej jego katalog nadrzędny, zgodnie z teorią, że dostęp do katalogów nadrzędnych i potomnych jest prawdopodobnie blisko spokrewniony. ext2 próbuje również umieścić pliki w tej samej grupie, co ich wpisy w katalogach, ponieważ dostęp do katalogów często prowadzi do dostępu do plików. Jeśli jednak grupa jest pełna, nowy plik lub nowy katalog jest umieszczany w innej niepełnej grupie.

Bloki danych potrzebne do przechowywania katalogów i plików można znaleźć, przeglądając bitmapę alokacji danych. Wszelkie potrzebne miejsce w tabeli i-węzłów można znaleźć, przeglądając bitmapę alokacji i-węzłów.

Ograniczenia systemu plików

Teoretyczne limity ext2 pod Linuksem
Rozmiar bloku: 1 KiB 2 KiB 4 KiB 8 KiB
max. rozmiar pliku: 16 GiB 256 GiB 2 TiB 2 TiB
max. rozmiar systemu plików: 4 TiB 8 TiB 16 TiB 32 TiB

Powodem pewnych ograniczeń ext2 jest format pliku danych i jądro systemu operacyjnego. Przeważnie te czynniki zostaną określone raz podczas budowania systemu plików. Zależą od rozmiaru bloku i stosunku liczby bloków i i-węzłów. W Linuksie rozmiar bloku jest ograniczony przez rozmiar strony architektury .

Istnieją również programy działające w przestrzeni użytkownika, które nie obsługują plików większych niż 2 GiB .

Jeśli b jest rozmiarem bloku, maksymalny rozmiar pliku jest ograniczony do min( (( b /4) 3 + ( b /4) 2  +  b /4 + 12) ×  b , (2 32  − 1) × 512 ) do struktury i_block (tablica bezpośrednich/pośrednich EXT2_N_BLOCKS) oraz i_blocks (32-bitowa wartość całkowita) reprezentująca liczbę 512-bajtowych „bloków” w pliku.

Maksymalna liczba katalogów podpoziomów to 31998, ze względu na limit liczby łączy. Indeksowanie katalogów nie jest dostępne w ext2, więc występują problemy z wydajnością dla katalogów z dużą liczbą plików (>10 000). Teoretyczny limit liczby plików w katalogu wynosi 1,3 × 10 20 , chociaż nie ma to zastosowania w praktycznych sytuacjach.

Uwaga: W systemie Linux 2.4 i wcześniejszych urządzenia blokowe były ograniczone do 2 TiB, ograniczając maksymalny rozmiar partycji, niezależnie od rozmiaru bloku.

Rozszerzenie kompresji

e2compr to modyfikacja sterownika ext2 w jądrze Linuksa do obsługi kompresji i dekompresji plików przez system plików, bez żadnej obsługi przez aplikacje użytkownika. e2compr to mała łatka przeciwko ext2.

e2compr kompresuje tylko zwykłe pliki; dane administracyjne (superblok, i-węzły, pliki katalogów itp.) nie są kompresowane (głównie ze względów bezpieczeństwa). Dostęp do skompresowanych bloków jest zapewniony dla operacji odczytu i zapisu. Algorytm kompresji i rozmiar klastra jest określony na podstawie na plik. Katalogi można również oznaczyć do kompresji, w którym to przypadku każdy nowo utworzony plik w katalogu zostanie automatycznie skompresowany z tym samym rozmiarem klastra i tym samym algorytmem, który został określony dla katalogu.

e2compr nie jest nowym systemem plików. Jest to tylko łatka do ext2 stworzona do obsługi flagi EXT2_COMPR_FL. Nie wymaga od użytkownika tworzenia nowej partycji i będzie kontynuował odczytywanie lub zapisywanie istniejących systemów plików ext2. Można to uznać po prostu za sposób, w jaki procedury odczytu i zapisu uzyskują dostęp do plików, które mogły zostać utworzone za pomocą prostego narzędzia podobnego do gzip lub kompresji. Skompresowane i nieskompresowane pliki dobrze współistnieją na partycjach ext2.

Najnowsza gałąź e2compr jest dostępna dla bieżących wersji Linuksa 2.4, 2.6 i 3.0. Najnowsza poprawka dla systemu Linux 3.0 została wydana w sierpniu 2011 r. i zapewnia obsługę wielu rdzeni i dużej ilości pamięci . Istnieją również gałęzie dla Linuksa 2.0 i 2.2.

W innych systemach operacyjnych

Dostęp do partycji ext2 w systemie Microsoft Windows jest możliwy poprzez instalowalny system plików , taki jak ext2ifs lub ext2Fsd . System plików w przestrzeni użytkownika może być używany w systemie macOS.

Zobacz też

Bibliografia

Uwagi

Dalsza lektura

Linki zewnętrzne