ReiserFS - vakava tiedostojärjestelmä


Tiedostojärjestelmä on käyttöjärjestelmän keskeisimpiä osia. Jos se pettää, on hidas tai tuhlailevainen, on koko käyttöjärjestelmäkin epäluotettava, hidas tai tuhlailevainen. ReiserFS on ensimmäinen tiedostojärjestelmä, johon olen tarkemmin tutustunut ja joka vaikuttaa täydelliseltä. FAT on lähinnä naurettava, HPFS ihan hyvä, NTFS rakenteeseensa nähden huonosti toteutettu ja Linuxin ext2 ihan hyvä, mutta mikään niistä ei ole lähellä täydellisyyttä, johon ReiserFS yltää.


Tiedostojärjestelmä on tietokanta


Tiedostojärjestelmä on varasto, arkisto, johon talletetaan tiedostoja ja tiedostoihin liittyvää tietoa, kuten luontiaika, nimi jne. Perinteiseen tietokantamalliin sovellettuna tiedostoja voitaisiin pitää erikoisena tietueen kenttänä, jonka tyyppi on BLOB (Binary Large OBject) ja muut kentät ovat luontiaika, nimi jne. Tietokantoja on tutkittu hyvin perusteellisesti, mutta vaikka niiden tutkimisesta saatua tietoa olisi voitu soveltaa melko suoraan tiedostojärjestelmien toteuttamiseen, on tiedostojärjestelmien kehitys ollut hyvin hidasta. Paras esimerkki tästä on Windows 9x, jossa on vieläkin ainoana vaihtoehtona 160 kt levykkeille suunniteltu tiedostojärjestelmä. FAT on hyvin yksinkertainen ja sopii erittäin hyvin levykkeille, jopa LS120- ja Zip-levykkeille, mutta kiintolevyille sitä ei olisi koskaan saanut päästää.


Pienet tiedostot koetinkivenä


Pienet tiedostot sinänsä ei ole vaativia tiedostojärjestelmälle, mutta pienuudesta seuraa tiedostojen suuri määrä. Kun halusin testata ReiserFS:n ominaisuuksia käytännössä, oli ilmiselvää, että käytän testimateriaalina pienimuotoisen uutispalvelijani tiedostoja. Uutisryhmiä on esimerkiksi Soneran news.inet.fi-palvelimella lähes 49 tuhatta ja ryhmissä edelleen viestejä jopa kymmeniä tuhansia. Omalla palvelimellani ryhmiä on vain vajaa sata. Koska kukin viesti tallentuu omaan tiedostoonsa ja säilytän näitä mielenkiintoisimpia ryhmiä melko pitkään, on tiedostoja kertynyt jo lähes 600 tuhatta. Mikään erityisen suuri tiedostomäärä tämä ei Linuxin käyttäjälle ole, kyseisellä koneella tiedostoja on kaikkiaan noin puolitoista miljoonaa ja levytilaa 80 gigaa.


Suoritin siis hyvin käytännönläheisen ja yksinkertaisen testin. Kopioin tämän 600 tuhannen tiedoston hakemistopuun toiseen hakemistoon. Ext2-tiedostojärjestelmällä aikaa kului runsas 300 minuuttia eli 5 tuntia. ReiserFS suoriutui vajaassa 50 minuutissa eli kuusi kertaa nopeammin. Hakemistopuun poistossa taas ext2 oli hieman nopeampi kuudella minuutilla ReiserFS:n yhdeksää vastaan.


Suurien tiedostojen käsittelyn nopeutta en testannut, koska silloin mitataan lähinnä laitteiston nopeutta, mutta ReiserFS:n WWW-sivuilla testitulokset ovat noin 10% parempia kuin ext2:lla.


Hyvästi hukkatila


Hukkatilaa tiedostojärjestelmässä syntyy sen takia, että jokaisen tiedoston viimeinen varausyksikkö on keskimäärin puoliksi käyttämätön. Jos varausyksikkö on 4 kt, vie 2 kt kokoinen tiedosto silti 4 kt tilaa. Niin sitä luulisi. ReiserFS tallentaa viimeisen varausyksikön tiedot samaan rakenteeseen kuin tiedot tiedostosta ja hukkatilaa ei synny. Testimateriaalin tiedostojen yhteenlaskettu koko oli 1,9 gigaa ja tar-arkiston koko 2,5 gigaa, mutta ReiserFS käytti vain 2,2 gigaa. Ext2 käytti 4 kt varausyksiköllä (oletus) peräti 3,3 gigaa.


