Ext4: evoluční souborový systém

14. 7. 2008
Doba čtení: 5 minut

Sdílet

Po dvou letech vývoje se souborový systém ext4 pomalu stabilizuje, sami vývojáři mu svěřují svá data a je pomalu na čase se podívat co všechno nás čeká, protože jej budeme zřejmě potkávat čím dál častěji. Nejedná se o žádná převratná vylepšení, ale spíše evoluci v navýšení výkonu a spolehlivosti.

Úvod

Theodore Ts'o je hlavním vývojářem utilit e2fsprogs, které slouží k práci se souborovými systémy ext(2,3,4) a angažuje se i na vývoji ext4. O něm jsme minulý týden informovali, že začal tento souborový systém sám používat na svém notebooku. Píše, že sice bude zálohovat trochu častěji, ale až na jeden malý problém nenarazil na nic co by mu bránilo v práci. Ext4 přichází se spoustou vlastností zlepšující výkon a omezující fragmentaci. Nově také přichází s možností defragmentovat celý souborový systém online.

Historie

Ext4 je sice mladý souborový systém, ale jelikož vychází, stejně jako jeho předchůdci, z dlouho vyvíjené verze, tak by se dalo říct, že první verze souborového systému ext se objevila v roce 1992. Samotné ext4 začalo vznikat v roce 2006. Jedná se opět o fork stávajícího souborového systému (ext3), do kterého jsou postupně přidávány další vlastnosti. Vývojáři ext3 navrhli několik vylepšení pro svůj souborový systém a některé byly dokonce implementovány, ale další nikoli a začalo se mluvit o vytvoření další verze ext. Někteří vývojáři navrhli, že by bylo lepší, kdyby ext3 zůstalo stabilní a nové vlastnosti se implementovaly až do ní. Argumenty pro vytvoření forku nakonec vývojáře přesvědčily a do jádra 2.6.19 se přidala podpora pro ext4.

Vlastnosti

Ext4 je na novinky bohatý. Poráží i starý limit maximální velikosti oddílu, který má ext3 na hodnotě 16 TiB při velikosti 8 KiB na jeden blok. Ext4 může mít oddíl veliký 1 exabyte. Stále se daří udržet dopřednou a zpětnou kompatibilitu, takže ext3 může uživatel připojit jako ext4 a obráceně. Byl také odstraněn limit 32 000 podadresářů v adresáři. Také byla přidána online defragmentace, což je vlastnost, jejíž absence je vyčítána Linuxu velmi dlouho.

Extents

Jednou z nedůležitějších novinek souborového systému ext4 jsou extenty. Jedná se o vlastnost, která dokáže namapovat velký rozsah fyzických bloků na disku na jeden ukazatel. Takhle jde spojit až 128 MiB velký prostor s velikostí bloků 4 KiB. To vylepšuje výkon, protože souborový systém nemusí hledat jednotlivé kousky souboru na disku a všechno má napsané v jednom extentu.

Persistent pre-allocation

Ext4 také řeší nově prealokaci bloků pro jeden soubor. Doposud se pro tuto činnost používala metoda, kdy se do souboru zapsalo spousty nul a tím se alokovalo potřebné místo navíc. Do ext4 bylo kvůli tomuto problému přidáno nové systémové volání preallocate(). Takto alokované místo by nemělo být fragmentované. Toto velmi ocení databázové systémy a také programy pro záznam různých audio a video přenosů, které ukládají data postupně podle toho, jak přijdou.

Delayed allocation

Občas se stává, že otevřené soubory postupně mění svoji velikost a rostou. Souborový systém se k těmto souborům chová tak, že data, která má zapsat, zapíše, a pokud je potřeba přidat další data, tak se může stát, že budou umístěny někde jinde a vznikne fragmentovaný soubor. Ext4 se snaží tomuto zabránit tím, že oddálí samotný zápis a hledání volných bloků, co nejvíce je to možné.

Multiblock allocator

Multiblock allocator slouží k namapování velkého množství bloků, učených pro jeden soubor, v jedné operaci. Díky tomu může souborový systém najít na disku dostatečný nefragmentovaný volný prostor, kam se všechna data bez fragmentace umístí. Tato vlastnost dovoluje programům odeslat hodně bloků najednou na rozdíl od existujícího mechanismu v jádře, které dovoluje posílat bloky pouze po jednom.

Vylepšený timestamp

