Espandere un array RAID degradato
TL;DR
Espandi un array RAID degradato rimuovendo il device difettoso, azzerando il superblock, avviando il sistema di recupero, aumentando l’array con mdadm, ridimensionando il PV e infine il LV e il filesystem. Importante: azzerare il superblock su /dev/sda5 prima di riaggiungerlo.
Panoramica
Questa guida spiega i passaggi per crescere (grow) un array RAID degradato usando mdadm e LVM. Le istruzioni coprono la rimozione del disco, l’azzeramento del superblock, l’attivazione in ambiente rescue, l’espansione dell’array, il ridimensionamento del PV/LV e il ripristino della sincronizzazione tra dischi.
Passo 1 — Verificare e rimuovere il device difettoso
Prima di entrare nel sistema di rescue, assicurati che /dev/sda5 sia realmente rimosso dall’array:
mdadm --manage /dev/md1 --fail /dev/sda5
mdadm --manage /dev/md1 --remove /dev/sda5Questi comandi marcano la periferica come fallita e la rimuovono dall’array. Verifica lo stato con cat /proc/mdstat dopo la rimozione.
Importante
Azzerare il superblock su /dev/sda5 è fondamentale. Se lo dimentichi, il sistema potrebbe non avviarsi correttamente dopo il ridimensionamento.
mdadm --zero-superblock /dev/sda5Passo 2 — Avviare il sistema di rescue e caricare i moduli necessari
Avvia il rescue system (ad es. una live di Knoppix o simile) e attiva i moduli kernel necessari:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10Quindi attiva gli array RAID e aggiorna la configurazione di mdadm:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scanAvvia anche LVM:
/etc/init.d/lvm startPasso 3 — Crescere l’array e il PV
Adesso puoi ingrandire /dev/md1 al massimo spazio disponibile:
mdadm --grow /dev/md1 --size=max–size=max indica il valore massimo possibile. In alternativa puoi specificare la dimensione in KiB.
Quindi ridimensiona il PV LVM sulla nuova dimensione dell’array:
pvresize /dev/md1Controlla lo stato del volume group:
vgdisplayEsempio di output:
root@Knoppix:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 29
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 4.75 GB
PE Size 4.00 MB
Total PE 1217
Alloc PE / Size 1023 / 4.00 GB
Free PE / Size 194 / 776.00 MB
VG UUID X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0
root@Knoppix:~#Nell’esempio ci sono 194 PE (Physical Extents) liberi per un totale di circa 776 MB disponibili per l’LV.
Passo 4 — Estendere l’LV e il filesystem
Alloca i PE liberi al Logical Volume root:
lvextend -l +194 /dev/server1/rootEsegui un controllo del filesystem immediatamente prima del ridimensionamento:
e2fsck -f /dev/server1/rootRidimensiona il filesystem ext2/3/4:
resize2fs /dev/server1/rootEsegui un secondo controllo post-resize:
e2fsck -f /dev/server1/rootDopo questi passi, il filesystem sfrutterà lo spazio aggiuntivo dell’LV.
Passo 5 — Riaggiungere il disco rimosso e ricostruire l’array
Riavvia sul sistema normale e aggiungi /dev/sda5 nuovamente all’array /dev/md1. Prima azzera il superblock (se non l’hai già fatto):
mdadm --zero-superblock /dev/sda5
mdadm -a /dev/md1 /dev/sda5Controlla lo stato di sincronizzazione:
cat /proc/mdstatDovresti vedere che /dev/sdb5 e /dev/sda5 sono sincronizzati o in fase di sincronizzazione.
Cosa può andare storto e come intervenire
- Errore: mdadm non trova l’array. Controlla che i moduli kernel md siano caricati e che mdadm.conf contenga le definizioni corrette.
- pvresize non aumenta il PV: verifica che /dev/md1 sia stato realmente cresciuto e che non ci siano snapshot o LVs che limitano l’operazione.
- resize2fs fallisce: assicurati che il filesystem sia supportato (ext2/3/4). Per XFS usa xfs_growfs dopo aver esteso il LV.
- Il sistema non si avvia dopo il resize: ricontrolla fstab, UUID dei dischi e la presenza dei superblock errati sui dispositivi.
Alternative e approcci diversi
- Ricostruire l’array su nuovi dischi invece di riutilizzare il disco rimosso.
- Usare backup + restore in caso di danni al filesystem che impediscono il resize.
- Se usi filesystem diversi (es. XFS), segui gli strumenti specifici (xfs_admin, xfs_growfs).
Checklist rapida (Playbook)
- Confermare quale device è degradato (/proc/mdstat)
- Fail e remove del device degradato
- mdadm –zero-superblock sul device rimosso
- Avviare rescue e caricare moduli
- mdadm –examine –scan e mdadm -A –scan
- pvresize su /dev/md1
- Controllare vgdisplay per PE liberi
- lvextend e e2fsck / resize2fs
- Riaggiungere il device e verificare cat /proc/mdstat
Cheat sheet comandi principali
- Fail e rimuovere: mdadm –manage /dev/md1 –fail /dev/sda5; mdadm –manage /dev/md1 –remove /dev/sda5
- Azzerare superblock: mdadm –zero-superblock /dev/sda5
- Crescere array: mdadm –grow /dev/md1 –size=max
- Ridimensionare PV: pvresize /dev/md1
- Estendere LV: lvextend -l +
/dev/ / - Controllo filesystem: e2fsck -f /dev/
/ - Resize filesystem ext4: resize2fs /dev/
/
Glossario breve
- RAID: Redundant Array of Independent Disks, insieme di dischi gestiti come array.
- mdadm: Utility per gestire MD (Multiple Device) RAID su Linux.
- PV/PVresize: Physical Volume LVM; pvresize aggiorna la dimensione del PV.
- LV: Logical Volume, volume logico gestito da LVM.
- PE: Physical Extent, unità minima di allocazione in LVM.
Collegamenti
- Knoppix: http://www.knoppix.net/
Riepilogo finale
Rimuovere correttamente il disco degradato e azzerare il superblock sono passi critici. Carica i moduli in rescue, usa mdadm –grow e pvresize per aumentare la capienza, quindi estendi l’LV e il filesystem. Infine, riaggiungi il disco e verifica la sincronizzazione.
Nota: mantieni sempre backup aggiornati prima di operazioni su array e LVM.