Guida alle tecnologie

Configurare RAID1 e GRUB su Fedora 8: preparazione di /dev/sda

5 min read Amministrazione di sistema Aggiornato 01 Oct 2025
RAID1 e GRUB su Fedora 8: preparare /dev/sda
RAID1 e GRUB su Fedora 8: preparare /dev/sda

Questo articolo spiega come aggiungere le partizioni di /dev/sda a un array RAID1 esistente (/dev/md0, /dev/md1, /dev/md2), aggiornare /etc/mdadm.conf e preparare GRUB in modo che il sistema possa avviarsi anche se un disco fallisce. Include comandi, output di esempio, controlli, checklist e suggerimenti di ripristino.

7 Preparazione di /dev/sda

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

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              4.4G  2.4G  1.8G  58% /  
/dev/md0               99M   15M   80M  16% /boot  
tmpfs                 185M     0  185M   0% /dev/shm  
[root@server1 ~]#

Controlla anche lo stato degli array con:

cat /proc/mdstat

L’output dovrebbe essere simile a questo:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1]  
      104320 blocks [2/1] [_U]  
  
md1 : active raid1 sdb2[1]  
      513984 blocks [2/1] [_U]  
  
md2 : active raid1 sdb3[1]  
      4618560 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Ora dobbiamo cambiare il tipo delle tre partizioni su /dev/sda a “Linux raid autodetect”:

fdisk /dev/sda

Eseguendo fdisk, i comandi appaiono così (input tra frecce):

[root@server1 ~]# fdisk /dev/sda

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!

Output finale dopo il write:

Calling ioctl() to re-read partition table.  
Syncing disks.  
[root@server1 ~]#

A questo punto aggiungi /dev/sda1, /dev/sda2 e /dev/sda3 agli array RAID corrispondenti:

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

Verifica di nuovo con:

cat /proc/mdstat

Dovresti vedere la sincronizzazione degli array:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0] sdb1[1]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[2] sdb3[1]  
      4618560 blocks [2/1] [_U]  
      [=====>...............]  recovery = 29.9% (1384256/4618560) finish=2.3min speed=22626K/sec  
  
unused devices:   
[root@server1 ~]#

Nota: puoi eseguire “watch cat /proc/mdstat” per avere un aggiornamento continuo dello stato. Per uscire da watch, premi Ctrl+C.

Aspetta che la sincronizzazione sia completata. Quando finisce, l’output sarà simile a questo:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0] sdb1[1]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[0] sdb3[1]  
      4618560 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

Aggiornare /etc/mdadm.conf

Dopo la sincronizzazione rigenera la configurazione di mdadm:

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

Controlla il file risultante:

cat /etc/mdadm.conf

Dovrebbe contenere righe del tipo:

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

(Questi UUID sono di esempio; sul tuo sistema saranno diversi.)

Importante: conserva il file /etc/mdadm.conf aggiornato prima di ricreare il ramdisk o riavviare.

8 Preparazione di GRUB — Parte 2

Ora dobbiamo aggiornare /boot/grub/menu.lst. Attualmente il primo stanza del kernel punta a /dev/sdb (hd1,0). Per fare in modo che il sistema si avvii anche se /dev/sdb dovesse guastarsi, copia la prima stanza del kernel, incollala subito sotto e sostituisci hd1 con hd0. Inoltre commenta tutte le altre voci kernel non necessarie.

Apri il file:

vi /boot/grub/menu.lst

Il risultato dovrebbe assomigliare a questo esempio:

# 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 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=/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

Dopo aver salvato menu.lst, aggiorna il ramdisk corrente e crea uno nuovo:

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

Quindi riavvia il sistema:

reboot

Dovrebbe avviarsi correttamente.

Congratulazioni: hai configurato con successo RAID1 software su un sistema Fedora 8 in esecuzione.


Controlli rapidi dopo il riavvio

  • Verifica che /proc/mdstat mostri tutti gli array in stato [UU].
  • Controlla /etc/mdadm.conf contenga le ARRAY corrette.
  • Assicurati che /boot contenga initrd e vmlinuz aggiornati.
  • Prova a rimuovere temporaneamente un disco (simulazione) e verifica che il sistema resti avviabile.

