ext4

Velký souborový systém Souborový systém ext4 může podporovat svazky o velikosti až 1 exbibyte (EiB) a jednotlivé soubory o velikosti až 16 tebibyte (TiB) se standardní velikostí bloku 4 KiB. Omezení maximální velikosti souborů, adresářů a souborového systému rostou minimálně úměrně s velikostí bloku souborového systému až do maximální velikosti bloku 64 KiB dostupné na procesorech ARM a PowerPC/Power ISA. Extenty Extenty nahrazují tradiční schéma mapování bloků používané v systémech ext2 a ext3. Rozsah je rozsah souvislých fyzických bloků, což zlepšuje výkonnost velkých souborů a snižuje fragmentaci. Jeden extent v ext4 může mapovat až 128 MiB souvislého prostoru o velikosti bloku 4 KiB. Přímo v inodu mohou být uloženy čtyři extenty. Pokud jsou v souboru více než čtyři extenty, jsou ostatní extenty indexovány ve stromu. Zpětná kompatibilita ext4 je zpětně kompatibilní s ext3 a ext2, takže je možné připojit ext3 a ext2 jako ext4. Tím se mírně zvýší výkon, protože některé nové funkce implementace ext4 lze použít i u ext3 a ext2, například nový algoritmus přidělování bloků, aniž by byl ovlivněn formát na disku. ext3 je částečně dopředně kompatibilní s ext4. Prakticky se ext4 nepřipojí jako souborový systém ext3 po vybalení z krabice, pokud nejsou při jeho vytváření zakázány některé nové funkce, například ^extent, ^flex_bg, ^huge_file, ^uninit_bg, ^dir_nlink a ^extra_isize. Trvalé předběžné přidělení ext4 může předem přidělit místo na disku pro soubor. U většiny souborových systémů by se za tímto účelem do souboru při jeho vytvoření zapsaly nuly. V ext4 (a některých dalších souborových systémech, jako je XFS) lze použít fallocate(), nové systémové volání v jádře Linuxu. Přidělené místo by bylo garantované a pravděpodobně souvislé. Tato situace má uplatnění u streamování médií a databází. Zpožděná alokace ext4 používá výkonnostní techniku zvanou allocate-on-flush, známou také jako zpožděná alokace. To znamená, že ext4 odkládá alokaci bloků, dokud nejsou data vyprázdněna na disk. (Naproti tomu některé souborové systémy alokují bloky okamžitě, i když se data dostanou do mezipaměti pro zápis). Zpožděná alokace zvyšuje výkon a snižuje fragmentaci tím, že efektivně alokuje větší množství dat najednou. Neomezený počet podadresářů ext4 neomezuje počet podadresářů v jednom adresáři, kromě přirozeného limitu velikosti samotného adresáře. (V ext3 může mít adresář maximálně 32 000 podadresářů.) Aby bylo možné ukládat větší adresáře a zachovat výkon, zapíná ext4 v Linuxu 2.6.23 a novějších verzích ve výchozím nastavení indexy HTree (specializovaná verze stromu B), které umožňují ukládat adresáře až do velikosti přibližně 10-12 milionů záznamů v dvouúrovňovém indexu HTree a limit velikosti adresáře 2 GB při velikosti bloku 4 KiB v závislosti na délce názvu souboru. V Linuxu 4.12 a novějších verzích umožňovala funkce largedir tříúrovňové HTree a velikost adresáře nad 2 GB, což umožňovalo přibližně 6 miliard položek v jednom adresáři. Kontrolní součty žurnálu Ext4 používá kontrolní součty v žurnálu pro zvýšení spolehlivosti, protože žurnál je jedním z nejpoužívanějších souborů disku. Tato funkce má i vedlejší výhodu: během žurnálování se lze bezpečně vyhnout čekání na vstupně-výstupní operace disku, což mírně zvyšuje výkon. Inspirací pro kontrolní součty v žurnálu byl výzkumný článek z Wisconsinské univerzity s názvem IRON File Systems (konkrétně část 6 nazvaná „kontrolní součty transakcí“) s úpravami v rámci implementace složených transakcí prováděných souborovým systémem IRON (původně navrhl Sam Naghshineh na summitu RedHat). Kontrolní součty metadat Od jádra Linux 3.5 vydaného v roce 2012 Rychlejší kontrola souborového systému V ext4 jsou nealokované skupiny bloků a části tabulky inodů označeny jako takové. Díky tomu je může e2fsck zcela vynechat a výrazně zkrátit dobu potřebnou ke kontrole souborového systému. Tuto funkci implementuje Linux 2.6.24.

