Igaz történet: hogyan váltottam ReiserFS-ről JFS-re

Több mint egy éve használok naplózó filerendszert az otthoni munkaállomásomon. Egy évvel ezelőtt amikor eldöntöttem, hogy lecserélem az ext2 filerendszeremet, és valami journaling FS után nézek, igazából nem sok választásom volt. Akkoriban az elérhető naplózó FS-ek az SGI-féle XFS, a SuSE által szponzorált ReiserFS, és a beta állapotú IBM-es JFS volt. Ezek közül egyetlen volt megtalálható az akkori kernelben, a többit bele kellett patchelni. Ez az egy a ReiserFS volt. Így nekiálltam, lementettem a filerendszerem, készítettem egy ReiserFS filerendszert, és használtam egy éven keresztül minden probléma nélkül. Bátran ajánlhatom mindenkinek, mert egy gyors, helytakarékos, korszerű journaling FS kap az, aki arra szánja el magát, hogy ReiserFS-t használ. Pár nappal ezelőtt megjelent a 2.4.20-pre4 prepatch kernel. Ez a kernel már tartalmazza az IBM JFS támogatást. Egy hirtelen ötlettől vezérelve úgy döntöttem, hogy lecserélem a jól bevált ReiserFS-t JFS-re. Hogy miért? Mert a ReiserFS túl jól működött ;-). Rendszerint a fejlesztői dolgokat használom, na nem azért mert én ``poweruser" vagyok, hanem mert szeretem kipróbálni az új dolgokat, szeretem végigszenvedni a fejlesztés lépéseit, esetenként bugreportolni, stb. Ebben az sem tántorít vissza, ha néha backupból vissza kell állítani a rendszerem. (Ilyenre az elmúlt 2-3 évben egyszer került sor, egy hibás 2.5-ös kernel IDE kód miatt.)



Szóval JFS. Miért is van szükség a JFS-re? Egyáltalán miért nem jó nekem a hagyományos ext2 filerendszer?



A legfőbb indok az, hogy a manapság kapható nagy kapacitású HDD-ket igazából nem lehet hatákonyan használni már ext2 filerendszerrel. Az ext2 filerendszer egyik szükségszerű velejárója az FSCK. Elég egy áramszünet, és a file system chechker már el is indul a gépünkön boot időben. Akinek nagy winchestere van az tudja, hogy egy 80GB-os HDD-n mennyi ideig fut az FSCK. Ez az idő a HDD-n levő adatok mennyiségétől függően több perc, egy jól megtömött filerendszer esetén akár több óra is lehet. Ezt elkerülendő, és más technikai okoból is kifejlesztettek ún. journaling, azaz naplózó filerendszereket. Ezek lényege röviden, mindenfajta technikai hókusz-pókusz nélkül az, hogy rendelkeznek egy ún. journaling-device-szal, egy naplófile-lal amelybe bejegyzésre kerülnek a filerendszeren történt változások. Ezek a bejegyzések rettentő gyorsan követik egymást. Egy esetleges rendszer osszeomlásnál a bootkor az FSCK-nak nem kell az egész filerendszert ellenőriznie, elegendő csak ellenőriznie a journal fileban levő legutolsó bejegyzések által mutatott fileokat. Így az FSCK ideje drasztikusan lecsökken. Ami azt jelenti, hogy egy 80GB-os filerendszeren egy 70%-os telítettségnél ReiserFS filerendszer RO-ra muntolva: a reiserfsck kb. 15-20 másodperc alatt végez. Gondoljuk el, hogy egy forgalmas weboldalnál mekkora kiesés lehet ext2 filerendszert alkalmazva, mondjuk egy 200-300GB-os lemezterületet ellenőrizni. Akár órákig is eltarthat. Ezt pedig az E-Business világában senki nem tudja bevállalni.



A JFS-ről csak jót lehet olvasni az IBM oldalnán (naná, ők fejlesztették ;-)). Lássuk mit tud: a JFS kimondottan nagy terhelésű fileszerverek, adatbázis szerverk filerendszerének készítették, tervezték, jelenleg az IBM enterprise kategóriájú szerverei használják. Az IBM open sourceszé tette. A JFS egy teljesen 64bites filerendszer. A minimális JFS partíció mérete 16MB. A maximális fileméretet tekintve 512 terrabyte-tól 4 petabyte-ig terjedhet. Azt hiszem a 160GB-os otthoni rendszeremnek ez bőven megfelel.



Ennyit az okoról, ha érdekel hogyan váltottam ReiserFS-ről JFS-re olvasd el JFS root boot HOWTO-t (egy cikkel feljebb). A teljesítménytesztek folynak, eredményekről később.

Hozzászólások

