EXT4(5) File Formats Manual EXT4(5) NAZWA ext2 - drugi rozszerzony (ang. extended) system plikow ext3 - trzeci rozszerzony system plikow ext4 - czwarty rozszerzony system plikow OPIS Drugi, trzeci i czwarty rozszerzone systemy plikow, znane powszechnie jako ext2, ext3 i ext4, sa linuksowymi systemami plikow, ktore byly historycznie domyslnymi systemami plikow w wielu dystrybucjach Linuksa. Sa to systemy plikow ogolnego zastosowania, zaprojektowane w celu uzyskania rozszerzalnosci i kompatybilnosci wstecznej. W szczegolnosci, systemy plikow majace byc uprzednio uzywane jako ext2 i ext3, mozna zamontowac za pomoca sterownika systemu plikow ext4. W wielu wspolczesnych dystrybucjach, do obslugi zadan zamontowania systemow plikow ext2 i ext3, skonfigurowano wlasnie sterownik systemu plikow ext4. CECHY SYSTEMU PLIKOW System plikow sformatowany jako ext2, ext3 lub ext4 moze miec wlaczony pewien zestaw z ponizszych cech funkcji systemu plikow. Czesc cech nie jest obslugiwane we wszystkich implementacjach sterownikow systemu plikow ext2, ext3 i ext4, zalezy to od uzywanej wersji jadra Linux. W innych systemach operacyjnych, takich jak GNU/HURD czy FreeBSD, w ich implementacjach ext2 moze byc obslugiwany jedynie waski podzbior cech systemu plikow. 64bit Umozliwia osiagniecie przez system plikow rozmiaru wiekszego niz 2^32 blokow. Cecha ta jest w razie potrzeby wlaczana automatycznie, ale mozna ja rowniez podac jawnie, jesli system moze wymagac zmiany rozmiaru na ponad 2^32 blokow, a byl mniejszy niz ten prog, gdy go pierwotnie tworzono. Prosze zauwazyc, ze niektore starsze jadra oraz starsze wersje e2fsprogs nie beda obslugiwaly systemu plikow z wlaczona niniejsza cecha ext4. bigalloc Cecha ext4 umozliwiajaca przydzielanie klastra blokow tak, ze jednostka alokacji jest liczba blokow do kwadratu. Oznacza to, ze kazdy bit tradycyjnie bedacy mapa bitowa alokacji blokow, teraz staje sie wskaznikiem, mowiacym czy klaster jest uzywany, czy tez nie, przy czym klaster sklada sie domyslnie z 16 blokow. Cecha moze zmniejszyc czas, jaki zajmuje przydzielanie blokow oraz zmniejszyc fragmentacje, szczegolnie w przypadku duzych plikow. Rozmiar mozna okreslic opcja mke2fs -C. OSTRZEZENIE: Cecha bigalloc jest wciaz rozwijana i moze nie byc w pelni obslugiwana przez uzywane jadro oraz posiadac bledy. Szczegoly opisano na stronie internetowej http://ext4.wiki.kernel.org/index.php/Bigalloc. Opcja moze interferowac z opozniona alokacja (zob. opcje montowania nodelalloc). Cecha wymaga wlaczenia funkcji extent. casefold Cecha ext4 zapewnia obsluge kodowania dla katalogow z wlaczona flaga casefold (+F), na poziomie systemu plikow. Cecha ta zachowuje nazwy na dysku, lecz pozwala aplikacjom odszukanie pliku w systemie plikow za pomoca wersji rownowaznej kodowania nazwy pliku. dir_index Uzywa b-drzew z kluczem do przyspieszenia wyszukiwania w duzych katalogach. Jest to cecha obslugiwana w systemach plikow ext3 i ext4, a ignorowana przez system plikow ext2. dir_nlink I-wezel nie moze miec zwykle w ext4 wiecej niz 65 000 dowiazan zwyklych (twardych). Dotyczy to zarowno zwyklych plikow jak i katalogow, zatem oznacza to rowniez, ze katalog nie moze posiadac wiecej niz 64 998 podkatalogow (poniewaz kazdy z wpisow ,,." i ,,..", jak rowniez wpis katalogu w jego katalogu nadrzednym, licza sie jako dowiazania zwykle). Niniejsza cecha umozliwia podniesienie tego limitu, przez co ext4 uzyje wartosci dowiazan zwyklych rownej 1 jako wskaznika, ze liczba dowiazan zwyklych do katalogu nie jest znana, gdy liczba dowiazan mogla przekroczyc maksymalny limit. ea_inode Atrybuty rozszerzone pliku wraz z powiazanymi metadanymi, musza zwykle zmiescic sie w i-wezle lub w bloku atrybutow rozszerzonych zwiazanym z i-wezlem. Cecha ta pozwala, jesli zajdzie taka potrzeba, na umieszczenie wartosci kazdego atrybutu rozszerzonego w blokach danych oddzielnego i-wezla, zwiekszajac limity rozmiaru i liczby atrybutow rozszerzonych na plik. encrypt Wlacza obsluge szyfrowania blokow z danymi oraz nazw plikow na poziomie systemu plikow. Metadane i-wezlow (znaczniki czasu, rozmiar pliku, wlasnosc uzytkownika/grupy itp.) nie sa szyfrowane. Cecha ta jest najbardziej przydatna w systemach plikow z wieloma uzytkownikami lub gdy nie wszystkie pliki maja byc zaszyfrowane. W wielu przypadkach, szczegolnie w systemach uzywanych przez jednego uzytkownika, szyfrowanie na poziomie urzadzenia blokowego, za pomoca dm-crypt, moze zapewnic zdecydowanie wieksze bezpieczenstwo. ext_attr Cecha wlacza korzystanie z atrybutow rozszerzonych. Jest obslugiwana w ext2, ext3 i ext4. extent Ta cecha ext4 pozwala na przechowywanie przypisan numerow blokow logicznych okreslonego i-wezla do blokow fizycznych na urzadzeniu dyskowym w postaci drzewa ekstentow, ktore jest efektywniejsza struktura danych od tradycyjnych blokow niebezposrednich, uzywanych w systemach plikow ext2 i ext3. Uzywanie drzewa ekstentow zmniejsza narzut blokow metadanych, poprawia wydajnosc systemu plikow i zmniejsza czas potrzebny do wykonania e2fsck(8) na systemie plikow (uwaga: ze wzgledow historycznych/kompatybilnosci wstecznej, jako prawidlowa nazwa akceptowana jest oprocz extent takze extents). extra_isize Ta cecha ext4 rezerwuje okreslona ilosc miejsca w kazdym i-wezle na metadane, takie jak znaczniki nanosekundowe i czas utworzenia pliku, nawet jesli aktualne jadro nie wymaga rezerwacji tak duzej przestrzeni. Bez tej cechy, jadro zarezerwuje przestrzen na funkcje, ktorych aktualnie potrzebuje, a reszta moze byc zajeta przez atrybuty rozszerzone. W przypadku tej cechy, uzyteczny rozmiar i-wezla musi wynosic co najmniej 256 bajtow. filetype Cecha wlacza przechowywanie informacji o typie pliku we wpisach katalogu. Cecha ta jest obslugiwana w ext2, ext3 i ext4. flex_bg Ta cecha ext4 pozwala na umieszczanie metadanych grup poszczegolnych blokow (mapy bitowych alokacji oraz tablic i-wezlow) w dowolnym miejscu nosnika. Dodatkowo, mke2fs(8) umiesci metadane grup poszczegolnych blokow razem, poczawszy od pierwszej grupy blokow kazdej ,,grupy flex_bg". Rozmiar grupy flex_bg mozna okreslic za pomoca opcji -G. has_journal Tworzy dziennik, aby zapewnic spojnosc systemu plikow nawet po wystapieniu nieprawidlowego zamkniecia. Ustawienie tej cechy systemu plikow jest rownowazne podaniu opcji -j programowi mke2fs(8) lub tune2fs(8). Cecha ta jest obslugiwana przez ext3 i ext4 oraz ignorowana przez sterownik systemu plikow ext2. huge_file Ta cecha ext4 pozwala na osiaganie przez pliki rozmiaru wiekszego niz 2 terabajty. inline_data Pozwala na przechowywanie danych w przestrzeni i-wezla i atrybutow rozszerzonych. journal_dev Ta cecha jest wlaczana na superbloku, znajdujacym sie w zewnetrznym urzadzeniu dziennika. Rozmiar bloku zewnetrznego dziennika musi byc taki sam, jak w przypadku uzywajacego go systemu plikow. Zewnetrzne urzadzenie dziennika moze byc uzyte przez system plikow, za pomoca opcji -J device= programu mke2fs(8) lub tune2fs(8). large_dir Cecha ta zwieksza limit liczby plikow na katalog, przez zwiekszenie maksymalnego rozmiaru katalogow i, w przypadku katalogow korzystajacych z b-drzewami z kluczem (zob. dir_index), maksymalna wysokosc b-drzewa z kluczem, uzywanego do przechowywania wpisow katalogow. large_file Ten znacznik cechy jest ustawiany automatycznie przez wspolczesne jadra, gdy utworzy sie plik o rozmiarze wiekszym niz 2 gigabajty. Bardzo stare jadra nie potrafia obsluzyc duzych plikow, zatem cecha ta sluzyla do zapobiegania montowania systemow plikow, ktorych stare jadra nie mogly zrozumiec. metadata_csum Ta cecha ext4 wlacza sumy kontrolne metadanych. Sumy kontrolne dotycza wszystkich metadanych systemu plikow (superbloku, blokow deskryptora grupy, map bitowych i-wezla i bloku, katalogow i blokow drzewa ekstentow). Algorytm sum kontrolnych uzywany do blokow metadanych rozni sie od wykorzystywanego do deskryptorow grup, przy wlaczonej funkcji uninit_bg. Te dwie cechy sa niekompatybilne i preferowana jest cecha metadata_csum, zamiast uninit_bg. metadata_csum_seed Cecha pozwala na przechowywanie przez system plikow ziarna sum kontrolnych metadanych w superbloku, co pozwala na zmiane, przez administratora, UUID-u systemu plikow uzywajacego metadata_csum, gdy jest on zamontowany. meta_bg Ta cecha ext4 pozwala na zmiane systemow plikow online, bez potrzeby jawnego rezerwowania przestrzeni na wzrost rozmiaru deskryptorow grupy blokow. Schemat ten sluzy rowniez do zmiany systemow plikow, ktore maja wiecej niz 2^32 blokow. Nie zaleca sie ustawiania tej cechy przy tworzeniu systemu plikow, poniewaz ta alternatywna metoda przechowywania bloku deskryptorow grup spowolni montowania systemu plikow, a nowsze jadra moga ja automatycznie wlaczyc, gdy bedzie to konieczne przy dokonywaniu zmiany rozmiaru systemu plikow online, gdy zabraknie przestrzeni dostepnej w zmienianym rozmiarze i-wezla. mmp Ta cecha ext4 udostepnia ochrone przed wielokrotnym montowaniem (ang. multiple mount protection -- MMP). MMP pomaga chronic system plikow przed wielokrotnym zamontowaniem i jest przydatna w srodowiskach korzystajacych z wspolnych nosnikow danych. orphan_file Ta funkcja ext4 eliminuje potencjalne waskie gardlo w zastosowaniach, w ktorych nastepuje wiele rownoleglych przyciec lub rozszerzen plikow. Jest obslugiwana w jadrach Linux od wersji 5.15 oraz przez e2fsprogs od wersji 1.47.0. project Ta cecha ext4 udostepnia obsluge przydzialow dyskowych na projekt. Dzieki tej cesze, w zamontowanym systemie plikow pilnowany bedzie identyfikator projektu i-wezla. quota Tworzy i-wezly przydzialow dyskowych (i-wezel #3 do przydzialow uzytkownika (userquota) i i-wezel #4 do przydzialow grupy (group quota)) i ustawia je w superbloku. Dzieki tej cesze, w zamontowanym systemie plikow przydzialy beda automatycznie wlaczone. Powoduje, ze pliki przydzialow dyskowych (tj. user.quota i group.quota, ktore istnialy w zaprojektowanych dawniej przydzialach dyskowych) beda ukrytymi i-wezlami. resize_inode Cecha systemu plikow wskazuje, ze zarezerwowano przestrzen, dzieki ktorej tablica deskryptora grupy blokow moze byc rozszerzona przy zmianie rozmiaru zamontowanego systemu plikow. Operacja zmiany rozmiaru zamontowanego systemu plikow jest dokonywana przez jadro, po jej wyzwoleniu za pomoca resize2fs(8). Domyslnie, mke2fs(8) postara sie zarezerwowac wystarczajaco duzo miejsca, aby system plikow mogl byc zwiekszony do rozmiaru 1024 razy wiekszego niz rozmiar poczatkowy. Mozna to zmienic za pomoca rozszerzonej opcji resize. Cecha ta wymaga wlaczenia cechy sparse_super lub sparse_super2. sparse_super Cecha ustawiana na wszystkich wspolczesnych systemach plikow ext2, ext3 i ext4. Wskazuje, ze kopie deskryptorow grupy blokow i superbloku sa dostepne tylko w kilku grupach blokow, nie we wszystkich. sparse_super2 Cecha ta wskazuje, ze beda wystepowaly co najwyzej dwie kopie deskryptorow grupy blokow i superbloku. Grupy blokow przechowujace kopie/kopie deskryptorow grupy blokow i superbloku sa przechowywane w superbloku, ale zwykle jedna bedzie przechowywana na poczatku grupy blokow #1, a jeden w ostatniej grupie blokow w systemie plikow. Cechy te sa generalnie bardziej ekstremalna wersja sparse_super i sa zaprojektowane w celu udostepnienia znacznie wiekszej ciaglej przestrzeni dysku plikom z danymi. stable_inodes Oznacza numery i-wezlow i UUID systemu plikow jako stabilne. resize2fs(8) nie pozwoli na zmniejszanie systemu plikow z ta cecha, a tune2fs(8) nie pozwoli na zmienianie jego UUID. Cecha ta pozwala na korzystanie z wyspecjalizowanych ustawien szyfrowania, uzywajacych numerow i-wezlow oraz UUID-u. Prosze zauwazyc, ze wciaz trzeba oddzielnie wlaczyc ceche encrypt. stable_inodes jest cecha typu ,,compat", tak wiec starsze jadra dozwalaja ja. uninit_bg Ta cecha systemu plikow ext4 wskazuje, ze deskryptory grupy blokow beda zabezpieczone sumami kontrolnymi, dzieki czemu mke2fs(8) moze bezpiecznie utworzyc system plikow bez inicjowania wszystkich grup blokow. Jadro bedzie utrzymywalo wartosc nieuzywanych i-wezlow oraz zainicjuje bloki i tablice i-wezlow w sposob leniwy. Cecha ta przyspiesza rowniez sprawdzanie systemu plikow za pomoca e2fsck(8) oraz przyspiesza utworzenie systemu plikow przy uzyciu mke2fs(8). verity Wlacza obsluge zabezpieczen plikow verity. Pliki verity sa tylko do odczytu, a ich dane sa w sposob przezroczysty weryfikowane wobec drzewa Merkle, ukrytego za koncem pliku. Za pomoca skrotu korzenia drzewa Merkle, plik verity moze byc w sposob efektywny uwierzytelniony, niezaleznie od jego rozmiaru. Cecha jest najbardziej przydatna do uwierzytelniania waznych plikow tylko do odczytu w systemach plikow do odczytu i zapisu. Jesli sam system plikow jest tylko do odczytu, to uzywanie dm-verity do uwierzytelnienia calego urzadzenia blokowego moze zapewnic znacznie wyzsze bezpieczenstwo. OPCJE MONTOWANIA Niniejszy rozdzial opisuje opcje montowania, ktore sa typowe dla ext2, ext3 i ext4. Oprocz tego mozna uzywac ogolnych opcji montowania; wiecej szczegolow w podreczniku mount(8). Opcje montowania ext2 System plikow ,,ext2" jest standardowym linuksowym systemem plikow. Od Linuksa 2.5.46, w przypadku wiekszosci opcji, ustawienie domyslne zalezy od superbloku systemu plikow. Ustawia sie je za pomoca tune2fs(8). acl | noacl Obsluga list kontroli dostepu (ang. Access Control Lists) POSIX (lub nie). Wiecej szczegolow w podreczniku acl(5). bsddf | minixdf Ustawia zachowanie wywolania systemowego statfs. Zachowanie minixdf zwraca w polu f_blocks calkowita liczbe blokow w systemie plikow, natomiast zachowanie bsddf (domyslne) odejmuje bloki narzutu, wykorzystywane przez system plikow ext2, ktore nie sa dostepne do przechowywania danych. Oto efekt: % mount /k -o minixdf; df /k; umount /k System plikow 1K-bl uzyte dostepne %uz zamont. na /dev/sda6 2630655 86954 2412169 3% /k % mount /k -o bsddf; df /k; umount /k System plikow 1K-bl uzyte dostepne %uz zamont. na /dev/sda6 2543714 13 2412169 0% /k Prosze zauwazyc, ze ten przyklad ukazuje dodanie opcji wiersza polecen do opcji przekazanych w /etc/fstab. check=none | nocheck Przy zamontowaniu nie jest dokonywane sprawdzanie. Jest to zachowanie domyslne. Jest szybkie. Rozsadnym jest wykonywac co jakis czas e2fsck(8) np. w czasie rozruchu systemu. Zachowania inne niz domyslne nie sa juz obslugiwane (opcje check=normal i check=strict zostaly usuniete). Prosze zauwazyc, ze te opcje montowania nie musza byc obslugiwane, jesli do systemow pliku ext2 i ext3 uzyto sterownika jadra ext4. debug Wypisuje informacje debugowania przy kazdym montowaniu (oraz ponownym montowaniu). errors={continue|remount-ro|panic} Okresla zachowanie przy wystapieniu bledu (odpowiednio: ignoruje bledy, oznacza system jako zawierajacy bledy i kontynuuje; montuje system ponownie jako tylko do odczytu; prowadzi do paniki jadra i zatrzymania systemu). Zachowanie domyslne jest ustawiane w superbloku systemu plikow i mozna je zmienic za pomoca tune2fs(8). grpid | bsdgroups i nogrpid | sysvgroups Opcje te okreslaja jaki identyfikator grupy otrzymuje nowo utworzony plik. Gdy ustawione jest grpid jest to identyfikator grupy katalogu, w ktorym go utworzono. W przeciwnym razie (tak jest domyslnie) otrzymuje identyfikator grupy systemu plikow (fsgid) biezacego procesu, chyba ze katalog ma ustawiony bit uprawnien sgid -- wowczas plik otrzymuje identyfikator grupy katalogu, w ktorym go utworzono, a jesli nowy plik jest katalogiem, to dziedziczy rowniez bit sgid. grpquota | usrquota | quota | noquota Opcja montowania usrquota (rownowazna: quota) wlacza obsluge przydzialow dyskowych uzytkownika w systemie plikow. Opcja grpquota wlacza obsluge przydzialow grup. Konieczne jest skorzystanie z narzedzia quota(1), aby faktycznie wlaczyc i zarzadzac przydzialami dyskowymi. nouid32 Wylacza 32-bitowe UID-y i GID-y. Umozliwia to wspoldzialanie ze starszymi jadrami, ktore zachowuja wartosci 16-bitowe i ich oczekuja. oldalloc | orlov Uzywa starego alokatora lub alokatora Orlov do nowych i-wezlow. Domyslny jest Orlov. resgid=n i resuid=n System plikow ext2 rezerwuje okreslony procent dostepnej przestrzeni (domyslnie 5%, zob. mke2fs(8) i tune2fs(8) ). Opcje te okreslaja tego, kto moze korzystac z zarezerwowanych blokow (w przyblizeniu: kto ma okreslony identyfikator uzytkownika (resuid) lub nalezy do podanej grupy (resgid)). sb=n Zamiast uzywania zwyklego superbloku, uzywa alternatywnego superbloku podanego w n. Opcja ta moze sie przydac, gdy podstawowy superblok zostal uszkodzony. Polozenie superbloku zapasowego zalezy od rozmiaru bloku systemu plikow, liczby blokow na grupe oraz cech takich jak sparse_super. Polozenie dodatkowej kopii zapasowej superbloku moze byc okreslone poprzez uzycie programu mke2fs(8) z opcja -n wypisujaca polozenia superblokow, przy zalozeniu, ze programowi mke2fs(8) podano argumenty spojne z charakterystyka danego systemu plikow (np. rozmiarem bloku, liczba blokow na grupe, sparse_super itd.) Numer bloku uzywa 1000 jednostek. Zatem aby uzyc logicznego bloku 32768 w systemie plikow z 4000 blokow, nalezy podac ,,sb=131072". user_xattr | nouser_xattr Obsluguje (lub nie) atrybuty rozszerzone ,,user." Opcje montowania ext3 System plikow ext3 jest wersja systemu plikow ext2 poszerzona o dziennikowanie. Obsluguje te same opcje co ext2, a dodatkowo nastepujace: journal_dev=numer-urzadzenia | journal_path=sciezka Gdy zmianie ulegna numery glowne/poboczne urzadzenia zewnetrznego dziennika, opcje te pozwalaja wskazac nowe polozenie dziennika. Urzadzenie dziennika jest identyfikowane albo nowymi numerami: glownym i pobocznym zakodowanymi w numerze-urzadzenia, albo sciezka do urzadzenia. norecovery | noload Nie laduje dziennika przy montowaniu. Prosze zauwazyc, ze jesli system plikow zostal niepoprawnie odmontowany, to pominiecie odtworzenie dziennika spowoduje istnienie niespojnosci w systemie plikow, co moze doprowadzic do wielu problemow. data={journal|ordered|writeback} Okresla tryb dziennikowania plikow z danymi. Metadane sa zawsze dziennikowane. Aby uzyc trybu innego niz ordered w glownym systemie plikow, nalezy przekazac tryb do jadra, jako parametr rozruchowy np. rootflags=data=journal. journal Wszystkie dane sa zatwierdzane do dziennika, przed zapisem do glownego systemu plikow. ordered Tryb domyslny. Wymuszane jest zapisywanie wszystkich danych bezposrednio do glownego systemu plikow, zanim ich metadane sa zatwierdzane w dzienniku. writeback Kolejnosc danych nie jest zachowywana - dane moga byc zapisywane do glownego systemu plikow po zatwierdzeniu ich metadanych do dziennika. Ma to byc opcja zapewniajaca najwieksza przepustowosc. Gwarantuje wewnetrzna spojnosc systemu plikow, ale moze spowodowac pojawienie sie starych plikow po zalamaniu i odtworzeniu dziennika. data_err={abort|ignore} Gdy wystapi blad w buforze plikow danych w trybie ordered: Gdy data_err=abort, przerywa dziennik. Gdy data_err=ignore, jedynie wypisuje blad. barrier={0|1} Wylacza / wlacza uzywanie barier zapisu w kodzie jbd (urzadzenia blokowego dziennika). barrier=0 wylacza je, a barrier=1 wlacza (tak jest domyslnie). Wymagany jest rowniez stos wejscia/wyjscia potrafiacy obslugiwac bariery, a jesli jbd otrzyma blad przy zapisie barier, ponownie wylaczy bariery wypisujac ostrzezenie. Bariery zapisu wymuszaja poprawna kolejnosc na dysku w przypadku zatwierdzen dziennika, co czyni dyskowe ulotne bufory zapisu bezpiecznymi do uzycia, przy pewnym uszczerbku wydajnosci. Jesli dyski komputera sa w jakis sposob zabezpieczone bateryjnie, wylaczenie barier moze bezpiecznie zwiekszyc wydajnosc. commit=liczba-sekund Uruchamia zatwierdzenie dziennika co liczbe-sekund. Domyslna wartosc to 5 sekund. Zero oznacza wartosc domyslna. user_xattr Wlacza rozszerzone atrybuty uzytkownika. Wiecej informacji w podreczniku xattr(7). jqfmt={vfsold|vfsv0|vfsv1} Oprocz starego systemu przydzialow dyskowych (jak w ext2, jqfmt=vfsold, inaczej quota w wersji 1) ext3 obsluguje rowniez przydzialy dziennikowane (quota w wersji 2). jqfmt=vfsv0 lub jqfmt=vfsv1 wlacza przydzialy dziennikowane. Maja one te przewage, ze nawet po zalamaniu systemu nie ma koniecznosci sprawdzania przydzialow. Gdy wlaczona jest cecha systemu plikow quota, to przydzialy dziennikowane sa uzywane automatycznie, a ta opcja montowania jest ignorowana. usrjquota=aquota.user | grpjquota=aquota.group Przy przydzialach dziennikowanych (jqfmt=vfsv0 lub jqfmt=vfsv1), wymagane sa opcje montowania usrjquota=aquota.user i grpjquota=aquota.group, wskazujace systemowi przydzialow pliki bazy danych przydzialow, ktore maja byc uzywane. Gdy wlaczona jest cecha systemu plikow quota, to przydzialy dziennikowane sa uzywane automatycznie, a ta opcja montowania jest ignorowana. Opcje montowania ext4 System plikow ext4 stanowi wyzszy poziom zaawansowania systemu plikow ext3 i zawiera usprawnienia skalowalnosci i niezawodnosci w celu obslugi duzych systemow plikow. 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 sa wstecznie kompatybilne z ext3 i ext2. journal_checksum | nojournal_checksum Opcja journal_checksum wlacza sumy kontrolne transakcji dziennika. Pozwoli to na wykrywanie bledow w jadrze przez kod odzyskiwania w e2fsck(8) i jadrze. Jest to zmiana kompatybilna, ktora jest ignorowana przez starsze jadra. journal_async_commit Bloki zatwierdzen moga byc zapisywane na dysk bez czekania na bloki deskryptora. Po wlaczeniu, starsze jadra nie beda mogly zamontowac urzadzenia. Powoduje wewnetrzne wlaczenie opcji journal_checksum. barrier={0|1} | barrier | nobarrier Te opcje montowania maja taki sam skutek jak w ext3. W celu zapewnienia spojnosci z innymi opcjami montowania ext4 dodano opcje montowania \fBbarrier i nobarrier. System plikow ext4 domyslnie wlacza bariery zapisu. inode_readahead_blks=n Ten parametr dostosowania kontroluje maksymalna liczbe blokow tablicy i-wezlow, ktora zbuforuje algorytm odczytania z wyprzedzeniem tablicy i-wezlow ext4. Wartosc musi byc potega dwojki. Domyslna wartoscia sa 32 bloki. stripe=n Liczba blokow systemu plikow, ktorych mballoc sprobuje uzyc do przydzielenia danych i wyrownania. W przypadku systemow RAID5/6, powinna byc to liczba dyskow z danych * rozmiar czastki (ang. chunk) RAID w blokach systemu plikow. delalloc Opoznia przydzielenie blokow do czasu zapisu. nodelalloc Wylacza opozniona alokacje. Bloki sa przydzielane, gdy dane sa kopiowane z bufora uzytkownika do bufora strony. max_batch_time=maks-mikrosekund Maksymalny czas, jaki ext4 powinien czekac na dodatkowe operacje systemu plikow, w celu dokonania wspolnej, synchronicznej operacji zapisu. Ze wzgledu na to, ze synchroniczne operacje zapisu wymuszaja zatwierdzenie, a pozniej odczekuja na zakonczenie wejscia/wyjscia, nie jest to kosztowne, a moze dac duzy zysk przepustowosci, oczekuje sie niewielki czas, aby sprawdzic ewentualne inne transakcje mogace byc podczepione do zapisu synchronicznego. Algorytm zostal zaprojektowany do automatycznego dostosowania sie do szybkosci dysku, mierzac czas, jaki zajmuje (przecietnie) zakonczenie zatwierdzenia transakcji. Mozna to nazwac ,,czasem zatwierdzenia". Jesli czas, jaki trwala transakcja byl mniejszy od czasu zatwierdzenia, ext4 bedzie probowal odczekac przez czas zatwierdzenia, aby sprawdzic czy inne operacje dolacza do transakcji. Czas zatwierdzenia jest ograniczony przez maks-mikrosekund, ktore domyslnie wynosi 15000 s (15 ms). Te optymalizacje mozna calkowicie wylaczyc ustawiajac max_batch_time=0. min_batch_time=min-mikrosekund Ten parametr ustawia czas zatwierdzenia (zgodnie z powyzszym opisem) na co najmniej min-mikrosekund. Domyslnie wynosi to zero mikrosekund. Zwiekszenie tego parametru moze zwiekszyc przepustowosc, przy obciazeniach wielowatkowych, synchronicznych na bardzo szybkich dyskach, kosztem zwiekszonych opoznien. journal_ioprio=priorytet Priorytet wejscia/wyjscia (od 0 do 7, gdzie 0 jest najwyzszym priorytetem), ktory powinien byc uzyty do operacji wejscia/wyjscia przedkladanych przez kjournald2 podczas zatwierdzenia. Domyslnie ustawi wartosc 3, czyli nieco wiecej niz domyslny priorytet wejscia/wyjscia. abort Symuluje efekt wywolania ext4_abort() do celow debugowania. Opcja uzywana zwykle przy ponownym montowaniu juz zamontowanego systemu plikow. auto_da_alloc | noauto_da_alloc Wiele niechlujnych aplikacji nie uzywa fsync() przy zastepowaniu istniejacych plikow 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). Jesli wlaczona jest opcja auto_da_alloc, to ext4 wykryje wzorce ,,zastap przez zmiane nazwy" oraz ,,zastap przez dociecie" i wymusi sytuacje, w ktorej odroczone przydzielenia blokow sa przydzielane w ten sposob, ze przy nastepnym zatwierdzeniu dziennika, w domyslnym trybie data=ordered, przed zatwierdzeniem operacji rename() wymuszany jest zapis blokow danych nowego pliku na dysk. To daje zblizony poziom gwarancji jak ext3, i zapobiega problemowi ,,zerowej dlugosci", jaki moze przydarzyc sie przy zalamaniu systemu, przed wymuszeniem blokow odroczonej alokacji na dysk. noinit_itable Nie inicjuje niezainicjowanych blokow tablicy i-wezlow w tle. Funkcja przydatna na plytach instalacyjnych, dzieki czemu proces instalacji moze zakonczyc sie tak szybko jak to mozliwe; proces inicjalizacji tablicy i-wezlow bedzie wtedy odroczony do nastepnego zamontowania systemu plikow. init_itable=n Leniwy kod inicjacji i-wezlow odczeka n razy liczbe milisekund, jaka zajelo wyzerowanie poprzedniej grupy blokow w tabeli i-wezlow. Minimalizowany jest w ten sposob wplyw na wydajnosc systemu, jaki wywiera inicjowanie tabeli i-wezlow systemu plikow. discard | nodiscard Kontroluje, czy ext4 powinien wydawac polecenia discard/TRIM do podleglego urzadzenia blokowego w momencie zwolnienia blokow. Przydatne do urzadzen SSD oraz rozszerzalnych LUN-ow uzywajacych plikow z dziurami, lecz domyslnie jest wylaczona, do momentu az zostanie wystarczajaco dokladnie przetestowana. block_validity | noblock_validity Ta opcja wlacza/wylacza mechanizm jadra sluzacy do sledzenia blokow metadanych systemu plikow w wewnetrznych strukturach danych. Pozwala m.in wieloblokowemu alokatorowi na szybka lokalizacje ekstentow, ktore moga sie nakladac na bloki metadanych systemu plikow. Opcja jest przeznaczona do celow debugowania i jest domyslnie wylaczona, poniewaz negatywnie wplywa na wydajnosc. dioread_lock | dioread_nolock Kontroluje, czy ext4 powinien uzywac (czy nie) blokowania odczytu DIO (bezposredniego wejscia/wyjscia). Jesli podano opcje dioread_nolock, to ext4 przydzieli niezainicjowany ekstent przed zapisem bufora i przeksztalci ekstent w celu jego zainicjowania juz po ukonczeniu wejscia/wyjscia. Takie podejscie pozwala na unikniecie uzywania przez kod ext4 zatrzaskow i-wezlow, co zwieksza skalowalnosc na nosnikach o duzej szybkosci. Nie wspoldziala jednak z dziennikowaniem danych, opcja dioread_nolock zostanie wowczas zignorowana, a jadro wypisze ostrzezenie. Prosze zauwazyc, ze kod dioread_nolock jest uzywany wylacznie do plikow korzystajacych z ekstentow. Ze wzgledu na wszystkie opisane ograniczenia, opcja jest domyslnie wylaczona (obowiazuje dioread_lock). max_dir_size_kb=n Opcja ogranicza rozmiar katalogow, a kazda proba wykroczenia poza podany limit n (w kilobajtach) poskutkuje bledem ENOSPC. Jest to przydatne w srodowiskach o ograniczonej pamieci operacyjnej, gdzie bardzo duze katalogi moga spowodowac powazne problemy z wydajnoscia, a nawet wywolac mechanizm OOM-killera (przykladowo, gdy dostepne jest tylko 512 MiB pamieci, katalog o wielkosci 176 MiB moze powaznie ograniczyc wydajnosc systemu). i_version Wlacza obsluge 64-bitowej wersji i-wezlow. Opcja domyslnie wylaczona. nombcache Opcja wylacza korzystanie z mbcache w celu deduplikacji atrybutow rozszerzonych. W systemach, gdzie atrybuty rozszerzone sa rzadko (lub nigdy) dzielone miedzy plikami, uzycie bufora mbcache do deduplikacji niepotrzebnie zwieksza narzut obliczeniowy. prjquota Opcja wlacza w systemie plikow obsluge przydzialow dyskowych na poziomie projektu. Konieczne jest skorzystanie z quota(1), aby faktycznie wlaczyc i zarzadzac przydzialami dyskowymi. Niniejsza opcja montowania wymaga cechy project systemu plikow. ATRYBUTY PLIKU Systemy plikow ext2, ext3 i ext4 obsluguja ustawianie nastepujacych atrybutow plikow w systemach Linux, za pomoca narzedzia chattr(1): a - tylko dopisywanie (ang. append) A - bez aktualizacji czasu dostepu (atime) d - bez zrzucania (ang. dump) D - synchroniczna aktualizacja katalogu (ang. directory) i - niezmienialny (ang. immutable) S - aktualizacje synchroniczne u - odwracalne kasowanie (ang. undeletable) Oprocz tego, systemy plikow ext3 i ext4 obsluguja takze: j - dziennikowanie danych (ang. journaling) Ponadto, system plikow ext4 obsluguje rowniez: e - format ekstentow Opis kazdego z atrybutow znajduje sie w podreczniku systemowym chattr(1). OBSLUGA W JADRZE Niniejszy rozdzial opisuje sterownik systemu plikow (np. ext2, ext3, ext4) oraz wersje jadra, w ktorej dodano obsluge danej cechy systemu plikow. Prosze zauwazyc, ze niekiedy cecha byla obecna we wczesniejszych wersjach jadra, ale znane byly powazne bledy. W niektorych przypadkach cecha moze byc wciaz uwazana za eksperymentalna. Prosze rowniez zwrocic uwage, ze w niektorych dystrybucjach przeniesiono obsluge cech do starszych jader; w szczegolnosci wersje jadra w niektorych ,,dystrybucjach biznesowych" moga byc niezwykle mylace. 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 fast_commit ext4 5.10 orphan_file ext4 5.15 ZOBACZ TAKZE mke2fs(8), mke2fs.conf(5), e2fsck(8), dumpe2fs(8), tune2fs(8), debugfs(8), mount(8), chattr(1) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . E2fsprogs wersja 1.47.4 marzec 2025 EXT4(5)