CyberTek - the future at the present!

Linux, passare da singolo disco a raid

Posted by: (lug 20)
Passare da una configurazione a singolo disco ad una raid con 2 dischi. Le informazioni riportate sono valide per RedHat, Debian, Ubuntu e many more …

Situazione iniziale:

/dev/sda1 – /boot
/dev/sda2 – /
/dev/sda3 – swap
/dev/sda5 – /var
/dev/sda6 – /home

Il nuovo disco è /dev/sdb.
Installare mdadm se non già presente nel sistema.
Per Debian:
aptitude install mdadm / dpkg-reconfigure mdadm
Per Redhat:
yum install mdadm

Modificare il tipo delle partizioni in “fd” (Linux raid autodetect”).

Device Boot Start End Blocks Id System
/dev/sda1 1 7 56196 fd Linux raid autodetect
/dev/sda2 8 1251 9992430 fd Linux raid autodetect
/dev/sda3 1252 1495 1959930 fd Linux raid autodetect
/dev/sda4 1496 19457 144279765 5 Extended
/dev/sda5 1496 2224 5855661 fd Linux raid autodetect
/dev/sda6 2225 19457 138424041 fd Linux raid autodetect

Creare sul nuovo disco le partizioni, sempre di tipo “fd” e formattarle col filesystem voluto (ext3 per root!). Si può usare sfdisk per accellerare le operazioni in maniera significativa:

sfdisk -d /dev/sda | sfdisk /dev/sdc

si può ora usare mdadm per creare i volumi raid. Impostare il primo disco (/dev/sda) come “missing” per preservarne i dati esistenti:

mdadm –create /dev/md0 –level 1 –raid-devices=2 missing /dev/sdc1

Ripetere per tutti gli altri volumi che si vogliono creare (md1, md2, …)

ATTENZIONE! Se si intende replicare i numeri delle partizioni md (md1, md2, md5, md…) in accordo con quelli sd[n], occorre fare alcune operazioni aggiuntive che spiegheremo in seguito sul file di conf di mdadm; partire da md0 e rispettando una sequenza progressiva rende l'operazione più facile:

mdadm –create /dev/md1 –level 1 –raid-devices=2 missing /dev/sdc2

Formattate i singoli volumi raid con il file system voluto:
mkfs.ext3 /dev/md0
mkfs.xfs /dev/md1
mkswap /dev/md2
mkfs.xfs /dev/md3
mkfs.xfs /dev/md4

