[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [riminilug-general] Raid 1
Francesco Zoffoli wrote:
Per realizzare un raid1 (mirror) con due dischi da 40gb cosa devo fare?
Ci posso mettere sopra tutto? (/boot - /home - / - ecc..) ?
Una volta realizzato come lo controllo?
Per sostituire uno dei 2 dischi?
Grazie
Se realizzi raid hardware, allora il devi compilare il kernel per
gestire la controller.
Per realizzare un raid software, il discorso e' un po' complesso da fare
tramite mail, ma ci provero' ugualmente.
NOTA: PRIMA DI PROCEDERE FAI IL BACKUP DEI DATI!!!
Innanzitutto ci sono diverse scuole di pensiero su come collegare i
dischi alla controller ide. Io preferisco collegare i due dischi settati
entrambi come master su IDE0 e IDE1. In tal modo Linux vede i due dischi
come /dev/hda e /dev/hdc (giusto per intenderci). L'eventuale CD puoi
metterlo come slave su IDE1 (/dev/hdd). Se sei piu' fortunato e hai
dischi SCSI, non hai questo problema.
Per prima cosa devi compilare il kernel (se non e' gia' compilato) per
supportare il raid1 software.
Se hai gia' linux funzionante su un disco, puoi partizionare il 2^ disco
in modo identico al primo (fdisk /dev/hdc).
Per ogni partizione cambia il tipo della partizione da 83 a fd
(riconoscimento in automatico del raid al boot).
Puoi fare lo stessa cosa anche per le partizioni di swap (da 82 a fd).
Verifica che il raid 1 sia attivo a livello di kernel con il comando cat
/proc/mdstat. Dovresti vedere una riga che indica una Raid Personality a
1 (o qualcosa del genere)
Crea il file /etc/raidtab definendo le partizioni sul disco dove hai
linux funzionante (di solito /dev/hdax) come fault.
Per rendere piu' semplice la gestione, ti consiglio di definire /dev/mdx
formato dalle partizioni /dev/hdax e /dev/hdcx
Consulta man raidtab
Es:
# partizione /boot
raiddev /dev/md1
raid-level 1
nr-raid-disk 2
persistent-superblock 1
chunk-size 64
device /dev/hdc1
raid-disk 0
device /dev/hda1
failed-disk 1
# partizione /
raiddev /dev/md5
raid-level 1
nr-raid-disk 2
persistent-superblock 1
chunk-size 64
device /dev/hdc5
raid-disk 0
device /dev/hda5
failed-disk 1
# partizione /home
raiddev /dev/md6
raid-level 1
nr-raid-disk 2
persistent-superblock 1
chunk-size 64
device /dev/hdc6
raid-disk 0
device /dev/hda6
failed-disk 1
Crea il raid con il comando mkraid /dev/mdx per ogni partizione che vuoi
mettere in raid. Cosi' facendo hai delle partizioni raid degradate, in
quanto lavorano solo su un disco (per il momento).
Crea i file system che ritieni opportuno sulle partizioni raid (es:
mkreiserfs /dev/mdx oppure mkfs.ext3 /dev/mdx)
Monta ciascuna partizione su /mnt e copia i dati da /dev/hdax
es:
# mount /dev/md5 /mnt
# cd /
# find . -xdev -print | cpio -pdumB /mnt
# find . -xdev -type f -exec diff -q {} /mnt/{} \;
#umount /mnt
L'esempio copia la directory di root sulla partizione raid /dev/md5,
limitando al solo file system dove e' montata la root. Opzionalmente
puoi fare una diff per verificare che tutto sia andato ok. Nell'esempio
ho limitato la diff ai soli "regular files" per evitare falsi errori che
diff puo' stampare nel caso che effettui diff -rq per rami di
sottodirectory. Prima di umount puoi fare una df -m come ulteriore
controllo fra il file system da copiare e quello copiato.
Ovviamente non devi fare nulla per le partizioni di swap, ma solo mkswap
/dev/mdx.
Ammesso che la / sia associata a /dev/md5, devi fare:
# mount /dev/md5 /mnt
# vi /mnt/etc/fstab
--> modificare i device da /dev/hdax a /dev/mdx nella mount del sistema
operativo.
# umount /mnt
A questo punto la cosa piu' igienica e' procurarsi un floppy e poi
copiarci il kernel, impostando il device di boot sul device raid.
Ipotizzando sempre che / sia associato a /dev/md5, allora:
# fdformat /dev/fd0u1440
# dd if=/boot/vmlinuz of=/dev/fd0
# rdev /dev/fd0 /dev/md5
# rdev -r /dev/fd0 0
# rdev -R /dev/fd0 1
Cosi' facendo copi il kernel (ammesso che sia in /boot/vmlinuz) sul
floppy, impostando il device di root come /dev/md5.
Prova a fare un boot impiegando il floppy, dovresti bootare da raid e
vedere le partizioni montate sul raid.
Puoi dare una df e/o una mount per verificare che stia procedendo tutto ok!
Puoi anche vedere cosa dice cat /proc/mdstat
Non ti preoccupare se noti che il raid e' degradato. Ora, se tutto e'
ok, e' il momento di dare in pasto /dev/hda al raid.
Con fdisk /dev/hda cambia il tipo di partizione da 83 (o 82) a fd.
Aggiungi ciascuna partizione del disco hda al raid: raidhotadd /dev/mdx
/dev/hdax e osserva /proc/mdstat. Noterai dell'attivita' sui dischi.
Viene creato a caldo il raid.
Una volta che i dischi fisici costituenti il raid sono allineati, viene
l'operazione piu' delicata. Modificare le configurazione per il boot del
sistema.
Io ho esperienza con Lilo.
Conviene creare 2 configurazioni di lilo e conviene rinominare la
configurazione originale. Cosi' facendo se digitiamo lilo, da un errore
perche' non trova piu' /etc/lilo.conf
# cd /etc
# cp -ipd lilo.conf lilo.conf.hda
# cp -ipd lilo.conf lilo.conf.hdc
# mv -i lilo.conf lilo.conf.bad
Modifica in lilo.conf.hda:
boot=/dev/hda
map=/boot/map.hda
root=/dev/mdx (es root=/dev/md5)
bios=0x80
In analogia modifica lilo.conf.hdc, sostituendo le ricorrenze hda in hdc.
Inizializza i 2 master boot record:
lilo -C /etc/lilo.conf.hda
lilo -C /etc/lilo.conf.hdc
Se e' andato tutto ok, puoi provare fare il boot (ovviamente togli il
floppy) e verifica che si avvii da /dev/mdx.
Ovviamente verifica che le partizioni montate siano tutte quelle raid
In seguito se aggiungi un'immagine per il boot, devi modificare entrambe
le configurazioni /etc/lilo.conf.hd? e rilanciare i due comandi lilo -C
/etc/lilo.conf.hd?
Se riesci ancora a riavviare regolarmente il sistema, puoi fare uno
shutdown e togliere uno dei due dischi (es hdc). Verifica che il sistema
parta ancora.
Spegni, ricollega hdc, riparti. Puoi verificare che il raid si e'
degradato (cat /proc/mdstat). Allora raidhotadd /dev/mdx /dev/hdcx per
ogni partizione raid (swap compreso).
Al termine dalla ricostruzione delle partizioni raid, spegni, scollega
hda e riparti. Verifica che sia tutto ok.
Spengi, ricollega hda e riparti. Se tutto ok ricostruisci il raid
(raidhotadd /dev/mdx /dev/hdax per ogni partizione raid - swap compresi).
Non ti spaventare delle operazioni che ti ho descritto: sono piu' facili
di quello che sembrano. Ovviamente se sul sistema su cui devi
intervenire hai una installazione gia' in produzione, devi muoverti con
i "piedi di piombo" prestando molta attenzione.
Se invece hai un sistema appena installato, se qualcosa dovesse andare
storto, allora non dovrebbe dispiacerti troppo... alla peggio riparti da
"zero".
Nota: - non tutte le distribuzioni gestiscono il raid SW in fase di
installazione di Linux. Per intenderci il boot da cd non gestisce il
kernel con i moduli raid compilati, per cui e' necessario installare
Linux normalmente e poi procedere alla creazione del raid come ho descritto.
Nota: - ho scritto questa mail in base a cio' che mi ricordavo da
installazioni effettuate e funzionanti. Spero di non aver tralasciato nulla.
Have fun
Umberto.