RAID1 su CentOS/RedHat 6 — Guida pratica
Questa guida spiega come convertire un sistema CentOS/RedHat 6 con un solo disco in un array RAID1 a due dischi senza reinstallare il sistema. Include i comandi mdadm e dracut, istruzioni per copiare i dati, aggiornare initramfs e suggerimenti per rendere il sistema avviabile anche se uno dei dischi si guasta. Esegui sempre backup e verifica prima di iniziare.
Introduzione
Autore: Maurice Hilarius - Hard Data Ltd. - 12 ottobre 2011
Questa procedura mostra come trasformare un sistema CentOS 6 con un singolo disco in un sistema a due dischi in mirror (RAID1). L’obiettivo è che il boot riesca anche se uno dei dischi si guasta. Tutti i comandi devono essere eseguiti come root.
Importante: effettua un backup completo e verifica il backup prima di cominciare.
Prerequisiti e avvertenze
- Accesso root (su -).
- Un disco aggiuntivo di dimensioni uguali o maggiori all’originale (nell’esempio: /dev/sda ~1002GB come disco target, /dev/sdb disco originale).
- Backup verificato: non saltare questo passaggio.
- Tempo e finestra di manutenzione: la sincronizzazione può richiedere ore su dischi grandi.
- Se SELinux è abilitato, seguire la sezione dedicata alla rilabelizzazione.
Cosa succede in breve: si crea un array RAID in stato degradato usando le partizioni del nuovo disco, si crea il filesystem sui device md, si copia il contenuto dal disco originale alle nuove partizioni RAID, si rigenera initramfs e si installa GRUB su entrambi i dischi.
Layout di esempio iniziale
Nel mio esempio il layout iniziale era:
Disco con OS installato (Originale)
Device Mountpoint Size
——————————————————————————–
/dev/sdb ~1002GB
/dev/sdb1 /boot 256MB
/dev/sdb2 / 24GB
/dev/sdb3 swap 4GB
/dev/sdb5 /var 4GB
/dev/sdb6 /home ~900GB
Aggiungeremo l’altro disco: /dev/sda (~1002GB) come disco target.
1) Backup e verifica
- Esegui il backup completo dei dati.
- Verifica il backup ripristinando almeno alcuni file di prova.
2) Creare le partizioni sul disco target
Copia la tabella delle partizioni dal disco originale al disco nuovo:
sfdisk -d /dev/sdb | sfdisk /dev/sda
Questo clona le partizioni (inclusi start/size/flags) da /dev/sdb a /dev/sda.
3) Caricare i moduli del kernel (evitare il reboot)
Carica i moduli necessari:
modprobe linear
modprobe raid0
modprobe raid1
Controlla che i moduli siano caricati:
cat /proc/mdstat
Dovresti vedere le personalità RAID disponibili, anche se non ci sono array ancora.
4) Creare gli array RAID in stato degradato
Creiamo gli array RAID1 usando le partizioni del disco nuovo e specificando il secondo disco come mancante:
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 missing
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sda2 missing
mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sda5 missing
mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sda6 missing
Nota su GRUB 0.97: se usi GRUB legacy (default in CentOS 5/6) potresti ricevere l’errore “Filesystem type unknown, partition type 0xfd” al momento dell’installazione di GRUB. In tal caso crea gli array con metadata 0.90:
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=2 /dev/sda1 missing
Questa opzione rende il layout compatibile con il bootloader legacy.
5) Verificare gli array
Controlla lo stato degli array:
cat /proc/mdstat
Output d’esempio:
Personalities : [raid1]
md1 : active raid1 sdb2[1]
473792 blocks [2/2] [U_]
md2 : active raid1 sdb5[1]
4980032 blocks [2/2] [U_]
md3 : active raid1 sdb6[1]
3349440 blocks [2/2] [U_]
md0 : active raid1 sdb1[1]
80192 blocks [2/2] [U_]
unused devices:
Simboli chiave: U indica un membro attivo, indica membro mancante. In stato degradato vedrai U finché non aggiungi la seconda partizione.
6) Salvare la configurazione mdadm
Genera /etc/mdadm.conf dalla configurazione corrente:
mdadm --detail --scan > /etc/mdadm.conf
Verifica il file:
cat /etc/mdadm.conf
Puoi anche aggiungere successivamente nuovi dispositivi con:
mdadm --detail --scan >> /etc/mdadm.conf
(se preferisci appenderli invece di sovrascrivere).
7) Rigenerare l’initramfs con dracut
Sposta l’attuale initramfs e ricreane uno che includa mdadm.conf:
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old
dracut --mdadmconf --force /boot/initramfs-$(uname -r).img $(uname -r)
Questo assicura che l’ambiente di early-boot sappia come assemblare gli array RAID.
8) Creare filesystem sui device RAID
Crea i filesystem sui dispositivi /dev/md creati:
mkfs.ext2 /dev/md0 # /boot ext2 è sufficiente
mkfs.ext4 /dev/md1 # / ext4
mkfs.ext4 /dev/md2 # /var ext4
mkfs.ext4 /dev/md3 # /home ext4
mkswap -c /dev/sda2 # swap: test integrità e crea swap sul disco nuovo
Nota: nello script originale il comando mkswap viene eseguito su /dev/sda2; dopo la sincronizzazione aggiungerai /dev/sdb2 come swap per bilanciamento.
9) Copiare i dati dal disco originale ai nuovi md devices
Montare e copiare i dati usando cpio in modalità preserva-permessi:
mkdir /mnt/raid
mount /dev/md0 /mnt/raid
cd /boot; find . -depth | cpio -pmd /mnt/raid
Se SELinux è in uso, crea il flag per rilabelizzare al prossimo boot:
touch /mnt/raid/.autorelabel
sync
umount /mnt/raid
mount /dev/md1 /mnt/raid
cd / ; find . -depth -xdev | grep -v '^\./tmp/' | cpio -pmd /mnt/raid
sync
umount /mnt/raid
Nota: non copiare i contenuti di /tmp o /var/tmp. Il comando creerà mount point vuoti come proc o dev ma non copierà mount point soggetti a special filesystem.
mount /dev/md2 /mnt/raid
cd /var; find . -depth | cpio -pmd /mnt/raid
sync
umount /mnt/raid
mount /dev/md3 /mnt/raid
cd /home; find . -depth | cpio -pmd /mnt/raid
sync
umount /mnt/raid
Dopo queste operazioni i dati del sistema originale saranno copiati sui device RAID.
10) Aggiornare /etc/fstab e /boot/grub/menu.lst
Modifica /etc/fstab per montare i device RAID (/dev/mdX) invece delle partizioni raw (/dev/sdbX). Puoi usare dispositivi MD by-UUID (più affidabile). Esempio per fstab:
- Sostituire /dev/sdb1 con /dev/md0 per /boot
- Sostituire /dev/sdb2 con /dev/md1 per /
Ottieni gli UUID con:
blkid
Aggiorna anche /boot/grub/menu.lst (o grub.conf) per puntare al kernel corretto. In CentOS 6 il file si trova solitamente in /boot/grub/grub.conf o /boot/grub/menu.lst.
11) Installare GRUB su entrambi i dischi
Per garantire che il sistema possa avviarsi se un disco fallisce, installa GRUB sul MBR di entrambi i dischi:
grub-install /dev/sda
grub-install /dev/sdb
Se usi GRUB legacy e incontri problemi, è possibile avviare la shell di grub e installare manualmente. L’opzione –metadata=0.90 usata prima aiuta la compatibilità con GRUB legacy.
12) Aggiungere le partizioni originali all’array (fase finale)
Dopo che i file sono copiati e i file di configurazione aggiornati, aggiungi le partizioni del disco originale all’array per iniziare la ricostruzione mirror:
mdadm --add /dev/md0 /dev/sdb1
mdadm --add /dev/md1 /dev/sdb2
mdadm --add /dev/md2 /dev/sdb5
mdadm --add /dev/md3 /dev/sdb6
Monitorare la ricostruzione:
watch -n 5 cat /proc/mdstat
Aspetta che gli array raggiungano lo stato [UU] (tutti i membri attivi) prima di riavviare.
13) Testare il boot e la resilienza
- Una volta sincronizzato, riavvia il sistema e verifica che entri normalmente.
- Per testare la tolleranza ai guasti, simula l’assenza di un disco (ad es. disconnettilo o usa mdadm per dichiararlo failed) e verifica che il sistema continui a funzionare:
mdadm --fail /dev/md1 /dev/sdb2
mdadm --remove /dev/md1 /dev/sdb2
Reinserisci il disco o aggiungi un nuovo dispositivo con mdadm –add e verifica la ricostruzione.
Esempi di comandi utili per il ripristino
- Verificare dettagli di un array:
mdadm --detail /dev/md1
- Segnare un dispositivo come guasto e rimuoverlo:
mdadm --fail /dev/md1 /dev/sdb2
mdadm --remove /dev/md1 /dev/sdb2
- Aggiungere il nuovo membro:
mdadm --add /dev/md1 /dev/sdb2
- Reinstallare GRUB su una unità appena sostituita:
grub-install /dev/sdb
Criteri di accettazione
- Tutte le partizioni critiche (/boot, /, /var, /home) sono su dispositivi /dev/mdX e montano correttamente dopo reboot.
- /proc/mdstat mostra gli array con tutti i membri attivi ([UU]).
- GRUB è installato su entrambi i dischi e il sistema si avvia da ciascun disco singolarmente (test manuale).
- Backup funzionante e test di ripristino eseguito prima dell’intervento.
Controlli e test di accettazione
- Verificare che blkid mostri UUID aggiornati in /etc/fstab.
- Eseguire un riavvio senza il disco secondario (o simulare failure) per verificare il boot.
- Controllare i log dmesg e /var/log/messages per errori RAID.
Procedura rapida di rollback/ripristino in caso di problemi
- Se il sistema non si avvia dopo la modifica, avvia da LiveCD o rescue mode.
- Monta la root originale e ripristina /etc/fstab e /boot/grub/menu.lst dalla copia di backup.
- Ripristina l’immagine initramfs originale (file .old) se necessario.
- Reinstallare GRUB sul disco primario.
Checklist per ruoli
- Amministratore (prima dell’intervento): backup completo, tempi di fermo concordati, verificare integrità backup.
- Operatore (durante): eseguire i comandi mdadm/sfdisk, monitorare /proc/mdstat, riportare errori.
- Tester (dopo): verificare mount, avvio da entrambi i dischi, controllare servizi critici.
Glossario (definizioni in una riga)
- mdadm: utility per gestire software RAID su Linux.
- RAID1: mirror dei dati su due dischi per ridondanza.
- initramfs: immagine di init usata dall’init loader per montare root early-boot.
- dracut: strumento per generare initramfs.
- GRUB: bootloader usato per caricare kernel e initramfs.
Problemi comuni e risoluzioni rapide
- Errore GRUB “Filesystem type unknown”: ricreare i RAID con –metadata=0.90 per compatibilità con GRUB legacy.
- Array non si ricostruisce: controllare messaggi in dmesg, assicurarsi che le partizioni siano dello stesso tipo e dimensione.
- Differenze SELinux: creare /mnt/raid/.autorelabel prima del primo boot per consentire rilabeling.
Note finali e best practice
- Mantieni aggiornato /etc/mdadm.conf ogni volta che modifichi gli array.
- Conserva una procedura documentata per la sostituzione disco e la reinstallazione di GRUB.
- Monitora lo stato degli array con strumenti di supervisione (es. Nagios, Prometheus) e configuri alert su eventi di degraded.
Riferimenti e suggerimenti alternativi
- Per sistemi più recenti considera l’uso di GRUB2 o di LVM su RAID per maggiore flessibilità.
- Per grandi flotte, automatizza la configurazione con strumenti di gestione configurazione (Ansible, Puppet).
Riepilogo
Questa guida mostra come creare un RAID1 su CentOS/RedHat 6 partendo da un singolo disco, includendo creazione partizioni, array degradati, copia dati, rigenerazione initramfs, installazione GRUB e test di resilienza. Segui la checklist, verifica i backup e monitora la ricostruzione fino alla completa sincronizzazione.
Materiali simili

Sincronizzare contatti iPhone con iCloud

Lavorare dall'iPhone: guida pratica per l'ufficio mobile

Annotare PDF gratis senza watermark — Foxit Reader

Immagine profilo Netflix personalizzata: guida completa

Eliminare il tuo account eBay in modo sicuro
