CREARE UN RAID-1 SOFTWARE (CON BOOT) DA SISTEMA GIA' INSTALLATO

(TESTATO SU GUTSY )

di Emiliano Genghini


L'idea e' quella di creare un raid-1 degradato con il disco "nuovo" ed uno "missing"(mancante), copiarci il sistema presente sul disco di partenza ed avviarlo. Successivamente se l'array e' stato caricato correttamente ricostruirlo aggiungendoci il nostro disco di partenza.

N.B. Io uso come nomi delle devices sda(sistema) e sdb(nuovo) ma potrebbero anche essere hda, hdb o altro.



N.B. Nell'installazione guidata originale esiste solo questa partizione,oltre a quella di swap corrispondente a sda2<sda5> (prova comando fdisk -l), che non interessa mettere in raid anche perche' si dovrebbe ricreare le partizioni su entrambi i dischi ed utilizzare mkswap (non mkfs). ( si potra' sempre fare in un secondo momento). Comunque in presenza di altre partizioni ripetere le ultime 4 operazioni anche per esse (sfdisk --change-id /dev/sdb 2 fd, ... mdadm ..md1 ...sdb2, mkfs.. md1) .


Si trovera' una cosa del genere

        # /etc/fstab: static file system information.
        #
        # <file system> <mount point>   <type>  <options>       <dump>  <pass>
        proc            /proc           proc    defaults        0       0
        # /dev/sda1 
        UUID=5b918ade-f914-4376-b54c-87614c71c7c4 / ext3 defaults,errors=remount-ro 0 1
        # /dev/sda5 
        UUID=043bf781-ae6e-4de5-b50f-8aa28525d8c9 none swap sw 0 0
        /dev/scd0       /media/cdrom0   udf,iso9660 ro,user,noauto  0       0
        /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0


N.B.Nell' installazione guidata del live cd non e' prevista partizione di boot, compresa nella root come cartella /BOOT (altrimenti di regola dovrebbe essere la sda1 es. # /dev/sda1 UUID=ecb6c120-e475-40c4-9ce4-6c2a81b7b495 /boot ext3 defaults 0 2) Al posto delle partizioni da montare /dev/sda1 .. sostituire /dev/md0... (nel caso definite da UUID eliminarli e rimuovere il # da /dev...) lasciare intatta swap .


-

Modificare

        # /etc/fstab: static file system information.
        #
        # <file system> <mount point>   <type>  <options>       <dump>  <pass>
        proc            /proc           proc    defaults        0       0
        /dev/md0  / ext3 defaults,errors=remount-ro 0 1

        # /dev/sda5 
        UUID=043bf781-ae6e-4de5-b50f-8aa28525d8c9 none swap sw 0 0     //non ho toccato ne' swap 
        /dev/scd0       /media/cdrom0   udf,iso9660 ro,user,noauto  0       0         //ne' periferiche
        /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0


        (nel caso di partizione /boot o altre) 
        /dev/md0  /boot ext3 defaults 0 2
        /dev/md1  / ext3 defaults,errors=remount-ro 0 1
        /dev/md2 ...

Dopo varie linee si trovera' una cosa del genere

        title        Ubuntu, kernel 2.6.22-14-generic
        root        (hd0,0)
        kernel        /boot/vmlinuz-2.6.22-14-generic root=UUID=3dac90fe-82d5-4a98-b577-af104a084e0d
        ro quiet splash
        initrd        /boot/initrd.img-2.6.22-14-generic
        quiet
        savedefault

        ....title .......(recovery mode)

        .........

-

Modificare

        title        Ubuntu, kernel 2.6.22-14-generic
        root        (hd1,0)                                            //Parte da disco 1
        kernel        /boot/vmlinuz-2.6.22-14-generic root=/dev/md0    //modificata root nell'array 
        ro quiet splash
        initrd        /boot/initrd.img-2.6.22-14-generic
        quiet
        savedefault

#update-initramfs -u

Aggiorno immagine kernel

#mount /dev/md0 /mnt/Raid1

Monto md0. Ignorare eventuale messaggio se che non crea collegamento (/etc/mtab) .

#cp -dpRx / /mnt/Raid1

Copio i dati della partizione root del disco originale, in cui nel mio caso c'e' anche la cartella di BOOT (nel fstab montata su / da /dev/sda1 ) nell'array md0

#umount /mnt/Raid1

Smonto md0. Ignorare eventuale messaggio se che non crea collegamento (/etc/mtab)


N.B. Come al solito in presenza di altre partizioni ripetere i passaggi anche per quelle, chiaramente modificando i nomi mdX in riferimento a fstab. (OCCHIO SE C'E" /boot e' fondamentale per l'avvio).



N.B. Controllare qui che tutto funzioni a dovere perche' sara' l'ultima occasione di recuperare i dati dal disco originale! (semplicemente saltando da qui alla riconfigurazione del boot sul disco 0 piu' avanti e al riavvio risettando fstab mtab come prima)



PATCH DI BUG NOTO (120375)

SPIEGAZIONE PER CHI INTERESSATO In pratica se uno dei due dischi si rompe o l'array risulta degradato il sistema non si avvia e cade in shell in quanto non trova devices di root. Cio' e' dovuto al fatto che nel file /etc/udev/rules.d/85-mdadm.rules e' presente le condizione di assemblamento array (mdadm --assemble --scan) --no-degraded che fa si' che esso non venga costituito se non in presenza di entrambe le periferiche. Sostituendo --no-degraded con --run (che forza la creazione dell'array anche se degradato) il tutto parte ma crea un altro problema: Il sistema vedendo la device array (mdX) gia' costituita (anche se degradata...)si avvia senza cercare altri compnenti, creando COMUNQUE un array degradato. Per ovviare a tutto cio' si interviene sul file /usr/share/initramfs-tools/local, responsabile dell'avvio delle devices. In esso e' settato un tempo di default (Slumber=180) di 180 secondi (che io abbasserei un po' e si capira' perche') entro il quale il sistema deve trovare la device di root, altrimenti cade nella "busy box" shell. Quindi lasciando intatto l'85-mdadm.rules con --no-degraded attendiamo che (in caso id degradamento) trascorra questo tempo e, solo ora, introduciamo la creazione di un array degradato.

In pratica:

1 Attesa device root di 180 secondi (3 minuti! io abbasserei lo Slumber)- se tutto va bene avvia qui e prima.

2 (Introdotto da noi) Non trovata udev crea array degradato

3 "Busy box"

Per farla breve:



Subito prima del commento "# We have given up, but we will let the user fix matters if they can". copiare le seguenti linee:

        # Array in stato degradato 
        if [ ! -e "${ROOT}" ] || ! /lib/udev/vol_id "${ROOT}" >/dev/null 2>&1; then 
                 log_begin_msg "Tentativo di avvio RAID degraded arrays" 
                 /sbin/mdadm --assemble --scan 
                 log_end_msg 
        fi 

Il nostro

        title        Ubuntu, kernel 2.6.22-14-generic
        root        (hd1,0)                                                                     //Parte da disco 1
        kernel        /boot/vmlinuz-2.6.22-14-generic root=/dev/md0    
        ro quiet splash
        initrd        /boot/initrd.img-2.6.22-14-generic
        quiet
        savedefault
        ....title .......(recovery mode)

        .........

-

Modificare

        title        Ubuntu, kernel 2.6.22-14-generic
        root        (hd0,0)                                                                     //Parte da disco 0
        kernel        /boot/vmlinuz-2.6.22-14-generic root=/dev/md0     
        ro quiet splash
        initrd        /boot/initrd.img-2.6.22-14-generic
        quiet
        savedefault


<RIAVVIARE IL NOSTRO RAID-1 FUNZIONANTE>


COMANDI UTILI PER CHECK UP

REBUILDING DI RAID DEGRADATO


CategoryHomepage

EmilianoGenghini/Prove0 (l'ultima modifica รจ del 14/03/2011 12.57.30, fatta da localhost)