Scroll to navigation

EXT4(5) File Formats Manual EXT4(5)

NAZWA

ext2 - drugi rozszerzony (ang. extended) system plików
ext3 - trzeci rozszerzony system plików
ext4 - czwarty rozszerzony system plików

OPIS

Drugi, trzeci i czwarty rozszerzone systemy plików, znane powszechnie jako ext2, ext3 i ext4, są linuksowymi systemami plików, które były historycznie domyślnymi systemami plików w wielu dystrybucjach Linuksa. Są to systemy plików ogólnego zastosowania, zaprojektowane w celu uzyskania rozszerzalności i kompatybilności wstecznej. W szczególności, systemy plików mające być uprzednio używane jako ext2 i ext3, można zamontować za pomocą sterownika systemu plików ext4. W wielu współczesnych dystrybucjach, do obsługi żądań zamontowania systemów plików ext2 i ext3, skonfigurowano właśnie sterownik systemu plików ext4.

CECHY SYSTEMU PLIKÓW

System plików sformatowany jako ext2, ext3 lub ext4 może mieć włączony pewien zestaw z poniższych cech funkcji systemu plików. Część cech nie jest obsługiwane we wszystkich implementacjach sterowników systemu plików ext2, ext3 i ext4, zależy to od używanej wersji jądra Linux. W innych systemach operacyjnych, takich jak GNU/HURD czy FreeBSD, w ich implementacjach ext2 może być obsługiwany jedynie wąski podzbiór cech systemu plików.

64bit

Umożliwia osiągnięcie przez system plików rozmiaru większego niż 2^32 bloków. Cecha ta jest w razie potrzeby włączana automatycznie, ale można ją również podać jawnie, jeśli system może wymagać zmiany rozmiaru na ponad 2^32 bloków, a był mniejszy niż ten próg, gdy go pierwotnie tworzono. Proszę zauważyć, że niektóre starsze jądra oraz starsze wersje e2fsprogs nie będą obsługiwały systemu plików z włączoną niniejszą cechą ext4.

Cecha ext4 umożliwiająca przydzielanie klastra bloków tak, że jednostką alokacji jest liczba bloków do kwadratu. Oznacza to, że każdy bit tradycyjnie będący mapą bitową alokacji bloków, teraz staje się wskaźnikiem, mówiącym czy klaster jest używany, czy też nie, przy czym klaster składa się domyślnie z 16 bloków. Cecha może zmniejszyć czas, jaki zajmuje przydzielanie bloków oraz zmniejszyć fragmentację, szczególnie w przypadku dużych plików. Rozmiar można określić opcją mke2fs -C.
Uwaga: Cecha bigalloc jest wciąż rozwijana i może nie być w pełni obsługiwana przez używane jądro oraz posiadać błędy. Szczegóły opisano na stronie internetowej http://ext4.wiki.kernel.org/index.php/Bigalloc. Opcja może interferować z opóźnioną alokacją (zob. opcję montowania nodelalloc).
Cecha wymaga włączenia funkcji extent.

Cecha ext4 zapewnia obsługę kodowania dla katalogów z włączoną flagą casefold (+F), na poziomie systemu plików. Cecha ta zachowuje nazwy na dysku, lecz pozwala aplikacjom odszukanie pliku w systemie plików za pomocą wersji równoważnej kodowania nazwy pliku.

Używa b-drzew z kluczem do przyspieszenia wyszukiwania w dużych katalogach. Jest to cecha obsługiwana w systemach plików ext3 i ext4, a ignorowana przez system plików ext2.

I-węzeł nie może mieć zwykle w ext4 więcej niż 65 000 dowiązań zwykłych (twardych). Dotyczy to zarówno zwykłych plików jak i katalogów, zatem oznacza to również, że katalog nie może posiadać więcej niż 64 998 podkatalogów (ponieważ każdy z wpisów „.” i „..”, jak również wpis katalogu w jego katalogu nadrzędnym, liczą się jako dowiązania zwykłe). Niniejsza cecha umożliwia podniesienie tego limitu, przez co ext4 użyje wartości dowiązań zwykłych równej 1 jako wskaźnika, że liczba dowiązań zwykłych do katalogu nie jest znana, gdy liczba dowiązań mogła przekroczyć maksymalny limit.

