Úvod
V 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.
Další články o souborových systémech
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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í 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 |
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í 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 |
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.
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ě.