Paolo Subiaco psubiaco@creasol.it - http://www.creasol.it
4 dicembre 2002
Scopo di questo documento è la descrizione sommaria dell'installazione di un sistema raid1 (mirroring) in Linux con kernel 2.4.9 o superiori).
Il sistema è stato provato con la distribuzione Mandrake 8.0, installata in un hdd con le seguenti partizioni:
Tutte le partizioni dovrebbero funzionare in raid: nel mio caso, essendo i due hard disk nello stesso canale IDE, ho evitato di utilizzare la partizione di swap in raid (la comunicazione sarebbe molto appesantita durante la scrittura) cosicché, nel caso di crash di un HDD, il computer si bloccherà per errore sull'uso delle due partizioni di swap (presenti in entrambi i dischi).
Il PC era dotato di un altro hdd, installato purtroppo nello stesso canale IDE (come hdb) mentre è preferibile installarlo in un altro canale (ad esempio come hdc o hdd).
Per il funzionamento sono richiesti
Installato linux in un solo hdd, vorremo portare il nostro sistema ad utilizzare un raid1 composto di due hdd identici (ma potrebbero anche non esserlo: basta che le partizioni da unire in raid siano circa della stessa dimensione) di cui uno è quello in cui si è installato linux. La soluzione è possibile, ed ora vedremo i passi per attuarla.
Installate il kernel 2.4.9 o superiori (magari funziona anche con kernel dalla versione 2.4.5 in poi o con quelli precedenti dopo una modifica al Makefile in driver/md).
Il kernel deve essere configurato per supportare il MULTI-DEVICE SUPPORT (RAID AND LVM), poi compilato ed installato in /boot; ovviamente modificare lilo.conf per caricare il nuovo kernel, e digitare lilo per aggiornare il MBR dell'hard disk hda. Quindi riavviare il computer con il nuovo kernel.
Si dovranno creare partizioni della stessa dimensione (circa) di quelle esistenti in hda.
Il tipo della partizione dovrà essere fd anziché 82 (swap) oppure 83 (linux native), in modo che il kernel, al bootstrap, riconosca le nuove partizioni come partizioni RAID.
Per il partizionamento si utilizzerà fdisk /dev/hdc, e si specificherà il comando n per aggiungere una nuova partizione, t per cambiarne il tipo, p per stampare la configurazione corrente.
Si dovrà creare il file /etc/raidtab, inserendo tanti blocchi sottoriportati quante saranno le nostre partizioni raid.
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hda1
failed-disk 0
device /dev/hdc1
raid-disk 0
Per ognuna delle partizioni raid che vorremo creare, bisognerà
Modificare il file /etc/fstab specificando, in prima colonna, le nuove partizioni da utilizzare, ad esempio
/dev/md0 /boot ext2 defaults 0 2
/dev/md1 none swap sw 0 0
/dev/md3 /usr ext2 defaults 0 2
A questo punto reboottare il PC per far caricare, al successivo riavvio, le nuove partizioni raid.
Riavviato il PC, digitando mount dovrete vedere che il sistema ora utilizza le nuove partizioni RAID: tuttavia, digitando cat /proc/mdstat , osserverete che solo un hard disk viene utilizzato per le partizioni di raid.
Affinché vengano utilizzati entrambi gli harddisk, bisognerà editare il file /etc/raidtab sostituendo tutte le linee raid-failed 0 con raid-disk 0 in modo da attivare anche il secondo hard disk (indispensabile per avere ridondanza).
Inoltre, dovranno essere modificate con fdisk /dev/hda il tipo di partizione, che dovrà essere impostata al valore fd.
Bisognerà anche modificare /etc/lilo.conf onde specificare che la partizione di boot ora si trova in /dev/md0 (linea boot=/dev/md0) in modo che sia caricato il boot loader in entrambi gli hard disk.
Inoltre si dovrà specificare che la partizione di root è /dev/md2, quindi digitare lilo per effettuare i cambiamenti.
Ricordatevi magari di aggiungere, se non presenti, le linee
password PASSWORD
restricted
al fine di proteggere la macchina da eventuali malitenzionati che potrebbero
al contrario guadagnarsi l'accesso di root da console.
Provate a riavviare, sperando che il tutto riparti.
Ricordate eventualmente che in fase di boot si possono specificare a lilo diversi parametri: ad esempio digitando LILO: linux single verrà avviato linux con runlevel 1, ovvero in modalità single user senza caricare tutti i servizi normalmente presenti.
Provate poi a staccare un harddisk, poi l'altro, e vedere se il sistema funziona.
Può accadere che, dopo mesi di utilizzo, al boot il sistema rilevi una partizione in RAID non utilizzabile: nel syslog troverete alcuni messaggi di errore del tipo
Dec 3 08:30:57 linux kernel: md: freshest
ide/host0/bus1/target1/lun0/part5
Dec 3 08:30:57 linux kernel: md0: kicking faulty ide/host0/bus0/target0/lun0/part5!
Dec 3 08:30:57 linux kernel: md: unbind<ide/host0/bus0/target0/lun0/part5,1>
Dec 3 08:30:57 linux kernel: md: export_rdev(ide/host0/bus0/target0/lun0/part5)
1799168 blocks [2/1] [_U]
Se il filesystem danneggiato è comunque ``montabile'', cancellare
l'eventuale file .fsck* presente, quindi smontare il filesystem con
cd /; umount /mnt/hd , e provare a reinserire la partizione
nel raid con il comando raidhotadd /dev/md0 /dev/hda5.
A questo punto controllare con cat /proc/mdstat il risultato
dell'operazione... se tutto va bene verrà ricostruita la partizione
appena aggiunta e vedrete
1799168 blocks [2/1] [_U]
[===========>.........] recovery = 57.0% (1027456/1799168)
finish=0.5min speed=21834K/sec
1799168 blocks [2/2] [UU]
Nel caso vogliate segnalare degli errori o suggerimenti, potete farlo all'indirizzo email psubiaco@yahoo.com.
Per la stesura di questo documento ho fatto riferimento ad i seguenti testi:
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.62)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers -nonavigation /tmp/lyx_tmpdir4443M0MQLF/lyx_tmpbuf4443GuDOau/raid1.tex
The translation was initiated by Paolo Subiaco on 2002-12-04