Dynaamiset i-noodit


Eräs Unixien perinteisten tiedostojärjestelmien omituisuuksia on ollut i-noodien loppuminen kesken. Levyllä voi olla vapaata tilaa, mutta uusia tiedostoja sille ei voi enää kirjoittaa, jos i-noodit ovat loppu. Näin kävi minullekin testin aikana. Ext2-osiolle pystyin kopioimaan testimateriaalin vain kolme kertaa, vaikka vapaata tilaa olisi ollut 5 gigaa. I-noodien määrän voi valita luotaessa tiedostojärjestelmää, mutta jälkikäteen muutosta ei voi tehdä. ReiserFS taas salli kaksinkertaisen määrän (4,6 miljoonaa) tiedostoja samalla 19-gigaisella osiolla. Hukkatilan puute vaikutti tietysti tähän osaltaan, mutta lisäksi ReiserFS varaa i-noodeja dynaamisesti. Niitä on aina riittävästi, mutta käyttämättöminä ne eivät tuhlaa tilaa, kuten ext2:sta käytettäessä.


Levyn tarkistus hetkessä


ReiserFS:lle on oma tarkistustyökalu, reiserfsck ja sitä kokeillessa olin melko pettynyt. Siinä koneessani, jossa on 1,5 miljoonaa tiedostoa, kestää ext2-tiedostojärjestelmien tarkistus yli tunnin ja olin odottanut ReiserFS:n ratkaisevan tämän ongelman. Reiserfsck on kuitenkin hitaampi kuin ext2:n vastaava työkalu. Kun testiosiolla oli 600 tuhatta tiedostoa, kesti reiserfsck:n ajo 11 minuuttia ja e2fsck vain reilun minuutin.


Mutta käytännön testaus kertoi totuuden. Irrotin kaikki turhat tiedostojärjestelmät, käynnistin hakemistopuun kopioinnin ReiserFS-osiolla ja tein, mitä koskaan ei saisi tehdä, painoin reset-nappia. Juuritiedostojärjestelmää en ollut pystynyt irrottamaan, joten sen tarkistus kesti pari minuuttia, mutta ReiserFS-osiota en edes huomannut tarkistettavan. Epäilin, että Red Hat 7.0 -pohjainen IT Linux 2001 ei osannut käsitellä ReiserFS-osiota ja se oli jäänyt tarkistamatta. Olin hyvin epäuskoinen, kun se kuitenkin oli liitetty. Irrotin sen ja ajoin reiserfsck:n, joka pyöri aikansa eikä löytänyt virheitä. Nyt näytti jo hyvältä ja tarkistin käynnistysilmoitukset lokista. Ja sieltä se löytyi: "reiserfs: replayed 2 transactions in 1 seconds.". Tarkistusta ei edes tarvittu ja tiedostojärjestelmä palautui vakaaseen tilaan yhdessä sekunnissa! ReiserFS oli siis tässäkin suhteessa nopeampi, testitilanteessani noin 70-kertaisesti.


Täydellinen tiedostojärjestelmä?


Kyllä. Minä en keksi mitään puutetta ReiserFS:ssä. Edellä selostettujen perusasioiden lisäksi ReiserFS:n kokoa voidaan muuttaa resize_reiserfs-ohjelmalla, tiedostojen kokorajoitus on 2^10 petatavua ja osion kokorajoitus 16 teratavua.


Linuxille on lisäksi kehitteillä versiot journaloivista IBM:n JFS:stä ja SGI:n XFS:stä. Jälkimmäinen ainakin vaikuttaa lupaavalta, koska se on optimoitu suurille multimedian vaatimille tiedostoille. Linux tukee jo nyt pariakymmentä tiedostojärjestelmää, joten mukaan sopii aina pari hyvää ja erikoistunutta.


Testiympäristö ja lisätietoja


Käyttöjärjestelmänä oli Red Hat 7.0 -pohjainen IT Linux 2001, joille sopivat ytimet ReiserFS-tuella löytyvät osoitteesta www.raimokoski.com/itlinux2001/test/. Muista lukea asennusohjeet tarkkaan. Käytetty ydin oli em. sivulta löytyvä 2.4.0-3. Uusi ydin mahdollisti myös yli 2-gigaisen tar-arkiston luonnin.


Kotisivut


ReiserFS:

www.namesys.com

JFS:

http://oss.software.ibm.com/developerworks/opensource/jfs/

XFS:

http://oss.sgi.com/projects/xfs/