Velký test osmi linuxových souborových systémů

28. 7. 2008
Doba čtení: 9 minut

Sdílet

Tento test si klade za cíl prověřit praktické použití jednotlivých linuxových souborových systémů a ukázat, který se hodí pro kterou práci nejvíce. Podrobili jsme 8 souborových systémů patnácti testům, které by měly simulovat skutečné použití disku a souborového systému. Pojďme se podívat na výsledky.

Úvod

předchozích článcích věnujících se souborovým systémům jsem se snažil vytvořit testovací nástroj, který by mi umožnil jednoduše porovnat všechny souborové systémy, které můžeme na Linuxu používat. Nakonec se mi podařilo dát dohromady několik testů, které podle mě prověří praktické vlastnosti každého souborového systému. Výběr toho správného na desktop je často sázkou do loterie. Na každý oddíl bude vhodnější jiný a nikdy předem nevíme, co budeme dělat s desktopem za rok. Na serveru je situace jednoduší, protože často slouží jedinému a předem danému účelu a podle jeho „papírových“ vlastností se už můžeme vhodně rozhodnout. Výkon, ale neomezuje jenom souborový systém, ale i třeba jeho nadměrná velikost tam, kde není potřeba.

Metodika

Pro testování jsem použil P III na 1 GHz s 256 MB RAM. Na starším hardwaru by se měly rozdíly mezi jednotlivými souborovými systémy projevit víc. Test jednoho souborového systému zabere 20 až 30 minut. Na stroji byla nasazena distribuce Gentoo. Zůstaly běžet jen nejdůležitější služby, které byly nutné pro přístup do systému. Souborové systémy byly zkompilovány přímo do jádra kromě reiser4 a btrfs, které jsem zkompiloval jako moduly. Jako disk byl použit Seagate 320 GB a testovací oddíl měl 40 GiB. Rychlost, kterou ukazoval hdparm -t, se pohybovala kolem 61.70 MiB/sec. Testy byly sepsány do jednoho pythoního skriptu.

K samotnému testování byl použit systémový portage strom, generátor malých souborů a filmy Elephants Dream (800 MiB) a Big Buck Bunny (600 MiB). Jednotlivé testy jsou:

  • Kopírování portage stromu
  • Komprese portage stromu
  • Dekomprese portage stromu
  • Přesunutí portage stromu
  • Smazání portage stromu
  • Obsazené místo před a po nakopírování portage
  • Vytváření malých souborů
  • Komprese malých souborů
  • Dekomprese malých souborů
  • Přesunutí malých souborů
  • Smazání malých souborů
  • Kopírování Elephants Dream (815 MiB)
  • Kopírování Big Buck Bunny (692 MiB)
  • Smazání Elephants Dream (815 MiB)
  • Smazání Big Buck Bunny (692 MiB)

Tabulky a grafy

Ve všech tabulkách a grafech je menší hodnota lepší.

Testy s portage

Kopírování portage stromu

Kopírování portage stromu
FS real user sys
ext3 3m9.106s 0m2.027s 0m27.775s
ext2 2m29.699s 0m1.991s 0m24.024s
reiser4 2m16.395s 0m2.358s 0m37.977s
ext4dev 2m21.533s 0m2.109s 0m28.585s
reiserfs 2m41.940s 0m2.182s 0m43.282s
jfs 3m23.146s 0m2.259s 0m31.740s
xfs 9m14.478s 0m2.657s 0m40.846s
btrfs 2m46.492s 0m2.581s 0m55.027s
Kopírování portage stromu

Komprese portage stromu

Komprese portage stromu
FS real user sys
ext3 9m57.767s 8m8.655s 0m24.594s
ext2 8m51.711s 8m8.333s 0m23.894s
reiser4 9m12.332s 8m7.205s 0m28.373s
ext4dev 10m30.593s 8m8.018s 0m25.759s
reiserfs 8m40.531s 8m8.231s 0m23.568s
jfs 9m58.196s 8m11.071s 0m25.401s
xfs 9m10.476s 8m9.333s 0m25.293s
btrfs 9m28.492s 8m7.885s 0m36.882s
Komprese portage stromu

Dekomprese portage stromu

Dekomprese portage stromu
FS real user sys
ext3 4m5.129s 2m23.517s 0m30.023s
ext2 3m29.240s 2m21.809s 0m26.282s
reiser4 4m22.445s 2m24.754s 1m0.386s
ext4dev 3m38.910s 2m23.653s 0m33.020s
reiserfs 3m58.428s 2m24.052s 1m5.503s
jfs 6m12.137s 2m23.223s 0m36.740s
xfs 10m49.349s 2m24.357s 0m59.455s
btrfs 4m56.327s 2m24.719s 1m37.829s
Dekomprese portage stromu

Přesunutí portage stromu

Přesunutí portage stromu
FS real user sys
ext3 0m0.098s 0m0.000s 0m0.006s
ext2 0m0.167s 0m0.000s 0m0.005s
reiser4 0m0.079s 0m0.002s 0m0.005s
ext4dev 0m0.096s 0m0.001s 0m0.005s
reiserfs 0m0.082s 0m0.001s 0m0.007s
jfs 0m0.081s 0m0.000s 0m0.005s
xfs 0m0.081s 0m0.002s 0m0.004s
btrfs 0m0.124s 0m0.001s 0m0.004s
Přesunutí portage stromu

