Guida alle tecnologie

Preparare /dev/sda e GRUB su CentOS 5.3

5 min read Amministrazione Sistemi Aggiornato 10 Oct 2025
RAID1 su CentOS 5.3: preparare /dev/sda e GRUB
RAID1 su CentOS 5.3: preparare /dev/sda e GRUB

Introduzione

Questo documento spiega i passi finali per sincronizzare un secondo disco (/dev/sda) in una configurazione software RAID1 su CentOS 5.3 e per rendere avviabile il sistema anche se il disco primario (/dev/sdb) dovesse guastarsi. Definizione rapida: RAID1 = mirroring dei dati su due dischi, utile per alta disponibilità.

Importante: esegui backup dei dati critici prima di modificare partizioni o bootloader.

Controllare gli array RAID attivi

Se tutto è andato a buon fine, dovresti vedere /dev/md0 e /dev/md2 nell’output di:

df -h

Esempio di output:

[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              9.2G  1.1G  7.7G  12% /  
/dev/md0              190M   14M  167M   8% /boot  
tmpfs                 252M     0  252M   0% /dev/shm  
[root@server1 ~]#

L’output di

cat /proc/mdstat

dovrebbe assomigliare a questo nel caso in cui solo /dev/sdb fosse attualmente presente negli array:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sdb1[1]  
200704 blocks [2/1] [_U]  
  
md1 : active raid1 sdb2[1]  
522048 blocks [2/1] [_U]  
  
md2 : active raid1 sdb3[1]  
9759360 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Cambiare il tipo di partizione su /dev/sda

Dobbiamo impostare il tipo delle tre partizioni su /dev/sda a “Linux raid autodetect” (codice esadecimale fd). Esegui:

fdisk /dev/sda

Esempio di sessione interattiva (mostrata come riferimento — premi i tasti indicati):

[root@server1 ~]# fdisk /dev/sda  
  
The number of cylinders for this disk is set to 1305.  
There is nothing wrong with that, but this is larger than 1024,  
and could in certain setups cause problems with:  
1) software that runs at boot time (e.g., old versions of LILO)  
2) booting and partitioning software from other OSs  
(e.g., DOS FDISK, OS/2 FDISK)  
  
Command (m for help): <-- t  
Partition number (1-4): <-- 1  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 1 to fd (Linux raid autodetect)  
  
Command (m for help): <-- t  
Partition number (1-4): <-- 2  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 2 to fd (Linux raid autodetect)  
  
Command (m for help): <-- t  
Partition number (1-4): <-- 3  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 3 to fd (Linux raid autodetect)  
  
Command (m for help): <-- w  
The partition table has been altered!  
  
Calling ioctl() to re-read partition table.  
  
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.  
The kernel still uses the old table.  
The new table will be used at the next reboot.  
Syncing disks.  
[root@server1 ~]#

Note: il messaggio di warning è normale se le partizioni sono montate o in uso; le modifiche saranno attive dopo il riavvio, ma non è necessario riavviare per aggiungerle all’array RAID con mdadm.

Aggiungere le partizioni /dev/sda all’array RAID

Esegui questi comandi per inserire le nuove partizioni nei rispettivi array:

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3

Subito dopo, controlla lo stato:

cat /proc/mdstat

Dovresti vedere che gli array stanno iniziando la sincronizzazione:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sda1[0] sdb1[1]  
200704 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
522048 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[2] sdb3[1]  
9759360 blocks [2/1] [_U]  
[====>................]  recovery = 22.8% (2232576/9759360) finish=2.4min speed=50816K/sec  
  
unused devices:   
[root@server1 ~]#

Suggerimento: per monitorare in tempo reale usa:

watch cat /proc/mdstat

Premi CTRL+C per uscire da watch.

Attendi fino al completamento della sincronizzazione. Quando è finita, l’output sarà simile a:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sda1[0] sdb1[1]  
200704 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
522048 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[0] sdb3[1]  
9759360 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

Aggiornare /etc/mdadm.conf

Rigenera la configurazione di mdadm in base agli UUID attuali:

mdadm --examine --scan > /etc/mdadm.conf

Esempio del file risultante:

cat /etc/mdadm.conf

| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=78d582f0:940fabb5:f1c1092a:04a55452 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8db8f7e1:f2a64674:d22afece:4a539aa7 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1baf282d:17c58efd:a8de6947:b0af9792 |

Conserva questo file: è importante per il riconoscimento automatico degli array all’avvio.

Preparare GRUB (fase finale)

Dobbiamo aggiornare /boot/grub/menu.lst in modo che il sistema possa avviarsi anche da /dev/sda (hd0). Apri il file con vi o l’editor preferito:

vi /boot/grub/menu.lst

Copiamo la prima stanza kernel che fa riferimento a hd1, incolliamola sotto e sostituiamo hd1 con hd0. Disattiviamo (commentando) le altre voci kernel non volute. Esempio di come dovrebbe apparire:

# 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.gz
hiddenmenu
title CentOS (2.6.18-128.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-128.el5.img

title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-128.el5.img

#title CentOS (2.6.18-128.el5)
#       root (hd0,0)
#       kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/
#       initrd /initrd-2.6.18-128.el5.img

Questo garantisce che GRUB abbia una voce funzionante sia per hd1 (/dev/sdb) sia per hd0 (/dev/sda).

Aggiornare l’initrd e riavviare

Aggiorna l’immagine di ramdisk per il kernel corrente e conserva una copia dell’originale:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Poi riavvia:

reboot

Dopo il riavvio, il sistema dovrebbe avviarsi correttamente dal RAID1 e poter usare /dev/sda come alternativa all’unità principale.


Playbook rapido (sequenza minima)

  1. Verifica array esistenti: cat /proc/mdstat
  2. Cambia tipo di partizione su /dev/sda con fdisk (codice fd)
  3. Aggiungi partizioni a mdadm: mdadm –add …
  4. Monitora: watch cat /proc/mdstat
  5. Aggiorna /etc/mdadm.conf: mdadm –examine –scan > /etc/mdadm.conf
  6. Modifica /boot/grub/menu.lst per aggiungere voce hd0
  7. Ricrea initrd e riavvia

Checklist per i ruoli

Amministratore senior:

  • Verificare backup completi prima di iniziare
  • Coordinare finestre di manutenzione
  • Convalidare output di mdadm e grub dopo le modifiche

Amministratore junior:

  • Eseguire i comandi in ordine e riportare qualsiasi errore
  • Non cancellare file di boot originali (fai copia)
  • Chiedere assistenza se /proc/mdstat mostra errori di I/O

Casi comuni e mitigazioni

  • Sincronizzazione lenta: controlla I/O del disco con iostat; verifica che non ci siano job intensivi.
  • Errore “device or resource busy” dopo fdisk: è normale se partizioni sono montate; puoi forzare rilettura con partprobe o riavviare se necessario.
  • GRUB non avvia: verifica che la voce hd0 punti al corretto device e che il kernel referenzi /dev/md2 come root.
  • UUID mancanti in /etc/mdadm.conf: rigenera con mdadm –examine –scan.

Criteri di accettazione

  • Tutti gli array RAID mostrano [UU] in /proc/mdstat.
  • /etc/mdadm.conf elenca correttamente gli ARRAY con gli UUID correnti.
  • /boot/grub/menu.lst contiene una voce che punta a hd0 ed una a hd1 per lo stesso kernel.
  • Il sistema si avvia correttamente dopo reboot senza intervento manuale.

Comandi utili (cheat sheet)

  • Controllare spazio e mount: df -h
  • Stato RAID: cat /proc/mdstat
  • Aggiungere disco: mdadm –add /dev/mdX /dev/sdYn
  • Rigenerare mdadm.conf: mdadm –examine –scan > /etc/mdadm.conf
  • Aggiornare initrd: mkinitrd /boot/initrd-uname -r.img uname -r
  • Modificare partizioni: fdisk /dev/sda

Piccola runbook di emergenza per il boot failure

  1. Bootare da rescue CD o da un disco alternativo.
  2. Montare il filesystem di /boot della macchina principale.
  3. Eseguire mdadm –assemble –scan per ricostruire gli array.
  4. Controllare /boot/grub/menu.lst e rigenerare initrd se necessario.
  5. Reinstallare GRUB sul disco di fallback se il problema è il bootloader.

FAQ

Q: Come verifico che la sincronizzazione sia davvero completa? A: cat /proc/mdstat deve mostrare [UU] per ogni array e nessuna linea “recovery” in corso.

Q: Posso evitare il riavvio dopo fdisk? A: In molti casi sì: mdadm può aggiungere le partizioni anche se il kernel non ha riletto la tabella; tuttavia, per sicurezza in produzione pianifica un riavvio se il kernel non riconosce le nuove partizioni.


Importante: segui i comandi esatti e non eseguire operazioni distruttive senza un backup. Se non sei sicuro, prova i comandi in un ambiente di test.

Riepilogo

  • Abbiamo cambiato il tipo delle partizioni su /dev/sda, aggiunto le partizioni agli array RAID, monitorato la sincronizzazione, aggiornato mdadm.conf e preparato GRUB. Dopo la ricreazione dell’initrd e il riavvio, il sistema deve essere avviabile sia da /dev/sdb che da /dev/sda.
Autore
Redazione

Materiali simili

Eliminare foto dall’iPhone senza cancellarle da iCloud
iPhone

Eliminare foto dall’iPhone senza cancellarle da iCloud

Integrare SFTP in Esplora file Windows
Guide tecniche

Integrare SFTP in Esplora file Windows

Spostare foto da Facebook a Google+ con Move2Picasa
Social Media

Spostare foto da Facebook a Google+ con Move2Picasa

Scaricare film e serie da Netflix: guida completa
Streaming

Scaricare film e serie da Netflix: guida completa

RAID1 su CentOS 5.3: preparare /dev/sda e GRUB
Amministrazione Sistemi

RAID1 su CentOS 5.3: preparare /dev/sda e GRUB

Vedere il conteggio Dislike su YouTube
Guide.

Vedere il conteggio Dislike su YouTube