En is feltem tole hogy lassu lesz. Csinaltam egy tesztet (a komplett tesztek meg nem keszultek el. Egy sima masolas, feluliras, torles, move -olas egy sima .avi fileon:

JFS:

trey@sunshine:~/MOVIE/The Neverending Story$ time cp The Neverending Story.avi /tmp

real 1m45.589s

user 0m0.140s

sys 0m15.090s

trey@sunshine:~/MOVIE/The Neverending Story$ time cp The Neverending Story.avi /tmp

real 1m43.874s

user 0m0.150s

sys 0m15.800s

trey@sunshine:~/MOVIE/The Neverending Story$ time rm /tmp/The Neverending Story.avi

real 0m1.065s

user 0m0.000s

sys 0m1.000s

trey@sunshine:~/MOVIE/The Neverending Story$ time mv The Neverending Story.avi /tmp

real 0m0.022s

user 0m0.000s

sys 0m0.000s


ReiserFS:

trey@sunshine:~/MOVIE/The Neverending Story$ time cp The Neverending Story.avi

/tmp

real 1m50.555s

user 0m0.190s

sys 0m16.250s

trey@sunshine:~/MOVIE/The Neverending Story$ time cp The Neverending Story.avi

/tmp

real 1m42.878s

user 0m0.190s

sys 0m16.900s

trey@sunshine:~/MOVIE/The Neverending Story$ time rm /tmp/The Neverending Story.avi

real 0m1.033s

user 0m0.000s

sys 0m0.970s

trey@sunshine:~/MOVIE/The Neverending Story$ time mv The Neverending Story.avi

/tmp

real 0m0.060s

user 0m0.000s

sys 0m0.000s

Hat ebbol annyi latszik, hogy egetvero kulonbesg nincs nagy fileok masolasanal, felulirasnal, torlesnel, move -olasnal.

Apro fileokkal is fogom tesztelni, nem ilyen bovli modon, hanem a tesztekhez ezt a toolt fogom hasznalni:

http://h2np.net/tools/fs-bench.tar.gz

esetleg akinek van kedve tesztelni, az irhatna ext2, ext3, reiserfs eredmenyeket. en meg adom a jfs-t aztan gyozzon a jobb.

(elotte meg kellene allapodni mit is merunk =))

Ha már a JFS-t is megunod érdemes lesz kipróbálni a Silicon Graphics féle XFS-t. Én egy ideje ezt használom (kernel támogatás patch formájában) és nagyon meg vagyok vele elégedve. Az XFS esetében a legnagyobb fileméret már 2^63=9*10^18 azaz 9000 petabyte ill 9 exabyte lehet.
A legnagyobb particiómére 18 exabyte lehet(ne) csak még a linux kernel miatt ez a gyakorlaban csak 2 Terabyte. Amint a kernel támogatni fogja a 64 bites block devices layert, jöhetnek a home Star Wars stúdiók ;)

Az XFS lehetőseget ad kiterjesztett attribútumok használatára, ami egy legfeljebb 64kbyte-os név/érték párból áll, és mindenféle i-node bejegyzésre vonatkozhat, file, könyvtár, szimbolikus link ... stb. Nekem még nem volt rá szükségem.



Az olvasás XFS-el még a ReiserFs-nél is gyorsabb, meg kell azonban jegyezni, hogy a törlés viszonylag lassú.
Van egy apróság amire mindig figyelni kell XFS esetében. Az XFS eredetileg az Irix naplózó filerendszere volt. Linux alatt használt XFS particiónál, a kompatibilitás megtartása miatt a superblock ott helyezkedik el ahova a lilo teszi be magát, ha a root particióra telepítjük. Ezért A LILO-T XFS MELLETT CSAK A MBR-RA SZABAD TELEPÍTENI.



Szerintem ma az XFS a legjobb naplózó filerendszer linux-hoz, és az is marad ameddig a Darpa nem végez a Reiser4-el ;)



A silicon graphics hivatalos Linux XFS oldala:
http://oss.sgi.com/projects/xfs/



Egy régebbi, de még ma is érdekes összefoglaló a linuxos naplózó filerendszerekről:
http://linuxgazette.org/issue55/florido.html



Darpa, az amerikai hadsereg kutatási részlegének linux Reise4 oldala (reszkess M$ ;) :
http://www.darpa.mil/ipto/psum2001/m133-0.html

Ez igen-igen szép, de van ám ext3 is a világon, nem azzal kéne összehasonlítgatni? :)

Hat a hozzaertok szerint az ext3 nem egy igazi journalind fs, csak bizonyos jounaling kepessegekkel felruhazott ext2. Termeszestesen magan viselve a visszafele compatibilitas minden koloncat. Ugye az ext2-bol egy sima tune2fs -j dologgal lehet ext3-at csinalni, es ha jol tudom akkor ez mukodig visszafele is?

Kompatibilitas a regivel es bizonyos journaling kepesseg. Lehet hogy jo, de itt igazabol en csak a teljesen from scratch irt fs-eket vettem szamba. Etx3-mal tapasztalatom nincs, akiket ismerek es hasznaljak azok nem panaszkodnak ra, sot dicserik. Sebessegerol nem tudok mit mondani, ki kell probalni.

Viszont hogyha siman memoriabol akarsz irni nemi adatot ReiserFSre, akkor ennek az irasi sebesseg karakterisztikaja az egyszerre irando adatmennyiseg fuggvenyeben kb Gauss gorbe alaku... Kis adathalmazra nyilvan lassu, elvegre a mai I/O rendszerek (ugy filerendszer mint diszk szinten) nem arra vannak kihegyezve, syscall, seektime, etc... Az optimum korul egesz hasznalhatonak tunik, csak az a gond, h ez az optimum elegge alacsonyan van... marmint az egyszerre irando adat mennyiseget tekintve. onnantol pedig... Egyetemen parallel I/O-t merunk, es eppen emiatt egy egesz clustert kellett ujraparticionalni (;

udv,

sz

Esetleg a tablazatba a stabilitasi mutatot is el lehetne helyezni, kulon-kulon file rendszerekre bontva (nem elhanyagolhato szempont). Tapasztalatok, leirasok, stb ... alapjan.

Gondolhatunk pl: ReiserFS regebbi "bakijaira". Egesz particiok eluszhattak (vagy reszben), file vesztes, stb ..