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 generali su UEFI

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