Archivio per la categoria 'Informatica'

Migrazione al file system Reiser4 nella mia Slackware Linux

Giovanni | 20 gennaio 2005 22:42

In seguito all’acquisto di un nuovo disco fisso, ho deciso di cambiare file system della mia Slackware Linux 10.0 al nuovissimo Reiser 4 FS!
Dato che per ora il kernel Linux ufficiale non prevede questo performante (finalmente ci si avvicina, a quanto dicono alcuni confronti, al JFS di IBM) file system, andiamo con ordine per vedere come si puo` fare.
PREMESSA
Ho sostituito il vecchio disco IBM da 3 miseri GB (ha fatto epoca) con un Maxtor 6Y120P0, ATA 120GB, 8MB Cache, ovvero uno abbastanza capiente supportato dalla mia vetusta scheda madre (Asus P5A) con i dovuti aggiornamenti al BIOS. Ho mantenuto invece il Quantum Fireball EX10.2A, contenente i sistemi operativi (Slackware Linux 10.0 e Windows XP Professional SP2).In linux il vecchio disco IBM era su hdb e utilizzato come “magazzino” musicale (mp3, video musicali); parimenti ho inizialmente impostato il nuovo da 120 gb come primary slave (e quindi hdb). Insomma:

Primary master (hda)

Secondary master (hdb)

Prima Quantum 10GB IBM 3GB
Dopo

Quantum 10 GB

Maxtor 120 GB
Obiettivo Maxtor120GB

Quantum10GB

Questo è quanto riporta fdisk sul Quantum riguardo la geometria delle partizioni:

Disk /dev/hda: 10.2 GB, 10262568960 bytes
255 heads, 63 sectors/track, 1247 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes

Dispositivo Boot Start End Blocks Id System
/dev/hda1 2 422 3381682+ 7 HPFS/NTFS
/dev/hda2 423 1247 6626812+ 5 Esteso
/dev/hda5 * 423 741 2562336 83 Linux
/dev/hda6 * 742 754 104391 82 Linux swap
/dev/hda7 * 755 1247 3959991 b W95 FAT32

L’obiettivo è quello di avere il disco nuovo da 120 GB come primary master (hda, C:) e quello vecchio come slave (hdb, D:). Quindi devo fare la copia del disco vecchio sul disco nuovo, per poi fare lo scambio.

COPIA DATI
Non volendo assolutamente reinstallare nulla, vedo se è applicabile l’utilizzo di Symantec Norton Ghost per fare una copia del disco mantenendo proporzionalmente le dimensioni delle partizioni, come usano i sistemisti universitari (come il sottoscritto) per il ripristino dei sistemi su hardware simili.
Symantec Norton Ghost però non supporta ReiserFS 3: eventuali tentativi di copia vengono bloccati.
Mi ricordavo di un prodotto simile della Powerquest: Drive Image. Chissa` se supporta ReiserFS? Toh: Symantec ha comprato Powerquest (tristezza, Powerquest mi stava simpatica da quando faceva il Partition Magic per OS/2) e la tecnologia di Drive Image e` stata utilizzata da Symantec per Norton Ghost 9.
Vabbe`, ci saranno prodotti simili che facciano cio`!
Partimage è la soluzione gratuita e open source: supporta ovviamente ReiserFS, ma il supporto NTFS e` ancora sperimentale.
Spulciando su groups.google.com, leggo che Acronis True Image v8.0 vanta un qualche supporto per ReiserFS 3! E ha persino la versione Linux! Mi decido a provarlo: la prima volta il programma si pianta; la seconda volta funziona, ma non mi permette di accrescere le dimensioni della partizione ReiserFS nel nuovo disco (insomma, fa una mera copia, senza un ridimensionamento proporzionale come volevo io). Seccante: le partizioni NTFS cosi` create monopolizzavano il disco nuovo, e la partizione Linux e quella Linux Swap avevano mestamente mantenuto le dimensioni originarie del vecchio disco (neanche 3 miseri GB).
OK, f****lo questi programmi, faccio da me.
Con qtparted, un clone gratuito di Partition Magic per Linux (ho dovuto installare con lui anche parted, linux-ntfs per ridimensionare le partizioni NTFS , e progreiserfs per quelle ReiserFS), ho ridimensionato le relative partizioni in maniera desiderata, dando a Cesare (cioe` Slackware!) quel che è di Cesare.
Ho mantenuto la medesima geometria delle partizioni, per non avere noie con linux (non ci sono scocciature particolari, se non qualche accortezza da prevedere: fstab, lilo.conf e altre cosette): insomma la partizione root, quella con il sistema operativo, era la quinta (hda5 sul disco piccolo, hdb5 sul disco grande). In tal modo sarebbe bastato ricaricare lilo col mio lilo.conf tramite un disco/cd linux avviabile una volta fatto lo scambio di disco.