Montare i nuovi volumi raid e procedete alla copia dei dati desiderati
mount /dev/md0 /mnt
cp -dpRx /boot/* /mnt
umount /mnt

(l’opzione -dpRx preserva gli attrubuti e, nel caso di filesystem montati, crea solo la dir)

Ripetere per tutti gli altri volumi raid…
mount /dev/md1 /mnt
cp -dpRx / /mnt
umount /mnt

Modificare /etc/fstab per fare usare i volumi raid:

# /etc/fstab: static file system information.
#
# proc /proc proc defaults 0 0##/dev/sda2 / xfs defaults 0 1
/dev/md1 / xfs defaults 0 1##/dev/sda1 /boot ext3 defaults 0 2
/dev/md0 /boot ext3 defaults 0 2##/dev/sda3 none swap sw 0 0
/dev/md2 none swap sw 0 0##/dev/sda5 /var xfs defaults 0 2
/dev/md3 /var xfs defaults 0 2##/dev/sda6 /some xfs defaults,quota 0 2
dev/md4 /some xfs defaults.quota 0 2
/dev/sdb /media/cdrom udf,iso9660,user,noauto 0 0
/dev/fd0 /media/floppy auto rw,user,noauto 0 0


Modificare o creare il file /etc/mdadm/mdadm.conf in rispetto di quanto riportato in /etc/fstab:

DEVICE partitions
# /
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=220a85ef:3072d384:b934adcf:3d8b599b
devices=/dev/sda1,/dev/sdc1 auto=yes
# swap
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=238b4e00:cf1cc4a1:e3bf2a7a:3d793c7a
devices=/dev/sda2,/dev/sdc2 auto=yes
[ARRAY ------------------------------------------------------------]
MAILADDR root@localhost

Dove l’UUID di ciascun array è desunto dal comando:
mdadm -D md[n]
E dove altre opzioni si trovano nel file:
/etc/default/mdadm

Installare grub oltra che in /dev/sda anche in /dev/sdc per mettersi al riparo da guai:
grub-install /dev/sda
grub
grub: device (hd0) /dev/sdb
grub: root (hd0,0)
grub: setup (hd0)
grub: quit

Se si usa un kernel modulare, ricordarsi di eseguire “mkinitrd …” per far caricare all’avvio del sistema anche i moduli che gestiscono il raid:

mkinitrd -r /dev/md1 -o /tmp/initrd-[versionedelkernel]

[ dpkg-reconfigure kernel-image-[versionedelkernel] ]

ATTENZIONE:

Sovrascrivete il file initrd attuale con quello appena creato avendo premura di fare una copia di backup di quello attivo ed eventualmente creare una sezione in /boot/grub menu.lst col kernel attuale, per le emergenze.

Riavviate la macchina (avere SEMPRE un floppy con Grub disponibile!) Dopo il reboot, dovremmo avere una situazione simile a questa:

#Filesystem blocchi di 1K Usati Disponib. Uso% Montato su
/dev/md1 9982080 1923780 8058300 20% /
udev 10240 112 10128 2% /dev
devshm 1021820 0 1021820 0% /dev/shm
/dev/md0 54348 20776 30766 41% /boot
/dev/md3 5845312 733712 5111600 13% /var
/dev/md4 138356348 4524 138351824 1% /home

Assicurarsi che il boot sia avvenuto dalla partizione giusta:
cat /proc/cmdline //deve ripostare la root in /dev/md1

A questo punto i dati originali sono già sul nuovo disco e possiamo aggiungere le varie partizioni di /dev/sda al RAID…
mdadm –add /dev/md0 /dev/sda1
mdadm –add /dev/md1 /dev/sda2
mdadm –add /dev/md2 /dev/sda3
mdadm –add /dev/md3 /dev/sda5
mdadm –add /dev/md4 /dev/sda6

Il sistema inizia a sincronizzare i dati e, dopo un tempo che dipende dalle dimensioni delle partizioni, dovremmo avere questa situazione:

ltsp2:~# cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sda6[1] sdc6[1]
5855552 blocks [2/2] [UU
md3 : active raid1 sda5[1] sdc5[1]
138423936 blocks [2/2] [UU]
[ snip --------------- ]

Si puo’ controllare quanto avviene durante la sincronizzazione dei dischi col comando:ltsp2:~#
more /proc/mdstat

—-[POST SCRIPTUM]—-

Comandi utili:

Mettere in “fail” le partizione di un disco (? = numero partizione)
mdadm -f /dev/md1 /dev/sda?

Rimuovere le partizioni di un disco (? = numero partizione):
mdadm -r /dev/md1 /dev/sda?

Azzerare il superblock
mdadm –zero-superblock /dev/sda?

Esaminare il RAID, dal “punto di vista di sdc…
mdadm -E /dev/sdc[n]

Dal “punto di vista di sda…
mdadm -E /dev/sda[n]

(Opzione da aggiungere come parametro del kernel in /boot/grub/menu.lst)
root=/dev/md1 md=0,/dev/sda1,/dev/sdc1 ro

Published in: linux, shell, tips
  1. Marco Said,

    Ciao, volevo seguire la tua guida…. una cosa mi sfugge: dove dici che “Modificare il tipo delle partizioni in “fd” (Linux raid autodetect”).” dove lo faccio?? in quale file?

    grazie!
    Marco

  2. admin Said,

    Scusa la risposta in grande ritardo. Spero possa cmq servire.
    Usando il comando fdisk segui la seguente procedura, assumendo che il mio disco sia definito come /dev/sda:
    fdisk -l #per visualizzare i miei dischi
    fdisk /dev/sda #apro il device sda
    p #stampo la mia situazione attuale, esempio:
    Dispositivo Boot Start End Blocks Id System
    /dev/sda1 * 1 2627 21101346 83 Linux
    /dev/sda2 2628 9729 57046784+ 5 Esteso
    /dev/sda5 2628 2755 1028128+ 82 Linux swap / Solaris
    /dev/sda6 2756 9729 56018623+ 83 Linux

    t #permette di cambiare tipo di partizione
    poi seleziona la tua partizione, da 1 a 6 nel nostro caso d’esempio
    fd #imposti il tipo di partizione di tua utilità

    altri comandi utili:
    m #elenco dei comandi disponibili
    L #elenco dei tipi di partizione conosciuti

Add A Comment

Spam protection by WP Captcha-Free

Powered by CyberTek - Assistenza Remota