Guida alle tecnologie

Configurare RAID1 e preparare GRUB per il boot da /dev/md

5 min read Linux Server Aggiornato 28 Sep 2025
RAID1 e GRUB: migrare /boot e / su /dev/md
RAID1 e GRUB: migrare /boot e / su /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

  1. Creare gli array degradati usando missing per sostituire i dischi attivi.
  2. Creare filesystem e swap sugli array.
  3. Montare e copiare i dati su /dev/md*.
  4. Aggiornare fstab/mtab e rigenerare initrd.
  5. 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.

Autore
Redazione

Materiali simili

Unire video con VLC — Guida rapida
Video Editing

Unire video con VLC — Guida rapida

Servizio Print Spooler non in esecuzione: soluzioni rapide
Windows

Servizio Print Spooler non in esecuzione: soluzioni rapide

Nascondere Mi piace e commenti nella scheda Amici di Instagram
Privacy social

Nascondere Mi piace e commenti nella scheda Amici di Instagram

RAID1 e GRUB: migrare /boot e / su /dev/md
Linux Server

RAID1 e GRUB: migrare /boot e / su /dev/md

Scaricare e installare Windows 11 25H2 (Release Preview)
Guide.

Scaricare e installare Windows 11 25H2 (Release Preview)

Corneal Key Logger: PIN da una selfie
Sicurezza informatica

Corneal Key Logger: PIN da una selfie