Checklist ruolo-based

Amministratore di sistema (pre-azione):

  • Backup della /etc e /boot.
  • Verifica spazio libero su /boot.
  • Note: prendere nota dei valori di UUID e delle versioni del kernel.

Amministratore di sistema (azione):

  • Cambiare tipo partizione su /dev/sda con fdisk.
  • mdadm –add per ogni partizione.
  • monitorare /proc/mdstat fino a sincronizzazione completa.
  • mdadm –examine –scan > /etc/mdadm.conf.
  • Modificare /boot/grub/menu.lst per puntare anche a hd0.
  • Ricreare initrd e riavviare.

Gestore operativo (post-azione):

  • Eseguire test di failover e ripristino.
  • Documentare il procedimento e aggiornare runbook.

Criteri di accettazione (1-linea ciascuno)

  • Tutti gli array mostrano [UU] in /proc/mdstat.
  • /etc/mdadm.conf contiene tutte le ARRAY correnti.
  • Il sistema si avvia con /dev/sdb presente e senza /dev/sdb (simulazione occupata).
  • /boot contiene il nuovo initrd corrispondente al kernel in uso.

Quando questo approccio può fallire e mitigazioni

  • Disco secondario non rilevato: verificare cavi/SATA/RAID firmware.
  • Partizioni con dimensioni non corrispondenti: ricreare partizioni con dimensioni identiche a quelle del disco funzionante.
  • GRUB legacy non compatibile con UEFI: su sistemi UEFI usare GRUB2 e partizioni EFI.
  • Sincronizzazione molto lenta: controllare I/O, carico del sistema e velocità del bus; pianificare fuori orario.

Approcci alternativi

  • Usare parted per gestire tabelle GPT su dischi più grandi.
  • Usare LVM su RAID per flessibilità aggiuntiva.
  • Su sistemi moderni usare GRUB2 e partizione EFI anziché menu.lst.

Playbook rapido (passi essenziali)

  1. Eseguire backup: /etc, /boot.
  2. fdisk /dev/sda → impostare type fd su partizioni 1,2,3.
  3. mdadm –add per ogni partizione.
  4. Monitorare con watch cat /proc/mdstat fino a [UU].
  5. mdadm –examine –scan > /etc/mdadm.conf.
  6. Modificare /boot/grub/menu.lst per includere hd0.
  7. mv e mkinitrd per creare nuovo initrd.
  8. reboot e verificare avvio e integrità RAID.

Snippet / Cheat sheet

  • Aggiungere partizione a RAID: mdadm –add /dev/mdX /dev/sdY1
  • Ricreare mdadm.conf: mdadm –examine –scan > /etc/mdadm.conf
  • Verificare stato: cat /proc/mdstat
  • Monitoraggio continuo: watch -n 2 cat /proc/mdstat

Glossario (1 riga ciascuno)

  • RAID1: mirroring block-level tra due o più dischi.
  • mdadm: tool user-space per gestire software RAID in Linux.
  • initrd: immagine ramdisk usata all’avvio per caricare moduli necessari.

Rischi principali e mitigazioni

  • Perdita dati se si sbaglia il disco: verificare sempre device name (es. sda vs sdb).
  • Boot failure dopo modifica GRUB: mantenere copia di menu.lst e avere accesso a un live/rescue media.
  • Config non persistente: aggiornare /etc/mdadm.conf e rigenerare initrd.

Sommario

Hai aggiunto le partizioni di /dev/sda agli array RAID1, atteso la sincronizzazione, aggiornato /etc/mdadm.conf, adattato GRUB e ricreato il ramdisk. Dopo il riavvio il sistema dovrebbe avviarsi correttamente sia da /dev/sdb sia da /dev/sda.

Note finali:

  • Testa sempre la procedura in un ambiente non produttivo prima di applicarla in produzione.
  • Documenta ogni step e conserva backup aggiornati.
Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/