Configurare RAID1 e preparare GRUB per il boot da /dev/md
Importante: lavora con accesso root e backup completi. Queste operazioni toccano boot e filesystem; un errore può rendere il sistema non avviabile.
4 Creazione degli array RAID
Creeremo gli array RAID /dev/md0, /dev/md1 e /dev/md2. /dev/sdb1 sarà aggiunto a /dev/md0, /dev/sdb2 a /dev/md1 e /dev/sdb3 a /dev/md2. /dev/sda1, /dev/sda2 e /dev/sda3 non possono essere aggiunti ora perché il sistema è in esecuzione su di essi; per questo motivo usiamo il placeholder missing nei comandi seguenti:
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
Il comando seguente mostra lo stato degli array:
cat /proc/mdstat
Dovresti vedere tre array RAID degradati ([U] o [U] indica array degradato; [UU] indica array integro):
[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1]
4618560 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
513984 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]
unused devices:
[root@server1 ~]#
Ora creiamo i filesystem sugli array RAID (ext3 su /dev/md0 e /dev/md2, swap su /dev/md1):
mkfs.ext3 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2
Quindi generiamo il file /etc/mdadm.conf con la scansione degli array:
mdadm --examine --scan > /etc/mdadm.conf
Visualizza il contenuto del file:
cat /etc/mdadm.conf
Nel file dovresti vedere i dettagli relativi ai tre array RAID (ancora degradati):
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49
5 Adattare il sistema a RAID1
Montiamo /dev/md0 e /dev/md2 (non è necessario montare l’array swap /dev/md1):
mkdir /mnt/md0
mkdir /mnt/md2
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2
Controlla che siano presenti con il comando mount:
mount
Esempio di output con i nuovi mount:
[root@server1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
/dev/md2 on /mnt/md2 type ext3 (rw)
[root@server1 ~]#
Modifica /etc/fstab: sostituisci LABEL=/boot con /dev/md0, LABEL=SWAP-sda2 con /dev/md1 e LABEL=/ con /dev/md2 in modo che il file contenga le righe seguenti:
/dev/md2 / ext3 defaults 1 1
/dev/md0 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/md1 swap swap defaults 0 0
Poi aggiorna /etc/mtab sostituendo LABEL=/boot con /dev/md0 e LABEL=/ con /dev/md2:
vi /etc/mtab
Esempio di contenuto aggiornato:
/dev/md2 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
Passiamo ora al bootloader GRUB. Apri /boot/grub/menu.lst e aggiungi fallback=1 subito dopo default=0:
vi /boot/grub/menu.lst
Dovresti avere qualcosa del genere:
[...]
default=0
fallback=1
[...]
Questo imposta un fallback al secondo kernel se il primo fallisce (conteggio kernel da 0).
Nello stesso file, copia la prima voce kernel e incollala prima della prima stanza esistente; poi sostituisci root=LABEL=/ con root=/dev/md2 e root (hd0,0) con root (hd1,0). Esempio:
[...]
title Fedora (2.6.23.1-42.fc8)
root (hd1,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
title Fedora (2.6.23.1-42.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
L’intero file potrebbe apparire così:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=0
fallback=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenu
title Fedora (2.6.23.1-42.fc8)
root (hd1,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
title Fedora (2.6.23.1-42.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
root (hd1,0) punta a /dev/sdb che è già parte degli array RAID. Procederemo al riavvio a breve: il sistema tenterà il boot dagli array RAID (ancora degradati); in caso di fallimento userà il fallback su /dev/sda.
Aggiorniamo il ramdisk alla nuova configurazione:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
Copia ora il contenuto di /dev/sda1 e /dev/sda3 verso /dev/md0 e /dev/md2 (montati su /mnt/md0 e /mnt/md2):
cp -dpRx / /mnt/md2
cd /boot
cp -dpRx . /mnt/md0
6 Preparazione di GRUB (Parte 1)
Installiamo il bootloader GRUB sul secondo disco fisso /dev/sdb:
grub
Nella shell di GRUB esegui i comandi seguenti:
root (hd0,0)
Output atteso:
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub>
Quindi:
setup (hd0)
Esempio di dialogo di installazione:
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
Poi ripeti per il secondo disco (qui root (hd1,0) corrisponde a /dev/sdb):
root (hd1,0)
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub>
setup (hd1)
Esempio di output:
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
Esci dalla shell di GRUB:
quit
Torna alla shell normale e riavvia il sistema per testare il boot dagli array RAID:
reboot
Controlli rapidi prima del riavvio
- Verifica che /etc/fstab e /etc/mtab siano aggiornati e corretti.
- Conferma che /mnt/md0 e /mnt/md2 contengano rispettivamente /boot e / (es. ls /mnt/md0).
- Assicurati che /etc/mdadm.conf sia presente e contenga le direttive ARRAY.
- Salva una copia del file di configurazione GRUB originale.
Checklist operativa per ruolo
Amministratore (prima del riavvio):
- Backup completo dei dati e della partizione /boot.
- Verifica degli UUID con blkid.
- Conferma che i comandi mkfs e mkswap siano stati eseguiti correttamente.
Operatore (test post-riavvio):
- Verificare cat /proc/mdstat per lo stato degli array.
- Controllare dmesg e /var/log/messages per errori di disco o GRUB.
- Se necessario, avviare in single-user mode per riparazioni.
Casi comuni e risoluzione
- Se il sistema non si avvia: avvia da un live CD/USB, monta le partizioni RAID, verifica /boot/grub/menu.lst e reinstalla GRUB su entrambi i dischi.
- Se un array è degradato dopo il riavvio: usare mdadm –add per ricostruire la copia mancante quando il dispositivo è disponibile.
- Se initrd non contiene i moduli MD: rigenera l’initrd con mkinitrd e ricopia in /boot.
Matrice dei rischi e mitigazioni
- Rischio: perdita di bootloader su entrambi i dischi. Mitigazione: installare GRUB su entrambi i dischi (/dev/sda e /dev/sdb).
- Rischio: filesystem non copiati correttamente. Mitigazione: usare cp -dpRx e controllare permessi/ownership.
Mini-metodologia
- Creare gli array degradati usando missing per sostituire i dischi attivi.
- Creare filesystem e swap sugli array.
- Montare e copiare i dati su /dev/md*.
- Aggiornare fstab/mtab e rigenerare initrd.
- Installare GRUB su entrambi i dischi e testare il riavvio.
Comandi riepilogo (cheat sheet)
- Creazione array: mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdY
- Creare ext3: mkfs.ext3 /dev/mdX
- Creare swap: mkswap /dev/md1
- Generare mdadm.conf: mdadm –examine –scan > /etc/mdadm.conf
- Copiare root: cp -dpRx / /mnt/md2
- Reinstallare GRUB: grub -> root (hd0,0) -> setup (hd0) -> root (hd1,0) -> setup (hd1)
Diagramma decisionale per il boot (semplificato)
flowchart TD
A[Riavvio] --> B{Boot da /dev/md2 OK?}
B -- Sì --> C[Sistema avviato da RAID]
B -- No --> D{Fallback su /dev/sda}
D -- Sì --> E[Boot da /dev/sda]
D -- No --> F[Intervento manuale da Live USB]
Glossario in una riga
- mdadm: utilità Linux per gestire array RAID software.
- /dev/mdX: device rappresentante un array RAID software.
- GRUB: bootloader comune su sistemi Linux tradizionali.
Riepilogo
- Abbiamo creato tre array RAID1 degradati, formattato i filesystem, aggiornato fstab/mtab, rigenerato l’initrd, copiato i dati e installato GRUB su entrambi i dischi per la ridondanza.
- Prima di riavviare, usa la checklist e assicurati di avere backup e un metodo di recovery (Live USB).
Note: se uno dei passaggi fallisce, non forzare il riavvio: avvia da un ambiente di soccorso e correggi la configurazione degli array e del bootloader.
Materiali simili

Unire video con VLC — Guida rapida

Servizio Print Spooler non in esecuzione: soluzioni rapide

Nascondere Mi piace e commenti nella scheda Amici di Instagram
RAID1 e GRUB: migrare /boot e / su /dev/md

Scaricare e installare Windows 11 25H2 (Release Preview)