Atrybuty rozszerzone pliku wraz z powiązanymi metadanymi, muszą zwykle zmieścić się w i-węźle lub w bloku atrybutów rozszerzonych związanym z i-węzłem. Cecha ta pozwala, jeśli zajdzie taka potrzeba, na umieszczenie wartości każdego atrybutu rozszerzonego w blokach danych oddzielnego i-węzła, zwiększając limity rozmiaru i liczby atrybutów rozszerzonych na plik.

Włącza obsługę szyfrowania bloków z danymi oraz nazw plików na poziomie systemu plików. Metadane i-węzłów (znaczniki czasu, rozmiar pliku, własność użytkownika/grupy itp.) nie są szyfrowane.
Cecha ta jest najbardziej przydatna w systemach plików z wieloma użytkownikami lub gdy nie wszystkie pliki mają być zaszyfrowane. W wielu przypadkach, szczególnie w systemach używanych przez jednego użytkownika, szyfrowanie na poziomie urządzenia blokowego, za pomocą dm-crypt, może zapewnić zdecydowanie większe bezpieczeństwo.

Cecha włącza korzystanie z atrybutów rozszerzonych. Jest obsługiwana w ext2, ext3 i ext4.

Ta cecha ext4 pozwala na przechowywanie przypisań numerów bloków logicznych określonego i-węzła do bloków fizycznych na urządzeniu dyskowym w postaci drzewa ekstentów, które jest efektywniejszą strukturą danych od tradycyjnych bloków niebezpośrednich, używanych w systemach plików ext2 i ext3. Używanie drzewa ekstentów zmniejsza narzut bloków metadanych, poprawia wydajność systemu plików i zmniejsza czas potrzebny do wykonania e2fsck(8) na systemie plików (uwaga: ze względów historycznych/kompatybilności wstecznej, jako prawidłowa nazwa akceptowana jest oprócz extent także extents).

Ta cecha ext4 rezerwuje określoną ilość miejsca w każdym i-węźle na metadane, takie jak znaczniki nanosekundowe i czas utworzenia pliku, nawet jeśli aktualne jądro nie wymaga rezerwacji tak dużej przestrzeni. Bez tej cechy, jądro zarezerwuje przestrzeń na funkcje, których aktualnie potrzebuje, a reszta może być zajęta przez atrybuty rozszerzone.

W przypadku tej cechy, użyteczny rozmiar i-węzła musi wynosić co najmniej 256 bajtów.


Cecha włącza przechowywanie informacji o typie pliku we wpisach katalogu. Cecha ta jest obsługiwana w ext2, ext3 i ext4.

Ta cecha ext4 pozwala na umieszczanie metadanych grup poszczególnych bloków (mapy bitowych alokacji oraz tablic i-węzłów) w dowolnym miejscu nośnika. Dodatkowo, mke2fs(8) umieści metadane grup poszczególnych bloków razem, począwszy od pierwszej grupy bloków każdej „grupy flex_bg”. Rozmiar grupy flex_bg można określić za pomocą opcji -G.

Tworzy dziennik, aby zapewnić spójność systemu plików nawet po wystąpieniu nieprawidłowego zamknięcia. Ustawienie tej cechy systemu plików jest równoważne podaniu opcji -j programowi mke2fs(8) lub tune2fs(8). Cecha ta jest obsługiwana przez ext3 i ext4 oraz ignorowana przez sterownik systemu plików ext2.

Ta cecha ext4 pozwala na osiąganie przez pliki rozmiaru większego niż 2 terabajty.
Pozwala na przechowywanie danych w przestrzeni i-węzła i atrybutów rozszerzonych.

Ta cecha jest włączana na superbloku, znajdującym się w zewnętrznym urządzeniu dziennika. Rozmiar bloku zewnętrznego dziennika musi być taki sam, jak w przypadku używającego go systemu plików.
Zewnętrzne urządzenie dziennika może być użyte przez system plików, za pomocą opcji -J device=<urządzenie-zewnętrzne> programu mke2fs(8) lub tune2fs(8).

Cecha ta zwiększa limit liczby plików na katalog, przez zwiększenie maksymalnego rozmiaru katalogów i, w przypadku katalogów korzystających z b-drzewami z kluczem (zob. dir_index), maksymalną wysokość b-drzewa z kluczem, używanego do przechowywania wpisów katalogów.

