Newsgroup: it.comp.os.linux.sys
Titolo: Sputtanamento Raid

Ho fatto alcune prove con mdadm, per fare un raid 1 della partizione di una
macchina linux.
Tutto il sistema è su un'unica partizione.
Fino ad adesso ho introiato due macchine di test.
L'ultima ieri pomeriggio.
Prendo un disco sacrificabile da 3 gb.
Faccio 3 partizioni: hda1 swap, hda2 installazione, hda3 (stessa dimensione
di hda2) vuota.
Controllo che il sistema funzioni e parta da hda2 e sembra ok.
Faccio il boot con un cd live.
Imposto le due partizioni da mettere in raid in raid autodetect (FD)
Poi: mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/hda2
missing.
Mi chiede conferma che c'è già un file system attivo e poi crea l'array.
Monto /dev/md0, vado in etc/fstab a modificare il punto di mount di / da
/dev/hda2 a /dev/md0.
Vado in /boot/grub e modifico menu.lst in modo che root=/dev/md0.
Aggiungo l'altra partizione
mdadm /dev/md0 --add /dev/hda3
e comincia a sincronizzarsi.
Riavvio il tutto, comincia a caricarsi il kernel quando:
waiting for device /dev/md0 to appear: ok
no record for 'md0' in database
rootfs: major=9 minor=0 devn=2304
/dev/md0: unknown volume type
=: not found
Mounting root /dev/md0
Usage mount (lista di parametri)
Kernel panic - not syncing.
Ho provato a mettere in fstab il tipo di file system sia auto che ext3 senza
esito.
Dopo vari controlli che tutto sembra ok, provo a ritornare indietro, rimuovo
la partizione hda3 e stoppo il raid con mdadm -S /dev/md0.
Ripristino le partizioni con il flag di partizione linux normale.
Rimodifico fstab e menu.lst
Spero che riparta ma nisba.
waiting for device /dev/hda2 to appear: ok
no record for 'hda2' in database
rootfs: major=3 minor=2 devn=770
Mounting root /dev/hda2
Usage mount (lista di parametri)
Kernel panic - not syncing.
Guardando quanto scritto da Giacomini, ho provato anche a fare il resize2fs,
ma non sembra qui il problema.
Dove vado a sbattere la testa?
Sembra che il fatto di aver creato il raid abbia combinato qualcosa sulla
tabella delle partizioni e non riesco più a sistemarla.
Nel caso volessi tornare indietro, forse devo eliminare il superblocco alla
fine delle partizioni? Se si come?
Da notare che se monto hda2 dal cd di rescue si vedono tutti i file.
Ultima roba: ho attaccato il disco in raid ad una disco con so funzionante.
Ho ricreato l'array con soltanto la partizione con i dati, ho svuotato
l'altra e poi l'ho aggiunta.
E' iniziata la sincronizzazione (doveva durare 5 minuti) e a questo punto ho
voluto fare il bastardo simulando un reboot per vedere come se la cavava.
I 5 minuti non sono passati, ma al riavvio guardando /proc/mdstat mi diceva
che il raid era ok. La cosa mi sembra molto strana.
Ho provato a togliere la seconda partizione dal raid e controllarla,
sembrava che ci fossero tutti i file (anche se non so in che stato).
Ne sapete qualcosa?
Grazie

 Ma stai cercando di raidare due partizioni SULLO STESSO DISCO ?
Sul sistema di prova si, nel sistema reale no.
Ho preferito provare a impostare le cose su un ambiente di prova.
Non ne vengo fuori.
Ho trovato un articolo in cui si parlava che con il kernel 2.4 (io ho il
2.6.18) non bisognava usare devfs e poi ricostruivano l'initrd. Però era
un'installazione da 0.
Il problema principale è che la macchina non può essere reinstallata.

 
Non vorrei sbagliare ma probabilmente devi ricreare l'immagine initrd
caricata dal bootloader inserendoci i moduli per gestire il raid.
Ciao.
-- 
*** Linux user # 198661 ---_ ICQ 33500725 ***
    ***  Home  
http://www.kailed.net
  ***
        ***  Powered by openSUSE  ***

 Kernel panic - not syncing.
Per come funziona il processo di boot in Linux, non può funzionare se 
non ricrei initrd con i moduli per il raid.
Linux carica in memoria initrd e crea un mini-sistema Linux sul ramdisk; 
poi usando quel sistema operativo monta la vera partizione root e 
continua il processo di boot. Ora, se in initrd non ci sono i moduli per 
il raid, arrivato al punto in cui deve montare la vera root il processo 
di boot non riconosce il tipo di partizione e non riuscendo a montare /, 
urla di dolore e muore.
A seconda della versione di mkinitrd e della tua distro, devi o 
aggiungere raid1 (e tutti gli altri moduli caricati automaticamente in 
memoria quando crei e monti l'array, fai un po' di esperimenti) a 
/etc/mkinitrd/modules e poi eseguire mkinitrd, oppure dargli l'opzione 
--with=raid1 (e, di nuovo, metterci anche gli altri moduli) quando lo esegui
Non dico che questo risolverà tutti i problemi, ma se non lo fai sono 
abbastanza certo che i kernel panic continueranno a ripetersi
Eugenio

 Ne sapete qualcosa?
Oltre a quanto detto dagli altri relativamente a initrd, la tua procedura ha
un difetto di base ed è il fatto che non è corretto creare un raid partendo
da un filesystem esistente come hai fatto tu.
Il motivo sta nel fatto che i superblocchi del raid sono posizionati in
fondo ai device che compongono il mirror, quindi nell'area dati valida del
filesystem esistente; potrebbero essere sovrascritti in ogni istanete, in
particolare in caso di riempimento della partizione.
La procedura corretta in questo caso sarebbe dunque quella di restringere il
filesystem di partenza, mettere in raid la partizione ed estendere il
filesystem specificando però come dispositivo il device md.
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 
Le partizioni che metti in raid le hai configurate come
type = linux-raid in fdisk ?
 Giovanni
-- 
/*
 * SnB - 
http://www.snb.it
 */

 abbastanza certo che i kernel panic continueranno a ripetersi
 Provo.
Ieri sera ho provato a creare il raid in fase di installazione ed è andato.
Lo so anche io che è meglio creare il raid prima di installare la macchina.
In questo caso il cliente si è svegliato dopo aver installato la macchina e
vuole il raid.
Quello che non capisco però è perché se rimetto le partizioni a 83 Linux e
rimodifico il file di configurazione di grub e fstab non mi riparta più la
macchina.
Per il discorso del superblocco alla fine, su Appunti di Inf. libera diceva
di fare un fsck/resizefs e dovrebbe andare.