Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il filesystem JFS

Link copiato negli appunti

La scorsa settimana abbiamo parlato di EXT3, la versione journaled di EXT2, sottolineando i vantaggi che si hanno nell'utilizzare un filesystem (FS) di questo tipo (cfr. articolo:Il filesystem ext3).

Riassumendo brevemente un FS come EXT3 vi permette di evitare il controllo della consistenza con fsck di tutte le partizioni in caso di un reboot forzato (dovuto per esempio a un black-out o un crash di sistema). Su partizioni non jornaled di centinaia di GB i tempi di attesa sono dell'ordine di ore. Sui server dove la disponibilità è un elemento fondamentale questo è un grave problema. Un journalling filesystem invece di controllare l'integrità di tutta la partizione si occupa di analizzare solo la parte relativa alle ultime modifiche delle quali ha tenuto traccia il log (journal).

Nonostante EXT3 sia comodissimo da utilizzare (basta un semplice aggiornamento da EXT2 col quale è perfettamente compatibile) e garantisce largamente la sicurezza dei nostri dati, non è il solo journalling filesystem. Nel precedente articolo avevamo ricordato ReiserFS di Hans Reiser, il primo FS di questo tipo largamente utilizzato su Linux. Ne esistono anche altri, tra questi JFS di IBM e XFS di SGI . Questi filesystem sono ormai lo standard sulle loro piattaforme native e sono stati fatti dei porting anche per Linux. Utilizzarne uno piuttosto che un altro dipenderà dalle vostre esigenze. Scrivere in maniera dettagliata di ognuno di essi sarebbe troppo lungo e probabilmente annoierà molti di voi. In questo articolo ci soffermeremo su quali sono i vantaggi portati da JFS e spiegheremo i passaggi necessari per utilizzare questo FS.

Una delle qualità da riconoscere a JFS è la sua affidabilità: pur non effettuando il journalling di tutti i data, la sua organizzazione lo rende particolarmente veloce, consentendogli di tener traccia anche di tutte le transizioni (ReiserFS e XFS invece fanno il journalling dei soli metadata). Ne risulta un filesystem particolarmente efficiente e affidabile anche sotto pesante carico in I/O (Input/Output). Il supporto a JFS non è stato ritenuto abbastanza maturo da essere inserito nel kernel ufficiale (come recentemente è accaduto per EXT3).