Ten znacznik cechy jest ustawiany automatycznie przez współczesne jądra, gdy utworzy się plik o rozmiarze większym niż 2 gigabajty. Bardzo stare jądra nie potrafią obsłużyć dużych plików, zatem cecha ta służyła do zapobiegania montowania systemów plików, których stare jądra nie mogły zrozumieć.

Ta cecha ext4 włącza sumy kontrolne metadanych. Sumy kontrolne dotyczą wszystkich metadanych systemu plików (superbloku, bloków deskryptora grupy, map bitowych i-węzła i bloku, katalogów i bloków drzewa ekstentów). Algorytm sum kontrolnych używany do bloków metadanych różni się od wykorzystywanego do deskryptorów grup, przy włączonej funkcji uninit_bg. Te dwie cechy są niekompatybilne i preferowana jest cecha metadata_csum, zamiast uninit_bg.

Cecha pozwala na przechowywanie przez system plików ziarna sum kontrolnych metadanych w superbloku, co pozwala na zmianę, przez administratora, UUID-u systemu plików używającego metadata_csum, gdy jest on zamontowany.

Ta cecha ext4 pozwala na zmianę systemów plików online, bez potrzeby jawnego rezerwowania przestrzeni na wzrost rozmiaru deskryptorów grupy bloków. Schemat ten służy również do zmiany systemów plików, które mają więcej niż 2^32 bloków. Nie zaleca się ustawiania tej cechy przy tworzeniu systemu plików, ponieważ ta alternatywna metoda przechowywania bloku deskryptorów grup spowolni montowania systemu plików, a nowsze jądra mogą ją automatycznie włączyć, gdy będzie to konieczne przy dokonywaniu zmiany rozmiaru systemu plików online, gdy zabraknie przestrzeni dostępnej w zmienianym rozmiarze i-węzła.

Ta cecha ext4 udostępnia ochronę przed wielokrotnym montowaniem (ang. multiple mount protection — MMP). MMP pomaga chronić system plików przed wielokrotnym zamontowaniem i jest przydatna w środowiskach korzystających z wspólnych nośników danych.

Ta cecha ext4 udostępnia obsługę przydziałów dyskowych na projekt. Dzięki tej cesze, w zamontowanym systemie plików pilnowany będzie identyfikator projektu i-węzła.

