Fájlrendszerek (ext3, ext4, xfs) és RAID összehasonlítás

2011. február 20. vasárnap - kepes

Új Tárhelypark szerverünk telepítésekor nagy dilemma volt milyen fájlrendszert válasszunk, illetve maradjunk a már bevált hardveres SATA1 RAID vezérlőnél, vagy versenybe szállhat az alaplapi SATA2 RAID vezérlő is. Aránylag olcsó megoldást szerettünk volna, így most hardveres SATA2 raidvezérlőre nem gondoltunk.  Az Internetet böngészve számos forrást találtunk mindkét fő kérdésben pro és kontra egyaránt, és további problémát okozott a döntésben, hogy egyes cikkek igen régiek, ez által elavultak lehetnek. Az eredményeket egy Google Docs táblázatban összefoglaltam, ezt fogom egy picit elemezgetni.

A teszt környezet

A teszt szerver konfigurációja a következő volt. Egyedül a Hardwer RAID és Szoftver RAID teszteléséhez volt különbség a konfigurációban, ahol a RAID kártyát értelemszerűen csak a tesztek egyik részénél használtuk.

Processzor Intel Core i5 760
Memória 16 GB Kingston DDR3-1333
Alaplap Intle LGA 1156 Platform Intel H55 Express chipset
Merevlemez 4db Seagate ST31000528AS
RAID kártya Adaptec 2410SA 64Mb cache (write-thrught)
Alaplapi HDD vezérlő
Intel® H55 Express Chipset built-in 6 xSATA 3.0 Gb/s ports
Operációs rendszer CentOs 5.5
Kernel Linux version 2.6.18
RAID level RAID10

A szoftveres RAID-hez a Linux-ban támogatott Multiple Device Drivert (Linux Software Raid – md parancs) használtuk.

Teszt szoftver

A teszt végrehajtásához a bonnie++ 1.96-os verzióját használtuk. Ebben több tesztet is összeállítottam, melyek lényegét az alábbi táblázat tartalmazza.

Bonnie test for IO performance Csak az adatátvitel tesztelésére, nem történik fájl létrehozás
Testing with zero size files in directories Üres fájlok kezelése könyvtárakba rendezve
Testing with tiny files Kicsi, 10 bájtos fájlok kezelése könyvtárakba rendezve
Testing with max 100Kb files with directorie Maximum 100kb méretű (véletlen méret) fájlok kezelése. Véleményem szerint ez hasonlít a legjobban egy web szerver működésére, főleg tárhely szolgáltatásra cPanel-el
Testing with 100Kb to 1Mb files with directories Fájlok kezelése könyvtárakban 100kb és 1Mb közötti méretben véletlenszerűen. Ez a teszt szerintem jó közelítés MySQL adatbázis kezelő szerverhez.
Testing with 16Mb size files 16Mb méretű fájlok kezelése. Archiváló szerver működésének szimulálására

Minden tesztelt kikapcsolt és bekapcsolt gyorsítótárral (buffer) is lefuttattam, bár normál működésnél a buffer mindíg be van kapcsolva, így valójában csak ez az érdekes. A tesztek az összes fájlrendszeren lefutottak, mind szoftver mind pedig hardver RAID-et használva.

Az érdekesség kedvéért teszteltem az ext2-es fájlrendszert is, bár ezt éles környezetben nem szeretnénk használni, hiszen nem naplózó fájlrendszer.

A teszt szkript


MOUNT=/var/lib/vz
SIZE=32042
LOG=bonnie.log
SYSTEM=soft_raid_ext4
date >> $LOG
echo "Bonnie test for IO performance" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 0 -u 0 -r 4092 -s $SIZE -f -b -d $MOUNT >> $LOG
echo "Testing with zero size files in directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 50:0:0:50 -u 0 -r 4092 -s 0 -b -d $MOUNT >> $LOG
echo "Testing with tiny files" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 50:10:1:20 -u 0 -r 4092 -s 0 -b -d $MOUNT >> $LOG
echo "Testing with max 100Kb files with directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 30:100000:0:30 -u 0 -r 4092 -s 0 -b -d $MOUNT >> $LOG
echo "Testing with 100Kb to 1Mb files with directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 30:1000000:100000:30 -u 0 -r 4092 -s 0 -b -d $MOUNT >> $LOG
echo "Testing with 16Mb size files" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 1:17000000:17000000:10 -u 0 -r 4092 -s 0 -b -d $MOUNT >> $LOG
echo "--- Testing with buffer ---" >> $LOG
echo "Bonnie test for IO performance" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 0 -u 0 -r 4092 -s $SIZE -f -d $MOUNT >> $LOG
echo "Testing with zero size files in directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 50:0:0:50 -u 0 -r 4092 -s 0 -d $MOUNT >> $LOG
echo "Testing with tiny files" >> $LOG
echo "Testing with max 100Kb files with directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 30:100000:0:30 -u 0 -r 4092 -s 0 -d $MOUNT >> $LOG
sync; time bonnie++ -m $SYSTEM -n 50:10:1:20 -u 0 -r 4092 -s 0 -d $MOUNT >> $LOG
echo "Testing with 100Kb to 1Mb files with directories" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 30:1000000:100000:30 -u 0 -r 4092 -s 0 -d $MOUNT >> $LOG
echo "Testing with 16Mb size files" >> $LOG
sync; time bonnie++ -m $SYSTEM -n 1:17000000:17000000:10 -u 0 -r 4092 -s 0 -d $MOUNT >> $LOG
echo "--- end ---" >> $LOG