Il lavoro di IBM per portare anche sotto Linux JFS è notevole (grazie soprattutto all'opera di Barry Arndt, Steve Best e Dave Kleikamp) e il 28 Giugno il supporto per il nostro caro sistema operativo è stato ritenuto maturo tanto che è stata rilasciata la versione 1.0.0 di JFS per Linux. Attualmente siamo giunti alla versione 1.0.11 risalente allo scorso 18 Dicembre. Personalmente credo che il supporto per JFS su Linux sia già giunto a un buon livello di affidabilità, tanto da prenderlo in seria considerazione anche su macchine di produzione. Ma ritengo anche che un maggiore utilizzo da parte degli utenti possa spianargli la strada per un suo ingresso all'interno del kernel ufficiale. Come ha già dimostrato ReiserFS, il contributo degli utenti con il conseguente l'utilizzo "in massa" sono fondamentali per scovare eventuali bug e rendere il codice sempre più maturo.

USARE JFS

Per poter utilizzare JFS occorrerà patchare appositamente il kernel e installare i JFS tools. Scarichiamo quindi la patch relativa al kernel da noi usato e le jfsutils dall'url http://oss.software.ibm.com/developerworks/opensource/jfs/.

Al giorno della redazione di questo articolo l'ultima patch disponibile è la 1.0.11 (jfs-2.4-1.0.11-patch.tar.gz). Bisognerà quindi disporre del codice sorgente del kernel Linux (preferibilmente senza nessuna patch già applicata). La patch in questione si riferisce a un kernel della serie 2.4 ma sono disponibili aggiornamenti anche per il 2.2.

Vi ricordo inoltre che molte distribuzioni danno la possibilità di utilizzare JFS già in fase di installazione. È quindi possibile (ma è sempre bene controllare) che disponiate già di tutto quello necessario per usare questo FS.

Una volta scaricato il file (diamo per scontato che abbiate i sorgenti del kernel nella directory /usr/src/linux), e postolo nella directory /usr/src, scomprimiamolo con:

lnxbox1:/usr/src# tar xfvz jfs-2.4-1.0.11-patch.tar.gz

Nella directory /usr/src dovremo ritrovarci cinque file: il file README e quattro file patch. Applicate la prima patch, nel nostro caso jfs-2.4.common-1.0.11-patch, con:

lnxbox1:/usr/src/linux# patch -p1 < ../jfs-2.4.common-1.0.11-patch

Dovrete applicare una seconda patch che dipenderà dal vostro kernel: se la versione di questo è la 2.4.3 o la 2.4.4 utilizzate il file jfs-2.4.3-1.0.11-patch, se avete un 2.4.5 o un 2.4.6 allora usate jfs-2.4.5-1.0.11-patch, se invece disponete di uno dei kernel successivi al 2.4.7 allora dovrete installare la patch jfs-2.4.7-1.0.11-patch.

Se ne avete la possibilità io vi consiglio di utilizzare una delle ultime release (2.4.16 o 2.4.17) visto che comunque dovrete ricompilare il kernel. A questo punto se tutto è andato a buon fine vi dovreste ritrovare un kernel pronto per JFS. Dovrete quindi ricompilarlo. Per farlo potrete seguire le istruzioni presenti in un nostro precedente articolo. Ricordatevi quindi di abilitare in fase di ricompilazione "JFS filesystem support (NEW)" ed eventualmente "JFS debugging" per poter disporre dei messaggi di debugging.

A questo punto dovrete compilare e installare le jfsutils. Per farlo scomprimete il file (ad esempio jfsutils-1.0.11.tar.gz) con:

lnxbox1:~# tar xfvz jfsutils-1.0.11.tar.gz

Entrate nella directory appena creata con:

lnxbox1:~# cd jfsutils-1.0.11

Ed eseguite:

lnxbox1:~# ./configure && make && make install

Una valida alternativa potrebbe essere quella di trovare il pacchetto RPM delle jfsutils su www.rpmfind.net. Una versione delle jfsutils è disponibile come pacchetto .DEB nella distribuzione Debian Unstable.

Per finire riavviare con il kernel creato in precedenza.Ora siete pronti a utilizzare questo tipo di FS per la creazione e la lettura di partizioni di tipo JFS (potrete anche accedere alle partizioni JFS di OS/2). Purtroppo non è possibile convertire una partizione in JFS, come avveniva tra EXT3 e EXT2. Dovrete quindi crearne una ex novo. Dovrete prima creare una nuova partizione (utilizzando per esempio fdisk o cfdisk). Lasciatela vuota perché ogni informazione che scriverete in questa andrà perduta. A questo punto dovrete riavviare. Dopo il reboot, potrete utilizzare il comando mkfs.jfs per creare un filesystem JFS. La sintassi è del tipo mkfs.jfs /dev/hdXY dove XY indicano la partizione che volete creare su un determinato disco.

Se ad esempio volessimo creare una partizione JFS in /dev/hda3 scriveremo:

lnxbox1:~# mkfs.jfs /dev/hda3

È anche possibile passare interamente a JFS, evitando di avere un disco con partizioni "miste". JFS è ancora in fase di sviluppo ed è pronto per essere usato anche in macchine di produzione. Ma il mio consiglio è quello di valutare seriamente la scelta del tipo di filesystem da utilizzare. Un errore in questi casi potrebbe ripercuotersi sui vostri stessi dati.


Ti consigliamo anche