Smazání portage stromu

Smazání portage stromu
FS real user sys
ext3 0m0.004s 0m0.000s 0m0.004s
ext2 0m0.004s 0m0.000s 0m0.003s
reiser4 0m0.004s 0m0.001s 0m0.001s
ext4dev 0m0.004s 0m0.001s 0m0.002s
reiserfs 0m0.004s 0m0.000s 0m0.003s
jfs 0m0.004s 0m0.002s 0m0.001s
xfs 0m0.004s 0m0.001s 0m0.003s
btrfs 0m0.005s 0m0.000s 0m0.004s
Smazání portage stromu

Shrnutí testů s portage

U těchto testů se nejvíce projeví práce s malými soubory. Strom portage obsahuje i zdrojové kódy, takže se projeví i práce se soubory většími. Z testů plyne, že nejvíce se pro portage hodí souborový systém reiser4 nebo reiserfs. Nejhorší variantou je pak xfs.

Obsazené místo před a po nakopírování portage

Použité místo (při práci s portage)
FS Před kopírováním Po kopírování Metadata du -h du -h –apparent-size
ext3 177 MiB 918 MiB 741 MiB 667 MiB 354M
ext2 48 MiB 790 MiB 742 MiB 667 MiB 354M
reiser4 1,4 MiB 382 MiB 380,6 MiB 667 MiB 354M
ext4dev 177 MiB 918 MiB 741 MiB 667 MiB 354M
reiserfs 33 MiB 423 MiB 390 MiB 667 MiB 354M
jfs 4,8 MiB 767 MiB 762,2 MiB 667 MiB 354M
xfs 4,2 MiB 713 MiB 708 MiB 667 MiB 354M
btrfs 40 KiB 454 MiB 453 MiB 667 MiB 354M
Použité místo

V obsazeném prostoru se všechny souborové systémy vyrovnaly. Pouze jfs jde mírně výš než ostatní. Bohužel reiser4, reiserfs a btrfs počítají obsazené místo „špatně“. Všechny tři jsou obsazeny z menší části, než je skutečná velikost dat na nich. Zkoušel jsem test dělat třikrát a vždycky to dopadlo stejně i přes to, že jsem po nakopírování dat zavolal „sync“ a použil „umount/mount“. U reiser4 a reiserfs si to vysvětluji tak, že se jedná o ocásky, které ještě nejsou naplněny, ale opravdu si tím nejsem jistý. Btrfs je záhada ještě větší. Skutečnou velikost portage jsem zjistil přes „du -h“ a zaplnění souborového systému přes „df -h“.

Testy s malými soubory

Vytváření malých souborů

Vytváření malých souborů
FS real user sys
ext3 0m28.366s 0m6.001s 0m15.949s
ext2 0m30.981s 0m5.679s 0m18.417s
reiser4 0m25.475s 0m6.487s 0m17.489s
ext4dev 0m30.639s 0m6.557s 0m17.929s
reiserfs 0m43.428s 0m7.452s 0m32.042s
jfs 1m26.015s 0m7.627s 0m21.983s
xfs 6m58.591s 0m12.813s 0m44.306s
btrfs 0m49.024s 0m6.671s 0m39.440s
Vytváření malých souborů

Komprese malých souborů

Komprese malých souborů
FS real user sys
ext3 4m10.331s 1m28.498s 0m14.766s
ext2 1m50.545s 1m20.390s 0m13.347s
reiser4 1m22.848s 1m16.763s 0m5.862s
ext4dev 4m19.018s 1m27.723s 0m15.308s
reiserfs 1m30.797s 1m19.632s 0m9.641s
jfs 2m23.699s 1m14.523s 0m15.420s
xfs 2m0.181s 1m15.992s 0m17.441s
btrfs 1m46.479s 1m19.876s 0m15.297s
Komprese malých souborů

Dekomprese malých souborů

Dekomprese malých souborů
FS real user sys
ext3 0m35.481s 0m11.608s 0m16.619s
ext2 0m33.944s 0m8.967s 0m18.580s
reiser4 0m24.893s 0m8.530s 0m15.496s
ext4dev 0m34.782s 0m11.884s 0m17.265s
reiserfs 1m24.936s 0m9.891s 1m11.441s
jfs 1m23.991s 0m9.362s 0m16.516s
xfs 7m5.473s 0m11.823s 0m41.109s
btrfs 0m55.270s 0m9.748s 0m42.688s
Dekomprese malých souborů

Přesunutí malých souborů

Přesunutí malých souborů
FS real user sys
ext3 0m0.070s 0m0.002s 0m0.002s
ext2 0m0.054s 0m0.001s 0m0.004s
reiser4 0m0.043s 0m0.001s 0m0.004s
ext4dev 0m0.070s 0m0.000s 0m0.004s
reiserfs 0m0.054s 0m0.001s 0m0.004s
jfs 0m0.084s 0m0.001s 0m0.003s
xfs 0m0.054s 0m0.004s 0m0.001s
btrfs 0m0.332s 0m0.001s 0m0.023s
Přesunutí malých souborů