Da ReiserFS a Reiser4
Già da tempo però mi girava il tarlo di migrare a Reiser 4 FS, che prometteva prestazioni migliori rispetto al vecchio ReiserFS 3, a ext2 e a ext3. Inoltre non si può, finora, convertire ReiserFS 3 in Reiser4: quindi col nuovo disco non rischio perdite di dati in caso di danni!.
Leggo cosa dice il sito degli sviluppatori di Reiser4 riguardo all’installazione: http://www.namesys.com/install_v4.html
Scarico il kernel più recente (Reiser4 funziona solo con 2.6.x); al momento Reiser4 non fa parte del kernel Linux ufficiale in quanto non ancora maturo. Occorrono – per ora – delle patch al kernel: io ho usato quelle presenti sul sito kernel.org, chiamate -mm.
Decompresso il kernel ufficiale, applicato la patch, aggiunto nella configurazione del kernel il supporto sperimentale al Reiser4 nella categoria File system (inserito come parte del kernel e non come modulo per mia comodità – non ho voglia di usare mkinitrd), compilato il tutto (ah, ho letto che andrebbe disabilitata l’opzione “Use 4Kb for kernel stacks instead of 8Kb” (4KSTACKS): io non l’avevo abilitata in precedenza, quindi non l’ho toccata e non ho approfondito l’argomento), caricato il nuovo kernel, lanciato lilo e riavviato: il kernel sul mio vecchio linux ora prevede Reiser4. Ma non basta.
Scarico quindi i piu` recenti reiser4progs (che richiede la libreria libaal), entrambi prelevabili da qui: reiser4progs permette di creare ed effettuare varie operazioni su partizioni Reiser4. Dato che sono stufo di perdere tempo, questa volta prendo i pacchetti precompilati per Slackware di www.linuxpackages.net .
In tal modo ho potuto creare (al posto della ReiserFS vecchia) una partizione vuota (hdb5) con Reiser4 sul nuovo disco:

mkfs.reiser4 /dev/hdb5

Dopo aver montato la partizione
mkdir /mnt/reiser4 ; mount /dev/hdb5 /mnt/reiser4 -t reiser4
ho preparato la nuova partizione creando in /mnt/reiser4 le directory dev , sys , proc.
Ho copiato quindi la partizione corrente di Linux del vecchio disco, col kernel che supporti Reiser4, sulla nuova partizione: basta una mera copia di tutte le directory che preservi gli attributi e che non copi i mount point. :-) Si puo` usare anche mc (midnight commander) all’uopo. Non serve copiare dev sys e proc: il sistema li ricrea all’avvio. Modifico il file fstab: la partizione / dovra` usare il file system nuovo, e quindi occorre specificare reiser4 anziché reiserfs:

/dev/hda5 / reiser4 defaults 1 1

Prima di procedere al cambio di disco, devo preparare un disco di avvio per lanciare lilo sul nuovo hard disk. Non avendo voglia di creare un disco avviabile di linux col supporto reiser4, mi copio il lilo.conf e la directory /boot in una partizione montabile anche da disco. Faccio in modo che la directory boot copiata su quest’ultima partizione (es: /mnt/prova) sia la /boot dopo aver caricato il dischettino avviabile (tramite mount –bind /mnt/prova/boot /boot), e carico lilo facendogli usare il lilo.conf del vecchio linux. Reboot, et voilà. Sono in Reiser4! Ricreo i mount point (me ne ero scordato), e comincio ad usare il nuovo file system.
Ecco l’output di fdisk sul nuovo disco:

Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cilindri of 1008 * 512 = 516096 bytes

Dispositivo Boot Start End Blocks Id System
/dev/hda1 1 107292 54066757+ 7 HPFS/NTFS
/dev/hda3 107292 238202 65978955 f Esteso
/dev/hda5 107292 168245 30720584+ 83 Linux
/dev/hda6 168246 170325 1048288+ 82 Linux swap
/dev/hda7 170326 238201 34209472+ b W95 FAT32

Si possono notare che le partizioni Linux hanno lo spazio desiderato: 30GB la partizione root, 1GB quella di swap.

Il comando mount riporta invece:

/dev/hda5 on / type reiser4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
/dev/hda2 on /mnt/c type ntfs (ro,umask=0,nls=iso8859-15)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/hda7 on /mnt/e type vfat (rw,noexec,nosuid,nodev,iocharset=iso8859-15,codepage=850,quiet)

ALTERNATIVA: COPIA DA PARTIZIONE A PARTIZIONE NELLO STESSO DISCO
Senza fare questa complessa copia da disco in disco, si può fare la copia da partizione in partizione:
si aggiunge il supporto reiser4 nel kernel, si crea la partizione reiser4, si copiano i dati come sopra, si modifica il etc/fstab della partizione reiser4, si aggiunge a lilo la nuova partizione da caricare in reiser4, si riesegue lilo, si carica il kernel della nuova partizione.