[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.