závislost času fsck na počtu inodů (ext3 vs. ext4)

Multiblokový alokátor Když ext3 připojuje soubor, volá blokový alokátor, pro každý blok jednou. V důsledku toho může v případě více souběžných zapisovatelů snadno dojít k fragmentaci souborů na disku. Ext4 však používá zpožděnou alokaci, což mu umožňuje ukládat data do vyrovnávací paměti a alokovat skupiny bloků. V důsledku toho může alokátor více bloků lépe rozhodovat o souvislém přidělování souborů na disku. Multiblokový alokátor lze použít také při otevírání souborů v režimu O_DIRECT. Tato funkce nemá vliv na formát disku. Vylepšené časové značky S tím, jak se počítače obecně zrychlují a jak se Linux stále více používá pro kritické aplikace, začíná být granularita časových značek založených na sekundách nedostatečná. Aby se to vyřešilo, poskytuje ext4 časové značky měřené v nanosekundách. Kromě toho jsou k nejvýznamnějším bitům pole sekund časových značek přidány 2 bity rozšířeného pole časových značek, aby se problém roku 2038 odložil o dalších 408 let. ext4 také přidává podporu časových značek času vytvoření. Ale jak upozorňuje Theodore Ts’o, zatímco je snadné přidat další pole data vytvoření do inodu (a tím technicky umožnit podporu těchto časových značek v ext4), obtížnější je upravit nebo přidat potřebná systémová volání, jako je stat() (což by pravděpodobně vyžadovalo novou verzi) a různé knihovny, které na nich závisí (například glibc). Tyto změny budou vyžadovat koordinaci mnoha projektů. Proto je datum vytvoření uložené systémem ext4 v současné době dostupné pouze uživatelským programům v systému Linux prostřednictvím rozhraní APIstatx(). Projektové kvóty Podpora projektových kvót byla přidána do linuxového jádra 4.4 dne 8. ledna 2016. Tato funkce umožňuje přiřadit limity diskových kvót konkrétnímu ID projektu. ID projektu souboru je 32bitové číslo uložené u každého souboru a dědí ho všechny soubory a podadresáře vytvořené pod nadřazeným adresářem s přiřazeným ID projektu. To umožňuje přiřadit limity kvót konkrétnímu stromu podadresářů nezávisle na přístupových oprávněních k souboru, jako jsou kvóty uživatelů a projektů, které jsou závislé na UID a GID. I když je to podobné jako u adresářové kvóty, hlavní rozdíl spočívá v tom, že stejné ID projektu může být přiřazeno více adresářům nejvyšší úrovně a není přísně hierarchické. Transparentní šifrování Podpora transparentního šifrování byla přidána do jádra Linux 4.1 v červnu 2015. Líná inicializace Funkce lazyinit umožňuje čistit inodové tabulky na pozadí, což urychluje inicializaci při vytváření nového souborového systému ext4. Je k dispozici od roku 2010 v linuxovém jádře verze 2.6.37. Bariéry zápisu ext4 ve výchozím nastavení povoluje bariéry zápisu. Zajišťuje, že metadata souborového systému jsou správně zapsána a uspořádána na disku, i když mezipaměť pro zápis ztratí výkon. To jde na vrub výkonu zejména u aplikací, které hojně používají fsync nebo vytvářejí a odstraňují mnoho malých souborů. U disků s mezipamětí pro zápis s bateriovým napájením může vypnutí bariér (volba ‚barrier=0‘) bezpečně zvýšit výkon.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.