Avontuur met ReiserFS
Een van de levendigste indrukken van dit de Chemnitzer Linux Tag dit jaar
(later meer hierover), was zonder twijfel het eerste contact met het
relatief nieuwe Reiser-Filesystem.Daar kon men een blik werpen op vroege experimenten met Linux computers die waren uitgerust met ReiserFS in plaats van het klassieke ext2 bestandssysteem.
De Linux-Computer uitschakelen...
... zonder een voorafgaande shutdown had, zoals je weet, tot nog toe de
consequentie dat het bestandssysteem gecontroleerd moest worden op
eventuele problemen. Normaal was dit een irritant proces, omdat het enorm
lang duurde bij hoge capaciteiten. Maar deze controle kon aantonen dat
het bestandssysteem erg inconstistent was. Dit eindigde soms met
mke2fs.
Net zo vervelend als de bestandssysteem controle, was dat het afhankelijk
was van een maximum aantal mounts of een bepaalde periode (standaard: 6
maanden). Dit alles is gewoon erg irritant, maar in het geval van
high-availability servers kan het erg grote problemen met zich meebrengen
in het geval van een hangup.
Als bijvoorbeeld het halve bedrijf niet bij hun bestanden kan omdat de
server bezig is met het boot proces (dat meer problemen met zich mee kan
brengen, zoals je hierboven al hebt gelezen).
Gezien deze redenen, is de roep om een alternatief legaal en lijken de zogenoemd journaling filesystems een goede oplossing. Zoals misschien weet, komen de meeste problemen met het ext2 bestandssysteem voort uit het feit dat het besturingsyssteem data van geopende bestanden niet direct terugschrijft naar de disk, maar ze in het geheugen houdt en ze pas later terugschrijft naar de disk, om efficiëntie redenen (de disk wordt gesynchroniseerd). Daardoor is het niet moeilijk voor te stellen dat na een crash die vlak voor zo'n synchronisatie plaatsvond, sommige bestanden (de geopende en nog niet terugschreven) zich in een dubieuse staat bevinden. Dit leidt tot een consistentie-controle tijdens de volgende boot, respectievelijk de volgende schijfcontrole.
Precies op dit punt grijpen de journaling bestandssystemen in: Het wordt in een zogenaamd "journal" (NL: logboek) opgeslagen welke bestanden momenteel in gebruik of geopend zijn. Daardoor is het in het geval van een hangup duidelijk welke bestanden het risico lopen inconsistent te zijn en dus gecontroleerd moeten worden. Het ligt voor de hand dat de bestandssysteem controle's en mogelijk recovery jobs sneller werken...
Reiser?
Op meerdere commerciële UNIX systemen zijn journaling file-systems
al langere tijd in gebruik (- kijk maar eens naar IRIX van SGI, wiens
bestandssyteem, XFS, wordt ondertussen geport naar een GPL basis, om de
Linux gemeenschap een plezier te doen). Maar ook in de Linux sector kun
je interessante benaderingen vinden. Op het moment is de meest besproken
en meest volwassen vertegenwoordiger hiervan ReiserFS, gecreëerd door
Hans Reiser en ondertussen ontwikkeld met financiële hulp van SuSE.
Deze belooft performance wins door een moderne manier van schijfbeheer
naast de journaling aspecten.
Op het moment lijkt het dus de beste, dus laten we deze kandidaat eens
testen.
Eerst dient het volgende te worden opgemerkt: De weg naar een Linux systeem met ReiserFS is nogal lang en oncomfortabel (als je niet wilt rommellen met de installatie van de huidige SuSE distributie, welke een installatie direct op dit bestandssysteem biedt). In wezen werkt het als volgt:
- De gebruikte kernel moet gepachted worden met ReiserFS ondersteuning en gecompileerd (in de test is 2.2.14 gebruikt). Daarna moeten de ReiserFS-tools (vooral mkreiserfs) worden gecompileerd en op je systeem worden gebracht. De interferentie in het systeem is onvermijdelijk. Dus diegenen die alleen kant en klare kernels gebruiken en opzien tegen de doe-het-zelf configuratie maken niet veel kans.
- Nieuwe partities moeten worden gemaakt en geformatteerd met ReiserFS, een voor ieder bestandssysteem dat geconverteerd wordt naar ReiserFS. Als het root bestandssysteem op ReiserFS wordt geplaatst, zul je een /boot partitie moeten maken dat is geformatteerd met ext2. Op het moment kan LILO de kernel niet booten van ReiserFS.
- Ten slotte moeten alle bestanden van de oude ext2-systemen worden gekopieerd naar de Reiser-systemen. Naderhand wordt het systeem aangepast aan de nieuwe omgeving (fstab bewerken, mogelijk LILO herconfigureren, enz.) en opnieuw opgestart. Dan kun je alleen nog hopen en bidden dat de programma's en bestanden de overgang hebben doorstaan.
Op naar de strijd...
Ondanks (of misschien wel door) de oncomfortabele installatie was het motto om op deze manier een bruikbaar resultaat te behalen. Inderdaad, het was geen bestaand systeem dat werd geüpdate naar ReiserFS, maar het was een compleet nieuwe installatie. We hebben gebruik gemaakt van mijn favoriete distributie, Stampede Linux 0.89. En zo waren we klaar om te beginnen...
Systeem installatie
De partitie tabel van mijn vorige installatie redelijk uitgebreid (Gescheiden partities voor /, /home en /home, samen ongeveer 7 GB) - een installatie partitie voor het basis systeem is toegevoegd.
De systeeminstallatie verliep zonder problemen: Zoals gewoonlijk met Stampede, booten met een boot- en een root-disk, vervolgens de installatie partitie formatteren en dan een lange gedwongen pauze, doorgebracht met het lezen van William Gibson's "Idoru", terwijl de installer de *.slp pakketten van het systeem naar de harde schijf kopieert. Omdat mijn volledige mail-/usenet-/web-toegang gaat met Linux, en ik niet zeker wist wat ik kon verwachten van de ReiserFS installatie, besloot ik op dit punt om het systeem compleet te installeren, de nodige software in te brengen en probleemloze gebruik in een normale omgeving op te zetten. Om daarna een kopie van dit werk station te maken op een ReiserFS partitie en testen of deze mijn eisen kon doorstaan.
De volgende logische stap was om het systeem eerst te updaten en het tegelijkertijd geschikt te maken voor ReiserFS. Dat betekende:
- Actuele kernel sources (2.2.14) ophalen en uitpakken in /usr/src/linux
- De ReiserFS patch van het Net downloaden (op moment van installatie 3.5.19) en deze voor het gemak in /usr/src te plaatsen vanwege de eenvoud en indien nodig uitpakken.
- De patch toepassen op de kernel tree
- ReiserFS ondersteuning in de kernel activeren
- De kernel compileren
- De nieuwe kernel naar /boot kopiëren en LILO configureren en herinstalleren
- De ReiserFS utilities creëren, bevinden zich in /usr/src/linux/fs/reiserfs/utils en deze binaries naar /sbin kopiëren.
Dat is het, voor het moment. Als alles werkt zoals geplanned, na het rebooten van systeem.
>> cat /proc/filesystemszou een ingang moeten laten zien voor reiserfs, de meest essentiële voorbereidingen zijn dan klaar. .
In mijn installatie werd dit gevolgd door het ophalen en compileren van wat software, die essentieel is voor mijn gebruik (XFree 3.3.6), de installatie van de ALSA drivers en alle taken van post-installatie tot het systeem werkte zoals verwacht.
Laten we verder gaan met het nogal critische deel van de installatie, het
Kopiëren van het systeem
Echter, eerst nog wat voorbereidingen: Met "mkreiserfs" maak je een bestandssysteem op de bijbehorende partities, in het geval van deze voorbeeld installatie, ging het om /usr en / (/home bleef op ext2 uit voorzorg).
Ook de /boot partitie werd geformatteerd met "mkreiserfs". Verder besloot ik het (verder vrij belangrijke) bestand /etc/fstab in de /root directory te plaatsen en de kopie aan te passen aan de nieuwe omgeving, (voor starten van het nieuw geïnstalleerde systeem).
Verder werd er een nieuwe sectie in /etc/lilo.conf toegevoegd om de nieuwe root partitie te booten en vervolgens de nieuwe LILO configuratie geïnstalleerd.
Op deze manier voorbereid, kon het langdurige kopieer proces worden gestart.
Stap voor stap werden, /, /usr (met "-t reiserfs") en /boot (met "-t ext2") op /mnt gemount en de bestanden gekopieerd met "cp" of met een pipe met "tar" naar de nieuwe partitie. Bijvoorbeeld:
>> (cd / && tar cplf - . --exclude boot --exclude usr) | ( cd /mnt && tar xpf - )
Als afsluiting (ongeveer 15 pagina's "Idoru" later...) werd de fstab van /root aangepast en via /mnt/etc naar zijn nieuwe locatie gekopieerd en werd het systeem opnieuw opgestart.
De eerste start
...ging volledig onspectaculair: Behalve enkele kleine haast-fouten in /etc/ftab, startte het gekopieerde systeem vlot en zonder problemen naar het login scherm. Een blik op /etc/mtab liet het volgende zien:
thunderbird:cat /etc/mtab /dev/hdb1 / reiserfs rw 0 0 /dev/hda3 /usr reiserfs rw 0 0 /dev/hdb2 /boot ext2 ro 0 0 /dev/hda10 /home ext2 rw 0 0 /none /dev/pts devpts rw,gid=5,mode=620 0 0 proc /proc proc rw 0 0Daardoor werden de partities standaard gemount. Dit kon geverifieerd worden met enkele operaties op het systeem: alles werkte goed.
Brachial tests
Nogal brute testen konden het systeem niet verstoren: Zo werd bijvoorbeeld een crash gesimuleerd door op de reset knop te drukken (tijdens het bewerken van een TEX document met een actief metafont, de /usr/doc directory kopiëren naar /tmp, enzovoort), lange schijfcontroles bleven achterwege en het systeem startte met ongeveer dezelfde snelheid op en zonder enig probleem. De lange wachttijden die ext2 in die situaties zou hebben opgeleverd ontbraken, dus besloot ik naar single user mode te gaan om een partitie te repareren.
Opsomming
Ondertussen is ReiserFS ruim een maand gebruikt op mijn systeem en tot nog toe zijn de resultaten goed. De testen (metingen), voor de performance winsten van behalve journaling ook verbeterd schijf beheer moeten nog plaatsvinden. Maar ReiserFS heeft de eerste test doorstaan...
Alternatieven...
...voor ReiserFS; Eerst is er het ext3 als logische opvolger van het huidige ext2 bestandssyteem, deze is echter nog in een vroeg alpha-stadium volgens de ontwikkelaars en kan nog niet gebruikt worden in een "productieve" omgeving.
Een van de voordelen is dat het kopieer proces (eerder beschreven) achterwege kan blijven, wanneer gewisseld wordt van ext2 naar ext3 (alleen de journals voor de nieuwe ext3 partitie moeten handmatig worden geplaatst).
Deze stap kan eenvoudig worden overgeslagen, zodat een test van dit systeem spoedig plaatsvindt.
Voor degenen die graag experimenteren, pas op dat je ext3 en ReiserFs niet opneemt in dezelfde kernel tree, door overeenkomsten in de interne namen kan dit grote problemen opleveren.
Verder moet het XFS-systeem ook worden genoemd. Voor de duidelijkheid: XFS is het meest robuuste en meest bewezen alternatief van alle genoemde alternatieven.
Het is ook al meerdere jaren in gebruik (in SGI's IRIX systeem). Inderdaad, XFS is nog maar sinds kort open source. Op het moment wordt gewerkt aan het aanpassen van de broncode, verwijderen van mogelijke patenten en her-implementeren van de functies.
Hopelijk blijven de hieruit voortkomende sources op hetzelfde hoge niveau als de gesloten versie.
De laatste, en waarschijnlijk de jongste implementatie in deze rij, JFS of "Big Blue" IBM, huidige versie 0.0.1, is nog niet volwassen genoeg om op een adequaat geformatteerde disk te gebruiken: de mogelijkheden van dit nieuwe systeem zijn op het moment beperkt tot een eenvoudige 'ls'.
Mettertijd zal blijken welke benadering het eerste wordt ingezet. Ontwikkeling en testen moet met alle projecten gebeuren, maar op het moment is ReiserFS het meest volwassen.
Links en Informatie:
| www.linux-magazin.de | Homepage van het Linux Magazine. In issue 4/2000 is een uitgebreid artikel te vinden van Bernhard Kuhn over dit onderwerp en laat bovendien meer technische details zien. |
| http://devlinux.com/projects/reiserfs | ReiserFS-pagina. Hier kun je de patches vinden, de basics en nog veel meer documentatie |
| ftp://ftp.de.kernel.org/pub/linux | FTP server voor het downloaden van de huidige Linux kernel |
| http://oss.sgi.com/projects/xfs | SGI homesite voor XFS. |
| http://oss.software.ibm.com/developerworks/opensource/jfs/index.html | Homepage van JFS |
| ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs | Download site voor geïnteresseerden in ext3. |