[howto] Creare un Raid-1 partendo da un sistema già installato
Articolo di Emiliano Genghini, pubblicato su ubuntu-forum
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. L’howto usa come nomi delle devices sda(sistema) e sdb(nuovo)
1 Installazione di MDADM
$sudo su
apt-get install mdadm
2. Copia delle partizioni dal disco di sistema (sda) al disco di mirror nuovo (sdb). Modifica della partizione del disco di destinazione in “Linux Raid Autodetec”
sfdisk -d /dev/sda | sfdisk /dev/sdb
sfdisk --change-id /dev/sdb 1 fd
3. Creazione dell’array in RAID-1 con un disco mancante e il nuovo disco (sdb)
mdadm --zero-superblock /dev/sdb1
mdadm -C /dev/md0 -l1 -n2 missing /dev/sdb1
4. Creazione del filesystem per la nuova device e aggiornamento della configurazione di mdadm
mkfs.ext3 /dev/md0
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
5. Editare il file /etc/fstab
gedit /etc/fstab # /etc/fstab: static file system information.
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
# /dev/sda1
UUID=ecb6c120-e475-40c4-9ce4-6c2a81b7b495 /boot ext3 defaults 0 2)
6 Sostituire i riferimenti al disco di sistema (sda1, sda2) con i riferimenti all’array /dev/md0. Nel caso siano definite da UUID, eliminarli e usare /dev/md
# /etc/fstab: static file system information.
#
#
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
/dev/md0 /boot ext3 defaults 0 2
/dev/md1 / ext3 defaults,errors=remount-ro 0 1
7. La stessa cosa per il file /etc/mtab (cambiare /dev/sda1 in /dev/md0 ecc..)
gedit /etc/mtab
8. Configurare il boot loader in moda da partire dall’array appena creato (disco 1)
gedit /boot/grub/menu.lst
Localizzare:
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
e modificare in:
title Ubuntu, kernel 2.6.22-14-generic
root (hd1,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
9. A questo punto, aggiornare l’immagine del kernel
update-initramfs -u
10. Procedere con la copia dei dati dal disco originale di sistema
mount /dev/md0 /mnt
cp -dpRx / /mnt
umount /mnt
Come al solito in presenza di altre partizioni ripetere i passaggi anche per quelle, chiaramente modificando i nomi mdX in riferimento a fstab.
11. Setup di Grub per l’avvio dal disco 1
grub
root (hd1,0)
setup(hd1)
quit
12. Riavviare il sistema. Quindi, verifichiamo che tutto sia andato bene:
cat /proc/cmdline //se tutto e' andato bene root=/dev/md0 ...o md1 insomma l'array
cat /proc/mdstat
L’ultimo comando, dovrebbe restituire lo stato del raid (1 periferica assente) [2/1][_U].
A questo punto, eliminamo i dati dal disco di sistema, in quanto copiati nel raid, e aggiungiamo il disco ex-sistema al raid.
sfdisk --change-id /dev/sda 1 fd
mdadm -a /dev/md0 /dev/sda1
cat /proc/mdstat
L’ultimo comando dovrà indicare il resync delle periferiche.