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.

bigalloc
    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.

casefold
    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.

dir_index
    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.

dir_nlink
    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.

ea_inode
    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.

encrypt
    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.

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

extent
    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).

extra_isize
    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.

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

flex_bg
    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.

has_journal
    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.

huge_file
    Ta cecha ext4 pozwala na osiąganie przez pliki rozmiaru większego niż 2 terabajty.

inline_data
    Pozwala na przechowywanie danych w przestrzeni i-węzła i atrybutów rozszerzonych.

journal_dev
    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).

large_dir
    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.

large_file
    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ć.

metadata_csum
    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.

metadata_csum_seed
    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.

meta_bg
    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.

mmp
    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.

orphan_file
    Ta funkcja ext4 eliminuje potencjalne wąskie gardło w zastosowaniach, w których następuje wiele równoległych przycięć lub rozszerzeń plików. Jest obsługiwana w jądrach Linux od wersji 5.15 oraz przez e2fsprogs od wersji 1.47.0.

project
    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.

quota
    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.

resize_inode
    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.

sparse_super
    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.

sparse_super2
    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.

stable_inodes
    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ą.

uninit_bg
    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).

verity
    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).

acl|noacl
    Obsługa list kontroli dostępu (ang. Access Control Lists) POSIX (lub nie). Więcej szczegółów w podręczniku acl.

bsddf|minixdf
    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.

check=none lub nocheck
    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.

debug
    Wypisuje informacje debugowania przy każdym montowaniu (oraz ponownym montowaniu).

errors={continue|remount-ro|panic}
    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).

grpid|bsdgroups i nogrpid|sysvgroups
    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.

grpquota|noquota|quota|usrquota
    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.

nouid32
    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ą.

oldalloc lub orlov
    Używa starego alokatora lub alokatora Orlov do nowych i-węzłów. Domyślny jest Orlov.

resgid=n i resuid=n
    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)).

sb=n
    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”.

user_xattr|nouser_xattr
    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:

journal_dev=numer-urządzenia/journal_path=ścieżka
    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.

norecovery/noload
    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.

data={journal|ordered|writeback}
    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.

    journal
        Wszystkie dane są zatwierdzane do dziennika, przed zapisem do głównego systemu plików.

    ordered
        Tryb domyślny. Wymuszane jest zapisywanie wszystkich danych bezpośrednio do głównego systemu plików, zanim ich metadane są zatwierdzane w dzienniku.

    writeback
        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.

data_err=ignore
    Gdy wystąpi błąd w buforze plików danych w trybie ordered, ogranicza się jedynie do wypisania komunikatu o błędzie.

data_err=abort
    Gdy wystąpi błąd w buforze plików danych w trybie ordered, przerywa dziennik.

barrier=0 / barrier=1
    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ść.

commit=liczba-sekund
    Uruchamia zatwierdzenie dziennika co liczbę-sekund. Domyślna wartość to 5 sekund. Zero oznacza wartość domyślną.

user_xattr
    Włącza rozszerzone atrybuty użytkownika. Więcej informacji w podręczniku xattr(7).

jqfmt={vfsold|vfsv0|vfsv1}
    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.

usrjquota=aquota.user|grpjquota=aquota.group
    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.

journal_checksum | nojournal_checksum
    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.

journal_async_commit
    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.

barrier=0 / barrier=1 / barrier / nobarrier
    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.

inode_readahead_blks=n
    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.

stripe=n
    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.

delalloc
    Opóźnia przydzielenie bloków do czasu zapisu.

nodelalloc
    Wyłącza opóźnioną alokację. Bloki są przydzielane, gdy dane są kopiowane z bufora użytkownika do bufora strony.

max_batch_time=mikrosekundy
    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.

min_batch_time=mikrosekundy
    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ń.

journal_ioprio=priorytet
    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.

abort
    Symuluje efekt wywołania ext4_abort() do celów debugowania. Opcja używana zwykle przy ponownym montowaniu już zamontowanego systemu plików.

auto_da_alloc|noauto_da_alloc
    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.

noinit_itable
    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.

init_itable=n
    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.

discard/nodiscard
    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.

block_validity/noblock_validity
    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ść.

dioread_lock/dioread_nolock
    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).

max_dir_size_kb=n
    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 MiB pamięci, katalog o wielkości 176 MiB może poważnie ograniczyć wydajność systemu).

i_version
    Włącza obsługę 64-bitowej wersji i-węzłów. Opcja domyślnie wyłączona.

nombcache
    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.

prjquota
    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.

filetype
    ext2, 2.2.0

sparse_super
    ext2, 2.2.0

large_file
    ext2, 2.2.0

has_journal
    ext3, 2.4.15

ext_attr
    ext2/ext3, 2.6.0

dir_index
    ext3, 2.6.0

resize_inode
    ext3, 2.6.10 (zmiana rozmiaru online)

64bit
    ext4, 2.6.28

dir_nlink
    ext4, 2.6.28

extent
    ext4, 2.6.28

extra_isize
    ext4, 2.6.28

flex_bg
    ext4, 2.6.28

huge_file
    ext4, 2.6.28

meta_bg
    ext4, 2.6.28

uninit_bg
    ext4, 2.6.28

mmp ext4, 3.0

bigalloc
    ext4, 3.2

quota
    ext4, 3.6

inline_data
    ext4, 3.8

sparse_super2
    ext4, 3.16

metadata_csum
    ext4, 3.18

encrypt
    ext4, 4.1

metadata_csum_seed
    ext4, 4.4

project
    ext4, 4.5

ea_inode
    ext4, 4.13

large_dir
    ext4, 4.13

casefold
    ext4, 5.2

verity
    ext4, 5.4

stable_inodes
    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
Tłumaczenie niniejszej strony podręcznika: 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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.