Smazání malých souborů

Smazání malých souborů
FS real user sys
ext3 0m7.174s 0m0.094s 0m4.855s
ext2 0m4.578s 0m0.077s 0m1.974s
reiser4 0m20.130s 0m0.125s 0m19.693s
ext4dev 0m8.074s 0m0.082s 0m5.531s
reiserfs 0m15.028s 0m0.099s 0m14.677s
jfs 0m40.884s 0m0.135s 0m9.361s
xfs 5m28.756s 0m0.328s 0m27.351s
btrfs 0m29.300s 0m0.127s 0m23.925s
Smazání malých souborů

Shrnutí testů s malými soubory

Nejlépe si v těchto testech vedly reiserfs, reiser4, ext2 a btrfs. Velmi pomalou práci s malými soubory ukázalo xfs.

Testy s velkými soubory

Kopírování Elephants Dream (815 MiB)

Kopírování Elephants Dream (815 MiB)
FS real user sys
ext3 0m39.531s 0m0.101s 0m13.054s
ext2 0m37.742s 0m0.062s 0m10.858s
reiser4 0m38.874s 0m0.085s 0m13.470s
ext4dev 0m38.966s 0m0.093s 0m13.840s
reiserfs 0m42.305s 0m0.087s 0m16.022s
jfs 0m38.312s 0m0.081s 0m11.518s
xfs 0m38.252s 0m0.087s 0m11.583s
btrfs 0m46.749s 0m0.093s 0m16.647s
Kopírování Elephants Dream (815 MiB)

Kopírování Big Buck Bunny (692 MiB)

Kopírování Big Buck Bunny (692 MiB)
FS real user sys
ext3 0m35.307s 0m0.059s 0m11.199s
ext2 0m31.835s 0m0.060s 0m9.257s
reiser4 0m33.586s 0m0.071s 0m11.635s
ext4dev 0m33.941s 0m0.067s 0m11.770s
reiserfs 0m36.015s 0m0.077s 0m13.685s
jfs 0m32.600s 0m0.062s 0m9.668s
xfs 0m32.951s 0m0.070s 0m9.856s
btrfs 0m38.962s 0m0.086s 0m14.332s
Kopírování Big Buck Bunny (692 MiB)

Smazání Elephants Dream (815 MiB)

Smazání Elephants Dream (815 MiB)
FS real user sys
ext3 0m0.697s 0m0.002s 0m0.152s
ext2 0m0.647s 0m0.001s 0m0.068s
reiser4 0m0.119s 0m0.001s 0m0.066s
ext4dev 0m0.256s 0m0.001s 0m0.172s
reiserfs 0m0.363s 0m0.001s 0m0.330s
jfs 0m0.103s 0m0.000s 0m0.035s
xfs 0m0.118s 0m0.001s 0m0.057s
btrfs 0m0.731s 0m0.001s 0m0.028s
Smazání Elephants Dream (815 MiB)

Smazání Big Buck Bunny (692 MiB)

Smazání Big Buck Bunny (692 MiB)
FS real user sys
ext3 0m0.255s 0m0.000s 0m0.123s
ext2 0m0.604s 0m0.000s 0m0.071s
reiser4 0m0.149s 0m0.002s 0m0.072s
ext4dev 0m0.222s 0m0.002s 0m0.153s
reiserfs 0m0.331s 0m0.002s 0m0.283s
jfs 0m0.094s 0m0.001s 0m0.033s
xfs 0m0.126s 0m0.000s 0m0.056s
btrfs 0m1.010s 0m0.001s 0m0.043s
Smazání Big Buck Bunny (692 MiB)

Shrnutí testů s velkými soubory

Pro velké soubory se nejvíce hodí jfs, xfs, reiser4 a ext4. Naopak velký výkonnostní propad mají btrfs, ext2 a ext3.

ict ve školství 24

Shrnutí všech testů

Pro většinu nasazení je nejvhodnější Reiser4. Jeho výsledky byly v testech opravdu vynikající. Bohužel stav, ve kterém se nachází, není zrovna ideální. Překvapilo mě, jak pomalu pracuje xfs s malými soubory. Ten rozdíl oproti ostatním je opravdu velký (až 30×). Od btrfs jsem nečekal žádné zázraky, ale i přes svůj vývojový stav si některých testech vedlo opravdu dobře. Ext4 se drželo v závěsu za Reiser4, a proto ho mohu doporučit na většinu běžného nasazení, stejně jako Reiser4.

Závěr

Při práci se soubory je nejvíce limitující hardware a pokud nepočítám některé neúspěchy xfs, tak mezi jednotlivými souborovými nebyl zas takový rozdíl. Tyto testy simulují maximální zatížení a potřeby většiny jejich uživatelů budou mnohem níže než výkon, který lze ztratit. Proto si myslím, že nejdůležitější je vybrat takový souborový systém, který udrží data v bezpečí při výpadcích proudu a na výkon hledět až na druhém místě.

Pomůže vám test s výběrem souborového systému?

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