Tworzy i-węzły przydziałów dyskowych (i-węzeł #3 do przydziałów użytkownika (userquota) i i-węzeł #4 do przydziałów grupy (group quota)) i ustawia je w superbloku. Dzięki tej cesze, w zamontowanym systemie plików przydziały będą automatycznie włączone.
Powoduje, że pliki przydziałów dyskowych (tj. user.quota i group.quota, które istniały w zaprojektowanych dawniej przydziałach dyskowych) będą ukrytymi i-węzłami.

Cecha systemu plików wskazuje, że zarezerwowano przestrzeń, dzięki której tablica deskryptora grupy bloków może być rozszerzona przy zmianie rozmiaru zamontowanego systemu plików. Operacja zmiany rozmiaru zamontowanego systemu plików jest dokonywana przez jądro, po jej wyzwoleniu za pomocą resize2fs(8). Domyślnie, mke2fs(8) postara się zarezerwować wystarczająco dużo miejsca, aby system plików mógł być zwiększony do rozmiaru 1024 razy większego niż rozmiar początkowy. Można to zmienić za pomocą rozszerzonej opcji resize.
Cecha ta wymaga włączenia cechy sparse_super lub sparse_super2.

Cecha ustawiana na wszystkich współczesnych systemach plików ext2, ext3 i ext4. Wskazuje, że kopie deskryptorów grupy bloków i superbloku są dostępne tylko w kilku grupach bloków, nie we wszystkich.

Cecha ta wskazuje, że będą występowały co najwyżej dwie kopie deskryptorów grupy bloków i superbloku. Grupy bloków przechowujące kopię/kopie deskryptorów grupy bloków i superbloku są przechowywane w superbloku, ale zwykle jedna będzie przechowywana na początku grupy bloków #1, a jeden w ostatniej grupie bloków w systemie plików. Cechy te są generalnie bardziej ekstremalną wersją sparse_super i są zaprojektowane w celu udostępnienia znacznie większej ciągłej przestrzeni dysku plikom z danymi.

Oznacza numery i-węzłów i UUID systemu plików jako stabilne. resize2fs(8) nie pozwoli na zmniejszanie systemu plików z tą cechą, a tune2fs(8) nie pozwoli na zmienianie jego UUID. Cecha ta pozwala na korzystanie z wyspecjalizowanych ustawień szyfrowania, używających numerów i-węzłów oraz UUID-u. Proszę zauważyć, że wciąż trzeba oddzielnie włączyć cechę encrypt. stable_inodes jest cechą typu „compat”, tak więc starsze jądra dozwalają ją.

Ta cecha systemu plików ext4 wskazuje, że deskryptory grupy bloków będą zabezpieczone sumami kontrolnymi, dzięki czemu mke2fs(8) może bezpiecznie utworzyć system plików bez inicjowania wszystkich grup bloków. Jądro będzie utrzymywało wartość nieużywanych i-węzłów oraz zainicjuje bloki i tablicę i-węzłów w sposób leniwy. Cecha ta przyspiesza również sprawdzanie systemu plików za pomocą e2fsck(8) oraz przyspiesza utworzenie systemu plików przy użyciu mke2fs(8).

Włącza obsługę zabezpieczeń plików verity. Pliki verity są tylko do odczytu, a ich dane są w sposób przezroczysty weryfikowane wobec drzewa Merkle, ukrytego za końcem pliku. Za pomocą skrótu korzenia drzewa Merkle, plik verity może być w sposób efektywny uwierzytelniony, niezależnie od jego rozmiaru.
Cecha jest najbardziej przydatna do uwierzytelniania ważnych plików tylko do odczytu w systemach plików do odczytu i zapisu. Jeśli sam system plików jest tylko do odczytu, to używanie dm-verity do uwierzytelnienia całego urządzenia blokowego może zapewnić znacznie wyższe bezpieczeństwo.

OPCJE MONTOWANIA

Niniejszy rozdział opisuje opcje montowania, które są typowe dla ext2, ext3 i ext4. Oprócz tego można używać ogólnych opcji montowania; więcej szczegółów w podręczniku mount(8).

Opcje montowania ext2

System plików „ext2” jest standardowym linuksowym systemem plików. Od Linuksa 2.5.46, w przypadku większości opcji, ustawienie domyślne zależy od superbloku systemu plików. Ustawia się je za pomocą tune2fs(8).

Obsługa list kontroli dostępu (ang. Access Control Lists) POSIX (lub nie). Więcej szczegółów w podręczniku acl.
Ustawia zachowanie wywołania systemowego statfs. Zachowanie minixdf zwraca w polu f_blocks całkowitą liczbę bloków w systemie plików, natomiast zachowanie bsddf (domyślne) odejmuje bloki narzutu, wykorzystywane przez system plików ext2, które nie są dostępne do przechowywania danych. Oto efekt:

% mount /k -o minixdf; df /k; umount /k

System plików 1K-bl użyte dostępne %uż zamont. na
/dev/sda6 2630655 86954 2412169 3% /k

% mount /k -o bsddf; df /k; umount /k

System plików 1K-bl użyte dostępne %uż zamont. na
/dev/sda6 2543714 13 2412169 0% /k

Proszę zauważyć, że ten przykład ukazuje dodanie opcji wiersza poleceń do opcji przekazanych w /etc/fstab.

Przy zamontowaniu nie jest dokonywane sprawdzanie. Jest to zachowanie domyślne. Jest szybkie. Rozsądnym jest wykonywać co jakiś czas e2fsck(8) np. w czasie rozruchu systemu. Zachowania inne niż domyślne nie są już obsługiwane (opcje check=normal i check=strict zostały usunięte). Proszę zauważyć, że te opcje montowania nie muszą być obsługiwane, jeśli do systemów pliku ext2 i ext3 użyto sterownika jądra ext4.
Wypisuje informacje debugowania przy każdym montowaniu (oraz ponownym montowaniu).
Określa zachowanie przy wystąpieniu błędu (odpowiednio: ignoruje błędy, oznacza system jako zawierający błędy i kontynuuje; montuje system ponownie jako tylko do odczytu; prowadzi do paniki jądra i zatrzymania systemu). Zachowanie domyślne jest ustawiane w superbloku systemu plików i można je zmienić za pomocą tune2fs(8).
Opcje te określają jaki identyfikator grupy otrzymuje nowo utworzony plik. Gdy ustawione jest grpid jest to identyfikator grupy katalogu, w którym go utworzono. W przeciwnym razie (tak jest domyślnie) otrzymuje identyfikator grupy systemu plików (fsgid) bieżącego procesu, chyba że katalog ma ustawiony bit uprawnień sgid — wówczas plik otrzymuje identyfikator grupy katalogu, w którym go utworzono, a jeśli nowy plik jest katalogiem, to dziedziczy również bit sgid.
Opcja montowania usrquota (równoważna: quota) włącza obsługę przydziałów dyskowych użytkownika w systemie plików. Opcja grpquota włącza obsługę przydziałów grup. Konieczne jest skorzystanie z narzędzi do przydziałów dyskowych, aby faktycznie włączyć i zarządzać przydziałami dyskowymi.
Wyłącza 32-bitowe UID-y i GID-y. Umożliwia to współdziałanie ze starszymi jądrami, które zachowują wartości 16-bitowe i ich oczekują.
Używa starego alokatora lub alokatora Orlov do nowych i-węzłów. Domyślny jest Orlov.
System plików ext2 rezerwuje określony procent dostępnej przestrzeni (domyślnie 5%, zob. mke2fs(8) i tune2fs(8)). Opcje te określają tego, kto może korzystać z zarezerwowanych bloków (w przybliżeniu: kto ma określony identyfikator użytkownika (resuid) lub należy do podanej grupy (resgid)).
Zamiast używania zwykłego superbloku, używa alternatywnego superbloku podanego w n. Opcja ta może się przydać, gdy podstawowy superblok został uszkodzony. Położenie superbloku zapasowego zależy od rozmiaru bloku systemu plików, liczby bloków na grupę oraz cech takich jak sparse_super.
Położenie dodatkowej kopii zapasowej superbloku może być określone poprzez użycie programu mke2fs(8) z opcją -n wypisującą położenia superbloków, przy założeniu, że programowi mke2fs(8) podano argumenty spójne z charakterystyką danego systemu plików (np. rozmiarem bloku, liczbą bloków na grupę, sparse_super itd.)
Numer bloku używa 1000 jednostek. Zatem aby użyć logicznego bloku 32768 w systemie plików z 4000 bloków, należy podać „sb=131072”.
Obsługuje (lub nie) atrybuty rozszerzone „user.”

Opcje montowania ext3

System plików ext3 jest wersją systemu plików ext2 poszerzoną o dziennikowanie. Obsługuje te same opcje co ext2, a dodatkowo następujące:

Gdy zmianie ulegną numery główne/poboczne urządzenia zewnętrznego dziennika, opcje te pozwalają wskazać nowe położenie dziennika. Urządzenie dziennika jest identyfikowane albo nowymi numerami: głównym i pobocznym zakodowanymi w numerze-urządzenia, albo ścieżką do urządzenia.
Nie ładuje dziennika przy montowaniu. Proszę zauważyć, że jeśli system plików został niepoprawnie odmontowany, to pominięcie odtworzenie dziennika spowoduje istnienie niespójności w systemie plików, co może doprowadzić do wielu problemów.
Określa tryb dziennikowania plików z danymi. Metadane są zawsze dziennikowane. Aby użyć trybu innego niż ordered w głównym systemie plików, należy przekazać tryb do jądra, jako parametr rozruchowy np. rootflags=data=journal.
Wszystkie dane są zatwierdzane do dziennika, przed zapisem do głównego systemu plików.
Tryb domyślny. Wymuszane jest zapisywanie wszystkich danych bezpośrednio do głównego systemu plików, zanim ich metadane są zatwierdzane w dzienniku.
Kolejność danych nie jest zachowywana – dane mogą być zapisywane do głównego systemu plików po zatwierdzeniu ich metadanych do dziennika. Ma to być opcja zapewniająca największą przepustowość. Gwarantuje wewnętrzną spójność systemu plików, ale może spowodować pojawienie się starych plików po załamaniu i odtworzeniu dziennika.
Gdy wystąpi błąd w buforze plików danych w trybie ordered, ogranicza się jedynie do wypisania komunikatu o błędzie.
Gdy wystąpi błąd w buforze plików danych w trybie ordered, przerywa dziennik.
Wyłącza / włącza używanie barier zapisu w kodzie jbd (urządzenia blokowego dziennika). barrier=0 wyłącza je, a barrier=1 włącza (tak jest domyślnie). Wymagany jest również stos wejścia/wyjścia potrafiący obsługiwać bariery, a jeśli jbd otrzyma błąd przy zapisie barier, ponownie wyłączy bariery wypisując ostrzeżenie. Bariery zapisu wymuszają poprawną kolejność na dysku w przypadku zatwierdzeń dziennika, co czyni dyskowe ulotne bufory zapisu bezpiecznymi do użycia, przy pewnym uszczerbku wydajności. Jeśli dyski komputera są w jakiś sposób zabezpieczone bateryjnie, wyłączenie barier może bezpiecznie zwiększyć wydajność.
Uruchamia zatwierdzenie dziennika co liczbę-sekund. Domyślna wartość to 5 sekund. Zero oznacza wartość domyślną.
Włącza rozszerzone atrybuty użytkownika. Więcej informacji w podręczniku xattr(7).
Oprócz starego systemu przydziałów dyskowych (jak w ext2, jqfmt=vfsold, inaczej quota w wersji 1) ext3 obsługuje również przydziały dziennikowane (quota w wersji 2). jqfmt=vfsv0 lub jqfmt=vfsv1 włącza przydziały dziennikowane. Mają one tę przewagę, że nawet po załamaniu systemu nie ma konieczności sprawdzania przydziałów. Gdy włączona jest cecha systemu plików quota, to przydziały dziennikowane są używane automatycznie, a ta opcja montowania jest ignorowana.
Przy przydziałach dziennikowanych (jqfmt=vfsv0 lub jqfmt=vfsv1), wymagane są opcje montowania usrjquota=aquota.user i grpjquota=aquota.group, wskazujące systemowi przydziałów pliki bazy danych przydziałów, które mają być używane. Gdy włączona jest cecha systemu plików quota, to przydziały dziennikowane są używane automatycznie, a ta opcja montowania jest ignorowana.

Opcje montowania ext4

System plików ext4 stanowi wyższy poziom zaawansowania systemu plików ext3 i zawiera usprawnienia skalowalności i niezawodności w celu obsługi dużych systemów plików.

Opcje journal_dev, journal_path, norecovery, noload, data, commit, orlov, oldalloc, [no]user_xattr, [no]acl, bsddf, minixdf, debug, errors, data_err, grpid, bsdgroups, nogrpid, sysvgroups, resgid, resuid, sb, quota, noquota, nouid32, grpquota, usrquota, usrjquota, grpjquota i jqfmt są wstecznie kompatybilne z ext3 i ext2.

Opcja journal_checksum włącza sumy kontrolne transakcji dziennika. Pozwoli to na wykrywanie błędów w jądrze przez kod odzyskiwania w e2fsck i jądrze. Jest to zmiana kompatybilna, która jest ignorowana przez starsze jądra.
Bloki zatwierdzeń mogą być zapisywane na dysk bez czekania na bloki deskryptora. Po włączeniu, starsze jądra nie będą mogły zamontować urządzenia. Powoduje wewnętrzne włączenie opcji journal_checksum.
Te opcje montowania mają taki sam skutek jak w ext3. W celu zapewnienia spójności z innymi opcjami montowania ext4 dodano opcje montowania „barrier” i „nobarrier”.

System plików ext4 domyślnie włącza bariery zapisu.

Ten parametr dostosowania kontroluje maksymalną liczbę bloków tablicy i-węzłów, którą zbuforuje algorytm odczytania z wyprzedzeniem tablicy i-węzłów ext4. Wartość musi być potęgą dwójki. Domyślną wartością są 32 bloki.
Liczba bloków systemu plików, których mballoc spróbuje użyć do przydzielenia danych i wyrównania. W przypadku systemów RAID5/6, powinna być to liczba dysków z danych * rozmiar cząstki (ang. chunk) RAID w blokach systemu plików.
Opóźnia przydzielenie bloków do czasu zapisu.
Wyłącza opóźnioną alokację. Bloki są przydzielane, gdy dane są kopiowane z bufora użytkownika do bufora strony.
Maksymalny czas, jaki ext4 powinien czekać na dodatkowe operacje systemu plików, w celu dokonania wspólnej, synchronicznej operacji zapisu. Ze względu na to, że synchroniczne operacje zapisu wymuszają zatwierdzenie, a później odczekują na zakończenie wejścia/wyjścia, nie jest to kosztowne, a może dać duży zysk przepustowości, oczekuje się niewielki czas, aby sprawdzić ewentualne inne transakcje mogące być podczepione do zapisu synchronicznego. Algorytm został zaprojektowany do automatycznego dostosowania się do szybkości dysku, mierząc czas, jaki zajmuje (przeciętnie) zakończenie zatwierdzenia transakcji. Można to nazwać „czasem zatwierdzenia”. Jeśli czas, jaki trwała transakcja był mniejszy od czasu zatwierdzenia, ext4 będzie próbował odczekać przez czas zatwierdzenia, aby sprawdzić czy inne operacje dołączą do transakcji. Czas zatwierdzenia jest ograniczony przez max_batch_time, które domyślnie wynosi 15000 µs (15 ms). Tę optymalizację można całkowicie wyłączyć ustawiając max_batch_time na 0.
Ten parametr ustawia czas zatwierdzenia (zgodnie z powyższym opisem) na minimum min_batch_time. Domyślnie wynosi to zero mikrosekund. Zwiększenie tego parametru może zwiększyć przepustowość, przy obciążeniach wielowątkowych, synchronicznych na bardzo szybkich dyskach, kosztem zwiększonych opóźnień.
Priorytet wejścia/wyjścia (od 0 do 7, gdzie 0 jest najwyższym priorytetem), który powinien być użyty do operacji wejścia/wyjścia przedkładanych przez kjournald2 podczas zatwierdzenia. Domyślnie ustawi wartość 3, czyli nieco więcej niż domyślny priorytet wejścia/wyjścia.
Symuluje efekt wywołania ext4_abort() do celów debugowania. Opcja używana zwykle przy ponownym montowaniu już zamontowanego systemu plików.
Wiele niechlujnych aplikacji nie używa fsync() przy zastępowaniu istniejących plików wzorcami takimi jak

fd = open("foo.new")/write(fd,...)/close(fd)/ rename("foo.new", "foo")

albo nawet gorzej

fd = open("foo", O_TRUNC)/write(fd,...)/close(fd).

Jeśli włączona jest opcja auto_da_alloc, to ext4 wykryje wzorce „zastąp przez zmianę nazwy” oraz „zastąp przez docięcie” i wymusi sytuację, w której odroczone przydzielenia bloków są przydzielane w ten sposób, że przy następnym zatwierdzeniu dziennika, w domyślnym trybie data=ordered, przed zatwierdzeniem operacji rename() wymuszany jest zapis bloków danych nowego pliku na dysk. To daje zbliżony poziom gwarancji jak ext3, i zapobiega problemowi „zerowej długości”, jaki może przydarzyć się przy załamaniu systemu, przed wymuszeniem bloków odroczonej alokacji na dysk.

Nie inicjuje niezainicjowanych bloków tablicy i-węzłów w tle. Funkcja przydatna na płytach instalacyjnych, dzięki czemu proces instalacji może zakończyć się tak szybko jak to możliwe; proces inicjalizacji tablicy i-węzłów będzie wtedy odroczony do następnego zamontowania systemu plików.
Leniwy kod inicjacji i-węzłów odczeka n razy liczbę milisekund, jaką zajęło wyzerowanie poprzedniej grupy bloków w tabeli i-węzłów. Minimalizowany jest w ten sposób wpływ na wydajność systemu, jaki wywiera inicjowanie tabeli i-węzłów systemu plików.
Kontroluje, czy ext4 powinien wydawać polecenia discard/TRIM do podległego urządzenia blokowego w momencie zwolnienia bloków. Przydatne do urządzeń SSD oraz rozszerzalnych LUN-ów używających plików z dziurami, lecz domyślnie jest wyłączona, do momentu aż zostanie wystarczająco dokładnie przetestowana.
Ta opcja włącza/wyłącza mechanizm jądra służący do śledzenia bloków metadanych systemu plików w wewnętrznych strukturach danych. Pozwala m.in wieloblokowemu alokatorowi na szybką lokalizację ekstentów, które mogą się nakładać na bloki metadanych systemu plików. Opcja jest przeznaczona do celów debugowania i jest domyślnie wyłączona, ponieważ negatywnie wpływa na wydajność.
Kontroluje, czy ext4 powinien używać (czy nie) blokowania odczytu DIO (bezpośredniego wejścia/wyjścia). Jeśli podano opcję dioread_nolock, to ext4 przydzieli niezainicjowany ekstent przed zapisem bufora i przekształci ekstent w celu jego zainicjowania już po ukończeniu wejścia/wyjścia. Takie podejście pozwala na uniknięcie używania przez kod ext4 zatrzasków i-węzłów, co zwiększa skalowalność na nośnikach o dużej szybkości. Nie współdziała jednak z dziennikowaniem danych, opcja dioread_nolock zostanie wówczas zignorowana, a jądro wypisze ostrzeżenie. Proszę zauważyć, że kod dioread_nolock jest używany wyłącznie do plików korzystających z ekstentów. Ze względu na wszystkie opisane ograniczenia, opcja jest domyślnie wyłączona (obowiązuje dioread_lock).
Opcja ogranicza rozmiar katalogów, a każda próba wykroczenia poza podany limit n (w kilobajtach) poskutkuje błędem ENOSPC. Jest to przydatne w środowiskach o ograniczonej pamięci operacyjnej, gdzie bardzo duże katalogi mogą spowodować poważne problemy z wydajnością, a nawet wywołać mechanizm OOM-killera (przykładowo, gdy dostępne jest tylko 512 MB pamięci, katalog o wielkości 176 MB może poważnie ograniczyć wydajność systemu).
Włącza obsługę 64-bitowej wersji i-węzłów. Opcja domyślnie wyłączona.
Opcja wyłącza korzystanie z mbcache w celu deduplikacji atrybutów rozszerzonych. W systemach, gdzie atrybuty rozszerzone są rzadko (lub nigdy) dzielone między plikami, użycie bufora mbcache do deduplikacji niepotrzebnie zwiększa narzut obliczeniowy.
Opcja montowania prjquota włącza w systemie plików obsługę przydziałów dyskowych na poziomie projektu. Konieczne jest skorzystanie z narzędzi do przydziałów dyskowych, aby faktycznie włączyć i zarządzać przydziałami dyskowymi. Niniejsza opcja montowania wymaga cechy project systemu plików.

ATRYBUTY PLIKU

Systemy plików ext2, ext3 i ext4 obsługują ustawianie następujących atrybutów plików w systemach Linux, za pomocą narzędzia chattr(1):

a - tylko dopisywanie (ang. append)

A - bez aktualizacji czasu dostępu (atime)

d - bez zrzucania (ang. dump)

D - synchroniczna aktualizacja katalogu (ang. directory)

i - niezmienialny (ang. immutable)

S - aktualizacje synchroniczne

u - odwracalne kasowanie (ang. undeletable)

Oprócz tego, systemy plików ext3 i ext4 obsługują także:

j - dziennikowanie danych (ang. journaling)

Ponadto, system plików ext4 obsługuje również:

e - format ekstentów

Opis każdego z atrybutów znajduje się w podręczniku systemowym chattr(1).

OBSŁUGA W JĄDRZE

Niniejszy rozdział opisuje sterownik systemu plików (np. ext2, ext3, ext4) oraz wersję jądra, w której dodano obsługę danej cechy systemu plików. Proszę zauważyć, że niekiedy cecha była obecna we wcześniejszych wersjach jądra, ale znane były poważne błędy. W niektórych przypadkach cecha może być wciąż uważana za eksperymentalną. Proszę również zwrócić uwagę, że w niektórych dystrybucjach przeniesiono obsługę cech do starszych jąder; w szczególności wersje jądra w niektórych „dystrybucjach biznesowych” mogą być niezwykle mylące.

ext2, 2.2.0
ext2, 2.2.0
ext2, 2.2.0
ext3, 2.4.15
ext2/ext3, 2.6.0
ext3, 2.6.0
ext3, 2.6.10 (zmiana rozmiaru online)
64bit
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 2.6.28
ext4, 3.0
ext4, 3.2
ext4, 3.6
ext4, 3.8
ext4, 3.16
ext4, 3.18
ext4, 4.1
ext4, 4.4
ext4, 4.5
ext4, 4.13
ext4, 4.13
ext4, 5.2
ext4, 5.4
ext4, 5.5

ZOBACZ TAKŻE

mke2fs(8), mke2fs.conf(5), e2fsck(8), dumpe2fs(8), tune2fs(8), debugfs(8), mount(8), chattr(1)

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

maj 2024 E2fsprogs wersja 1.47.1