Linux se dostává do velmi specifických zařízení a občas některé z těchto zařízení potřebuje přesnější čas než vyjádření timestampu po vteřinách. Jádro 2.6.23 přidává nanosekundy ke stávajícímu timestampu v systému a tohoto vylepšení využívá i ext4. Jako přídavek se k sekundové části přidaly 2 bity navíc a tím se posunul problém roku 2038 o dalších 500 let.

Vylepšená kontrola souborového systému

Program e2fck může nově ignorovat bloky nealokovaného místa a tabulku inodů a soustředí se jen na části souborového systému, kde by mohla být chyba. To zrychlí kontrolu celého souborového systému.

Výkonové porovnání s reiserfs

V dnešním článku jsem se rozhodl místo bonie++, použít jiné testy, které mají blíže k realitě. Testovací stroj je s procesorem AMD Athlon X2, má k dispozici 2 GiB RAM a LVM pole na discích 120+320+320 GiB. Při každém z testu je souborový systém vytvořen znovu a je použit 7 GiB velký oddíl, který je umístěn na konci 320 GiB disku. Jádro je použito z Gentoo a ext4 je zkompilováno bez podpory rozšířených práv a SELinuxu.

Vytvoření velké adresářové struktury

V tomto testu vytvořím adresářovou strukturu s pěti adresáři a každý z těchto adresářů bude mít 50 podadresářů. Každý adresář dále obsahuje 1000 souborů s obsahem několika málo bytů. Této struktury budu dále využít u testů s kompresí, dekompresí a u kopírování malých souborů. Pro vytvoření souborů používám malý script napsaný v pythonu. Pro každý test vytvářím souborový systém znovu a data, která budou použita, tam kopíruji z jiných oddílů (/tmp).

Souborový systém real user sys
ext4 0m24.505s 0m2.788s 0m11.192s
reiserfs 0m24.381s 0m3.041s 0m20.989s

V kernel space jasně vede ext4, celkový čas vytváření je podobný.

Komprese souborů

Souborový systém real user sys
ext4 0m55.063s 0m52.581s 0m2.376s
reiserfs 0m56.443s 0m52.752s 0m3.390s

Celkový čas je opět podobný, ale s ext4 se systém se soubory méně zabývá.

Dekomprese souborů

Souborový systém real user sys
ext4 0m25.110s 0m3.140s 0m11.157s
reiserfs 0m24.330s 0m3.255s 0m20.231s

Tento test dopadl podobně jako první. Vítěz je tedy ext4.

Kopírování malých souborů

Souborový systém real user sys
ext4 0m26.331s 0m0.000s 0m0.002s
reiserfs 0m21.998s 0m0.541s 0m20.185s

Kopírování souborů se u ext4 v kernel space prakticky neprojeví. Celkový čas je ovšem horší pro ext4.

Kopírování velkých souborů

Souborový systém real user sys
ext4 0m5.995s (200 MiB) a 0m22.549s (800MiB) 0m0.005s (200 MiB) a 0m0.012s (800MiB) 0m0.572s (200 MiB) a 0m2.487s (800MiB)
reiserfs 0m5.625s (200 MiB) a 0m23.379s (800MiB) 0m0.010s (200 MiB) a 0m0.019s (800MiB) 0m1.042s (200 MiB) a 0m3.950s (800MiB)

Pro tento test jsem se rozhodl použít film Big Buck Bunny s celkovou velikostí asi 200 MiB a Elephants Dreams s velikostí 800 MiB.

ict ve školství 24

Shrnutí testů

Co se týče kernel space, tam jasně vede ext4, které se drží v jádře mnohem kratší dobu. Na druhou stranu celkový čas operace (který je ovlivněn parametry samotného disku) je velmi podobný. Ext4 má ve výkonu určitě co nabídnout.

Plánujete nasadit ext4?

Závěr

Nové vlastnosti ext4 nejsou revoluční, ale spíš evoluční. Vývojáři si vytyčili jasné a reálné cíle a těch se drží. Ext4 je s každou verzí jádra použitelnější a osobně uvažuji o jeho použití na desktopu pro systémový oddíl. Je pravděpodobné, že se začne pomalu dostávat do distribucí, které ho budou mít nastavený jako výchozí souborový systém. Ext4 se ukázal jako velmi výkonný a jeho vlastnosti by měly udržet systém rychlý i při dlouhodobějším používání.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.