Mit vártunk a teszttől

Az Internetes információk begyűjtése közben a következő lényeges észrevételeket és kérdéseket tettük, melyekre választ kerestünk:

  • Melyik fájlrendszer mire alkalmas, melyik a legmegfelelőbb webszerver, mail szerver, MySQL szerver futtatására vagy adatmentésre.
  • Igaz-e a legenda, hogy mindegy a fájlrendszernek, hogy SATA1 vagy SATA2 a vezérlő, mivel a merevlemez fizikai sebessége a korlát, nem az átviteli sebesség
  • Melyik megoldás mennyire biztonságos, igaz-e, hogy a hardware RAID biztonságosabb például merevlemez kiesése vagy áramkimaradás esetén?

HW és SW RAID biztonság

Az Adaptec hardver RAID kártya biztonságosságához nem fér kétség, hotplug tehát a merevlemezek menet közben cserélhetők, áramkimaradás esetén garantált az adatkonzisztencia, HA és itt egy nagy HA, nincsen bekapcsolva a kártyán levő gyorsítótár, mert ilyet biztonsági elem nélkül ne tegyünk. Backup battery hiányában ugyanis áramszünet esetén a teljes, visszaállíthatatlan adatvesztés esélye igen nagy. A 2410SA-hoz nem vásárolható backup battery sajnos, azonban a teszteket mégis bekapcsolt cache-el végeztem, mert kikapcsolva már az elején siralmas eredményeket kaptam.

Meglepetés volt a szoftver RAID, amiről eddig nem tudtam, hogy hotplug, és lehet nem is minden esetben igaz amit most írok. Biztonsági próba képp működő terhelt állapotban húztam le az egyik merevlemezről a tápkábelt. Az oprendszer üzent mail-ben, logban, és szépen futott tovább a teszt. Ugyanezzel a mozdulattal a tápot visszadugva, a Linux érzékelte az új lemezt, amit utána hozzáadhattam a RAID kötethez ahonnan kiesett. Így már csak az áramszünet okozhat problémát, de itt az adatvesztés esélye nem nagyobb mint a hardver raid esetében kikapcsolt cache-el.

Eredmény

A táblázatban megjelöltem zölddel a legjobb, pirossal a legrosszabb eredményeket. A “+++”-al jelölt értékek nem mérhetőek,mert a Bonnie++ dokumentációja szerint olyan gyorsan lefut a teszt, hogy az nem mérhető értelmesen. Ezeket az értékeket én nagyon jónak ítélem. Az elemzésbe kizárólag a bufferelt értékeket néztem.

Az egyes tesztekből az alábbi következtetéseket vontam le

Bonnie test for IO performance Az átviteli tesztben a SATA1 egyértelműen lemaradt a SATA2 mögött. Mivel itt a fájlrendszernek nincsen különösebb jelentősége, ezért az egyes fájlrendszerek közeli eredményeket produkáltak.
Testing with zero size files in directories Üres fájlok létrehozásával az ext4 és ext3 szoftver raid boldogul a legjobban. Az xfs nem képes értelmes sebességgel fájlokat létrehozni és törölni (bár ehhez nem is használ CPU-t, de ez nem számít). A hardver raid lemaradt egy picit.
Testing with tiny files Az XFS szoftver raid veri a mezőnyt, de az EXT4 szoftver raid sem teljesít rosszul a tesztben. A hardver raid itt még próbálja tartani a lépést bár már feleannyi fájlt tud létrehozni mint a SATA2-es szoftver raid
Testing with max 100Kb files with directorie Az EXT4 szoftver raid a nyertes, a hardver raid még nagyobb lemaradása mellett. Érthetetlen, hogy az XFS miért marad le ennyire a fájlok törlésében. Gyanús, hogy valami bug van vagy elkonfigurálást követem el
Testing with 100Kb to 1Mb files with directories A nagyobb fájloknál a SATA1-es hardver raid egyértelműen lemarad, a mezőnyt az EXT4 vezeti
Testing with 16Mb size files Egyértelműen látszik, hogy a SATA1 sebessége nagymértékben befolyásolja a nagyobb fájlok kezelését. EXT4 nyer a fájlrendszerek közül.

A nyertes

A tesztekből egyértelmű, hogy a SATA1 sebessége jóval alulmúlja a SATA2 sebességét, nem igaz, hogy nem ez a szűk keresztmetszet. Minél nagyobb fájlokkal dolgozunk, annál szembeötlőbb a különbség.

A fájlrendszerek közül az XFS használja a legkevesebb processzort, de ez mit sem ér, mert nagyságrendekkel lassabb is egyes esetekben. Kizárólag igen kis fájlok esetében használható, aminek most nem látom gyakorlati hasznát. Az ext3 csak néhol és csak kis mértékben kerekedik felül az ext4-en, amit akár tesztelési hibának is tekinthetünk.

A nyertes az ext4 fájlrendszer a szoftveres SATA2 Raid10 konfigurációval. Ezt a fájlrendszert érdemes használni, persze csak abban az esetben ha nem fektetünk be egy hardveres SATA2-es raid vezérlőre.

Címkék: , ,

Itt lehet hozzászólni !