Ricostruire un software RAID (Linux/Server Dedicato e Server Bare Metal)
Per creare un PDF, utilizzare la funzione “Stampa” in fondo alla pagina.
Per Server Dedicati e Server Bare Metal
In questo articolo ti spieghiamo come ricostruire un RAID software dopo aver sostituito un disco difettoso (ad esempio un disco rigido, un SSD o un'unità NVMe) su un Server Dedicato o un Server Bare Metal. Questa guida prende in considerazione sia le configurazioni con RAID 1 sia i sistemi con RAID 5 o RAID 6 software aggiuntivo per le partizioni di dati.
Importante
Queste istruzioni sono valide solo per i Server Dedicati e i Server Bare Metal che utilizzano UEFI come interfaccia tra l'hardware e il sistema operativo. Se disponi di un Server Dedicato che utilizza BIOS come interfaccia tra l'hardware e il sistema operativo, consulta il seguente articolo per informazioni su come ricostruire un software RAID: Ricostruire un software RAID (Linux/Server Dedicato con BIOS)
Segui alla lettera la sequenza dei passaggi descritta.
Verificare se un server utilizza UEFI o BIOS
Per verificare se il tuo server utilizza BIOS o UEFI come interfaccia tra l'hardware e il sistema operativo, immetti il seguente comando:
[root@localhost ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Ulteriori informazioni su UEFI
Per ulteriori informazioni su UEFI, consulta il seguente articolo:
Informazioni importanti sul partizionamento del tuo Server Dedicato
A partire dal 20/10/2021, sui Server Dedicati gestiti nel Cloud Panel verrà creata una sola partizione al momento dell'installazione e della reinstallazione del sistema operativo. Sui Server Dedicati installati prima di questa data e sui Server Dedicati acquistati nell'ambito dei Server in offerta speciale, le immagini del sistema operativo sono dotate di un gestore di volumi logici (Logical Volume Manager ). Il Logical Volume Manager imposta un livello logico tra il file system e le partizioni della memoria dati utilizzata. Ciò permette di creare un file system che copre più partizioni e/o dischi. In questo modo è possibile combinare, ad esempio, lo spazio di archiviazione di più partizioni o supporti dati.
Individuare le informazioni necessarie per ricostruire il software RAID
Prima di iniziare, è necessario verificare la struttura RAID attuale e lo stato delle partizioni.
Visualizzare l'elenco dei dischi e delle partizioni esistenti
Per elencare i dischi e le partizioni esistenti, procedi come segue:
Accedi al server con il tuo account root.
Per elencare i dischi rigidi e le partizioni esistenti, immetti il comando fdisk -l. fdisk è un programma a riga di comando per il partizionamento dei dischi. Con questo programma puoi visualizzare, creare o eliminare partizioni.
[root@localhost ~]# fdisk -l
Prendi nota dei nomi delle unità (ad es. /dev/sda, /dev/sdb, /dev/nvme0n1).
Nota bene:
Dopo una sostituzione hot-swap, il nuovo disco viene spesso riconosciuto come sdc. È assolutamente necessario riavviare il sistema affinché il disco venga nuovamente indirizzato correttamente come sda o sdb.
Individuare i punti di montaggio
Per visualizzare i punti di montaggio delle partizioni e dei dispositivi da te utilizzati, immetti il seguente comando:
[root@localhost ~]# lsblk
Vengono quindi visualizzate, ad esempio, le seguenti informazioni:
[root@2A2E3A1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot/efi
├─sda2 8:2 0 1.4G 0 part
│ └─md2 9:2 0 1.4G 0 raid1 /boot
├─sda3 8:3 0 3.7G 0 part [SWAP]
└─sda4 8:4 0 1.8T 0 part
└─md4 9:4 0 1.8T 0 raid1 /
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot/efi
├─sdb2 8:18 0 1.4G 0 part
│ └─md2 9:2 0 1.4G 0 raid1 /boot
├─sdb3 8:19 0 3.7G 0 part [SWAP]
└─sdb4 8:20 0 1.8T 0 part
└─md4 9:4 0 1.8T 0 raid1 /- Prendi nota dei dispositivi e delle partizioni, insieme ai relativi punti di montaggio. Esempio:
/md4 è montato su / (root)
/md2 è montato su /boot
/md1 è montato su /boot/efi
sda3 e sdb3 sono partizioni di swap (non fanno parte di un array RAID)
Visualizzazione avanzata della struttura RAID con lsblk --inverse
Per una rappresentazione ancora più chiara della struttura RAID, puoi utilizzare in aggiunta il seguente comando:
[root@localhost ~]# lsblk --inverse
Con questo comando l'output viene mostrato al contrario. La struttura non inizia quindi dai singoli dischi, ma dai dispositivi md o dai dispositivi logici. Al di sotto vengono mostrate le relative partizioni e i dischi associati.
Questa vista è particolarmente utile se sono presenti più dispositivi RAID. È il caso, ad esempio, in cui vengano utilizzate array separate per /boot, /, swap o per aree dati aggiuntive. In questo modo puoi vedere direttamente per ogni dispositivo md le partizioni corrispondenti e i punti di mount (mountpoint) in un'unica vista d'insieme. Esempio:
[root@localhost ~]# lsblk --inverse
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda1 8:1 0 1M 0 part
└─sda 8:0 0 3,6T 0 disk
sdb1 8:17 0 1M 0 part
└─sdb 8:16 0 3,6T 0 disk
md2 9:2 0 487M 0 raid1 /boot
├─sda2 8:2 0 488M 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb2 8:18 0 488M 0 part
└─sdb 8:16 0 3,6T 0 disk
md3 9:3 0 3,9G 0 raid1 [SWAP]
├─sda3 8:3 0 3,9G 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb3 8:19 0 3,9G 0 part
└─sdb 8:16 0 3,6T 0 disk
md4 9:4 0 19,5G 0 raid1 /
├─sda4 8:4 0 19,5G 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb4 8:20 0 19,5G 0 part
└─sdb 8:16 0 3,6T 0 disk
vg-kunden 253:1 0 3,3T 0 lvm /client
└─md5 9:5 0 3,6T 0 raid1
├─sda5 8:5 0 3,6T 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb5 8:21 0 3,6T 0 part
└─sdb 8:16 0 3,6T 0 disk
Nota bene
Se non è l'intero disco a smettere di funzionare, potrebbero essere interessate anche solo singole partizioni. In questo caso, è possibile che non tutti i dispositivi md risultino compromessi (degraded). Può quindi accadere che un array RAID sia danneggiato, mentre altri array sullo stesso disco siano ancora intatti. Con lsblk --inverse questo si riesce spesso a individuare più rapidamente.
Visualizzare il contenuto del file fstab ed individuare i file di dispositivo
In alcune configurazioni del server, le directory di sistema come /usr, /var o /home sono esternalizzate su partizioni dedicate. Queste devono essere montate insieme al resto affinché i comandi funzionino all'interno del sistema. A questo scopo, controlla il file fstab sul tuo sistema montato. Per visualizzare il contenuto del file fstab e individuare i relativi file di dispositivo, inserisci il seguente comando:
[root@localhost ~]# cat /etc/fstab
Analizza l'output ottenuto.
Caso A (File system piatto, ad es. Debian 13): se vengono mostrate voci in cui /usr, /var e /proc non sono elencati separatamente, non devi montare altre partizioni. In questo caso puoi saltare i due passaggi successivi e impostare le partizioni montate in un ambiente chroot.
Caso B (Sistema partizionato / LVM): se vengono visualizzate le voci per /usr, /var e /proc, dovrai montarle nell'ambito del ripristino del RAID. La procedura è descritta nella sezione Ripristinare il RAID.
- Annota inoltre se i dispositivi sono integrati tramite UUID o direttamente (ad es. come /dev/md0).
Verificare lo stato del RAID
Verifica quale disco manca nel RAID. Per farlo, inserisci il seguente comando:
[root@localhost ~]# cat /proc/mdstat
Nota bene
In aggiunta a cat /proc/mdstat, puoi utilizzare anche il comando lsblk --inverse. Con questo comando puoi visualizzare i dispositivi md insieme alle relative partizioni e ai punti di mount (mountpoint) in un'unica vista d'insieme. Questo è particolarmente utile se solo singoli array RAID risultano compromessi (degraded).
RAID 1: un array integro mostra [UU]. La "U" sta per Up: il disco è attivo, sincronizzato e fa parte dell'array. Un array difettoso mostra [_U] o [U_].
RAID 5 e RAID 6: partizioni mancanti nell'elenco (ad es. solo sdb5 e sdc5 invece di includere anche sda5) oppure contrassegnate con (F) indicano un guasto.
Dopo il livello del RAID (ad es. active raid5) sono elencate le partizioni che compongono il RAID. Un numero tra parentesi quadre dopo il nome della partizione (ad es. sda4[0]) indica il suo ruolo nell'array. Un'indicazione mancante o una (F) aggiuntiva per "Failed" segnala un problema. Esempi:
RAID 1 (Mirroring) – Un disco guasto
[root@2A2E3A1 ~]# cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sdb4[2] sda4[0]
1947653952 blocks super 1.0 [2/1] [U_]
md2 : active raid1 sdb2[2] sda2[0]
1428416 blocks super 1.0 [2/2] [UU]
md1 : active raid1 sdb1[1] sda1[0]
523200 blocks [2/2] [UU]
unused devices: <none>
RAID 5 (Dati) – Un disco manca completamente
Il RAID 5 viene usato spesso per grandi quantità di dati. Tollera il guasto di al massimo un disco.
md5 : active raid5 sdc1[0] sde1[2] [3/2] [U_U]
sdc1[0] e sde1[2]: Vengono elencate solo due partizioni. Un disco manca completamente dalla lista. Questo può accadere, ad esempio, dopo un guasto hardware in cui la memoria non viene più rilevata dal controller.
[3/2]: L'array si aspetta 3 dischi, ma ce ne sono solo 2.
[_UU]: Il primo disco manca.
RAID 6 (Dati) – Due dischi guasti
Il RAID 6 tollera il guasto simultaneo di un massimo di due dischi.
md6 : active raid6 sdc1[0] sdf1[3] 3895307904 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/2] [U__U]
[4/2]: Su 4 dischi, solo 2 sono attivi.
[U__U]: I due dischi centrali (sdd1 e sde1) sono guasti o sono stati rimossi. Il RAID è ancora funzionante (degraded), ma occorre intervenire con urgenza.
Nota bene
Sui server con RAID 1 e RAID 5 vengono utilizzati, ad esempio, i seguenti dispositivi e partizioni:
[root@B2E14658 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md11 : active raid5 sdb1[1] sde1[0] sdc1[2] sdf1[3]
23442074112 blocks super 1.0 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
bitmap: 2/59 pages [8KB], 65536KB chunk
md125 : active raid1 sda4[0] sdd4[2]
462991168 blocks super 1.0 [2/2] [UU]
bitmap: 2/4 pages [8KB], 65536KB chunk
md126 : active raid1 sda1[0] sdd1[1]
523200 blocks [2/2] [UU]
md127 : active raid1 sda2[0] sdd2[2]
1428416 blocks super 1.0 [2/2] [UU]
Ripristinare il RAID (RAID 1)
La procedura successiva varia a seconda di quale disco sia stato sostituito. Distinguiamo tra il Disco 1 (sda/primario) e il Disco 2 (sdb/secondario). Per il RAID 5/6 si procede in modo analogo.
Importante
Nella sezione “Il disco 1 (sda) è stato sostituito” si presuppone che sia stato sostituito il disco 1 con la denominazione sda. Nella sezione “Il disco 2 (sdb) è stato sostituito” si presuppone invece che sia stato sostituito il disco 2 con la denominazione sdb. Adatta sempre i comandi di questa guida prima dell'inserimento, sostituendo le denominazioni delle unità. A questo scopo, utilizza le informazioni che hai individuato precedentemente.
Il disco rigido 1 (sda) è stato sostituito
Se è stato sostituito il disco rigido 1 (sda), devi verificare che sia stato riconosciuto correttamente. In alcuni casi potrebbe essere necessario eseguire un riavvio. Poiché su sda si trova di solito il bootloader primario, spesso il sistema non si avvia più in modo regolare. Avvia quindi il server nel sistema di ripristino (Rescue System) ed esegui i passaggi indicati di seguito.
Nota bene
Nei seguenti articoli viene descritto come avviare il tuo Dedicated Server o Bare Metal Server nel sistema di ripristino (Rescue System):
Server Dedicati e Bare Metal Server gestiti nel Cloud Panel: Avviare Dedicated Server e Bare Metal Server nel Rescue System di Linux
Server Dedicati gestiti nella sezione Gestione Server: Riavviare un server Linux nel Rescue System
Copia le tabelle delle partizioni del disco 2 (in questo caso: sdb) sul nuovo disco (vuoto) (in questo caso: sda).
rescue:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sda
Nota bene
Per i dispositivi NVMe, controlla attentamente la denominazione (ad es. sfdisk -d /dev/nvme0n1 | sfdisk --force /dev/nvme1n1).
Aggiungi le partizioni al relativo array RAID. Per farlo, modifica i seguenti comandi e poi inseriscili:
RAID 1
rescue:~# mdadm /dev/md4 -a /dev/sda4 (partizione Root)
rescue:~# mdadm /dev/md2 -a /dev/sda2 (partizione Boot)
rescue:~# mdadm /dev/md1 -a /dev/sda1 (partizione EFI)
La ricostruzione (rebuild) si avvia in background. Per monitorarla, inserisci il seguente comando:
rescue:~# cat /proc/mdstat
Monta prima il file system root. Solo successivamente potrai montare le altre partizioni all'interno della struttura delle directory.
rescue:~# mount /dev/md4 /mnt
Monta le partizioni di boot ed EFI.
rescue:~# mount /dev/md2 /mnt/boot
rescue:~# mount /dev/md1 /mnt/boot/efi
Nota bene
Se dovessero comparire messaggi di errore che indicano che i punti di montaggio non esistono, creali con i comandi mkdir /mnt/boot e mkdir /mnt/boot/efi.
Valido solo per Server Dedicati con sistema partizionato tramite LVM: crea i seguenti punti di montaggio:
rescue:~# mkdir /mnt/var
rescue:~# mkdir /mnt/usr
rescue:~# mkdir /mnt/home
Valido solo per Server Dedicati con sistema partizionato tramite LVM: se necessario, monta le partizioni var, usr e home.
rescue:~# mount /dev/mapper/vg00-var /mnt/var
rescue:~# mount /dev/mapper/vg00-usr /mnt/usr
rescue:~# mount /dev/mapper/vg00-home /mnt/home
Valido per Debian 13, AlmaLinux 9 e 10, nonché Rocky Linux 9 e 10: per montare le directory di sistema nell’ambiente chroot, digita il seguente comando:
rescue:~# for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
Passa all’ambiente chroot:
rescue:~# chroot /mnt
Installa il bootloader. Esempio:
Debian (11/12/13) / Ubuntu (24.04/26.04)rescue:/# grub-install --efi-directory=/boot/efi /dev/sda
AlmaLinux 9 und 10 sowie Rocky Linux 9 und 10
Prova innanzitutto a ripristinare tramite dnf.
rescue:/# dnf reinstall shim-x64 grub2-efi-x64
rescue:/# grub2-mkconfig -o /boot/grub2/grub.cfg
Se questo comando non funziona, usa grub2-install.
rescue:/# grub2-install --efi-directory=/boot/efi /dev/sda
rescue:/# grub2-mkconfig -o /boot/grub2/grub.cfg
Valido solo per Debian (11/12/13) / Ubuntu (24.04/ 26.04): per aggiornare la configurazione, digita il seguente comando:
rescue:/# update-grub
Esci dall'ambiente chroot con exit.
rescue:/# exit
Smonta tutti i supporti:
rescue:~# umount -R /mnt
- Aspetta che il processo di ricostruzione sia completato e riavvia il server nel sistema normale.
- Dopo il riavvio, accedi nuovamente al sistema.
Per configurare la partizione /dev/sda3 come area di swap di Linux, digita il seguente comando:
[root@host ~]# mkswap /dev/sda3
Importante
Con mkswap cambia l'UUID della partizione. Se nel tuo /etc/fstab la partizione swap è montata tramite l'UUID (impostazione predefinita su AlmaLinux/Rocky/Debian), dopo il riavvio dovrai modificare il file /etc/fstab e inserire il nuovo UUID, altrimenti la memoria swap non verrà attivata automaticamente. Se la partizione swap del tuo server non è montata tramite l'UUID, devi solo attivare la partizione swap. In questo caso, salta la modifica del file fstab.
Per individuare l'UUID, modifica il comando seguente in base alle tue esigenze e poi inseriscilo:
[root@host ~]# lsblk -f | grep sdb3
Vale solo se la partizione swap è montata tramite UUID: per modificare /etc/fstab, digita il seguente comando:
[root@host ~]# vi /etc/fstab
Nota bene
L'editor vi dispone di una modalità di inserimento e di una modalità di comando. Puoi attivare la modalità di inserimento con il tasto [i]. In questa modalità, i caratteri digitati vengono inseriti immediatamente nel testo. Per passare alla modalità di comando, premi [ESC]. Quando usi la modalità di comando, ciò che digiti sulla tastiera viene interpretato come un comando.
- Vai alla riga con “swap” e, nella configurazione in /etc/fstab, sostituisci il vecchio UUID con quello nuovo.
- Per uscire da vi e salvare il file, digita il comando :wq e poi premi Invio.
Infine, attiva la partizione di swap con il seguente comando:
[root@host ~]# swapon -a
Per verificare se la memoria swap è attiva, digita il seguente comando:
[root@host ~]# cat /proc/swaps
Il disco rigido 2 (sdb) è stato sostituito
Se hai sostituito il disco 2 (sdb), procedi come segue:
- Esegui un riavvio per fare in modo che il disco 2 (sdb) venga riconosciuto.
Copia le tabelle delle partizioni dal sistema locale al nuovo disco (vuoto). Se necessario, usa l'opzione --force:
[root@host ~]# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Aggiungi le partizioni al RAID. Esempio per RAID 1:
RAID 1
[root@host ~]# mdadm /dev/md1 -a /dev/sdb1
[root@host ~]# mdadm /dev/md2 -a /dev/sdb2
[root@host ~]# mdadm /dev/md4 -a /dev/sdb4
Per monitorare la ricostruzione (rebuild), inserisci il seguente comando:
[root@host ~]# cat /proc/mdstat
Per fare in modo che il server si avvii anche in caso di futuro guasto a sda, devi installare il bootloader anche su sdb. Installa il bootloader come segue:
Debian (11/12/13) / Ubuntu (24.04/ 26.04)
[root@host ~]# grub-install --efi-directory=/boot/efi /dev/sdb
AlmaLinux 9 e 10, Rocky Linux 9 e 10
Prova prima il ripristino tramite dnf:
[root@host ~]# dnf reinstall shim-x64 grub2-efi-x64
[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Se questo comando fallisce, usa la seguente procedura:
[root@host ~]# grub2-install --efi-directory=/boot/efi /dev/sdb
[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Per aggiornare la configurazione, inserisci il seguente comando:
Debian (11/12/13) /Ubuntu (24.04/ 26.04)
[root@host ~]# update-grub
AlmaLinux 9 e 10, Rocky Linux 9 e 10
[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Assicurati che lo Swap non sia un RAID. Inserisci il seguente comando:
[root@host ~]# cat /proc/mdstat
Per configurare la partizione come area Swap Linux, adatta ed esegui il seguente comando (in questo caso si tratta della partizione /dev/sdb3):
[root@host ~]# mkswap /dev/sdb3
Importante
L'esecuzione di mkswap modifica l'UUID della partizione. Se nel tuo file /etc/fstab la partizione Swap è montata tramite UUID (impostazione predefinita su Alma/Rocky/Debian), dopo il riavvio dovrai modificare /etc/fstab e inserire il nuovo UUID, altrimenti lo Swap non si attiverà automaticamente. Se la partizione Swap del tuo server non è montata tramite UUID, ti basterà semplicemente attivarla; in questo caso, puoi saltare la modifica del file fstab.
Per trovare l'UUID, adatta ed esegui il seguente comando:
[root@host ~]# lsblk -f | grep sda3
(Valido solo se la partizione Swap è montata tramite UUID) Per modificare /etc/fstab, inserisci il seguente comando:
[root@host ~]# vi /etc/fstab
- Sostituisci l'UUID nella configurazione in /etc/fstab.
- Per uscire da vi e salvare il file, digita il comando :wq e poi premi Invio.
Attiva la partizione di swap. Per farlo, digita il seguente comando:
[root@host ~]# swapon -a
Per verificare se la memoria di swap è attiva, digita il seguente comando:
root@host ~]# cat /proc/swaps
Ripristinare il RAID (RAID 5 o RAID 6)
Se usi un array RAID 5 o RAID 6, la struttura è composta da almeno 3 dischi (RAID 5) o 4 dischi (RAID 6). Quando sostituisci un disco, devi assicurarti che la tabella delle partizioni venga copiata esattamente da uno dei dischi integri rimasti. La sostituzione del disco (sdc, sdd, sde, ecc.) può avvenire a sistema avviato. Non serve installare alcun bootloader su questi dischi.
In questo esempio ipotizziamo che tu abbia sostituito il disco sdd e che sdc e sdf siano integri.
Copia il layout da uno dei dischi integri sul nuovo disco. Per farlo, modifica il comando seguente e poi digitalo. Esempio:
[root@host ~]# sfdisk -d /dev/sdc | sfdisk --force /dev/sdd
Aggiungi la nuova partizione al gruppo RAID (ad es. md11). Per farlo, modifica il comando seguente e poi eseguilo.
[root@host ~]# mdadm /dev/md11 -a /dev/sdd1
La ricostruzione in RAID 5/6 può richiedere diverse ore se ci sono grandi quantità di dati. Con questo comando puoi monitorare lo stato di avanzamento:
[root@host ~]# watch -n 5 cat /proc/mdstat
Contenuto
- Verificare se un server utilizza UEFI o BIOS
- Ulteriori informazioni su UEFI
- Informazioni importanti sul partizionamento del tuo Server Dedicato
- Individuare le informazioni necessarie per ricostruire il software RAID
- Individuare i punti di montaggio
- Visualizzazione avanzata della struttura RAID con lsblk --inverse
- Visualizzare il contenuto del file fstab ed individuare i file di dispositivo
- Ripristinare il RAID (RAID 1)
- Il disco rigido 1 (sda) è stato sostituito
- Ripristinare il RAID (RAID 5 o RAID 6)
- Torna su