Guida alle tecnologie

Preparare GRUB2 e aggiungere /dev/sda a RAID1 su LVM

5 min read Linux Aggiornato 12 Oct 2025
GRUB2 e RAID1 su LVM: installazione e verifica
GRUB2 e RAID1 su LVM: installazione e verifica

Panoramica

Questo documento guida attraverso i passaggi necessari per:

  • Installare/assicurarsi che GRUB2 sia presente su entrambi i dischi fisici.
  • Aggiungere /dev/sda1 a un array software RAID1 esistente (/dev/md0).
  • Aggiornare la configurazione di mdadm e la initramfs in un sistema che usa LVM su RAID.

Questa procedura è pensata per un sistema Linux in produzione con LVM sopra RAID1; i comandi e gli output mostrati sono esempi tipici.

Prerequisiti

  • Accesso root o equivalenti privilegi sudo.
  • mdadm, grub2 e pacchetti per initramfs installati (es. mdadm, grub-pc, initramfs-tools).
  • Un secondo disco (/dev/sdb) già configurato come membro dell’array RAID.
  • Backup dei dati critici prima di modificare le tabelle delle partizioni o il bootloader.

Nota importante: modifica la tabella delle partizioni solo se sei sicuro di cosa stai facendo. Se il kernel rifiuta di rileggere la tabella, pianifica un riavvio per applicare i cambiamenti.

Preparare GRUB2

Per prima cosa assicurati che GRUB2 sia installato su entrambi i dischi fisici in modo che il sistema possa avviarsi anche se uno dei dischi fallisce:

grub-install /dev/sda
grub-install /dev/sdb

Quindi riavvia il sistema per verificare che il boot dal RAID funzioni correttamente:

reboot

Se il sistema si avvia normalmente, procedi alla fase successiva. Se il sistema non si avvia, consulta la sezione Risoluzione dei problemi più avanti.

Preparare /dev/sda

Dopo il riavvio, verifica la presenza di /dev/md0 nell’output di df -h:

df -h

Esempio di output:

root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G  722M  3.6G  17% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  128K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
root@server1:~#

L’output di /proc/mdstat dovrebbe mostrare gli array attivi:

cat /proc/mdstat

Esempio:

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]

unused devices: 
root@server1:~#

Questo indica che md1 è sincronizzato ([UU]) mentre md0 è ancora degrado ([_U]) perché manca /dev/sda1.

Verifica anche gli output di pvdisplay, vgdisplay e lvdisplay per confermare che LVM è intatto:

pvdisplay

Esempio:

root@server1:~# pvdisplay
--- Physical volume ---
PV Name               /dev/md1
VG Name               server1
PV Size               4.76 GiB / not usable 1012.00 KiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              1218
Free PE               0
Allocated PE          1218
PV UUID               W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS

root@server1:~#
vgdisplay

Esempio:

root@server1:~# vgdisplay
--- Volume group ---
VG Name               server1
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  9
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               4.76 GiB
PE Size               4.00 MiB
Total PE              1218
Alloc PE / Size       1218 / 4.76 GiB
Free  PE / Size       0 / 0
VG UUID               m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW

root@server1:~#
lvdisplay

Esempio:

root@server1:~# lvdisplay
--- Logical volume ---
LV Name                /dev/server1/root
VG Name                server1
LV UUID                8SNLPE-gHqA-a2LX-BO9o-0QQO-DV2z-3WvTYe
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.51 GiB
Current LE             1155
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0

--- Logical volume ---
LV Name                /dev/server1/swap_1
VG Name                server1
LV UUID                kYaKtb-vkkV-TDDE-me1R-nnER-dzN8-BcVTwz
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                252.00 MiB
Current LE             63
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:1

root@server1:~#

Cambiare il tipo di partizione di /dev/sda1

Ora cambia il tipo di partizione di /dev/sda1 in “Linux raid autodetect” usando fdisk:

fdisk /dev/sda

Esempio di sessione interattiva:

root@server1:~# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): <-- t
Partition number (1-5): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@server1:~#

Se la ricarica della tabella fallisce con “Device or resource busy”, puoi eseguire partprobe o pianificare un riavvio. Se preferisci evitare il riavvio immediato, usa partprobe:

partprobe /dev/sda

Aggiungere /dev/sda1 all’array /dev/md0

Dopo aver impostato il tipo di partizione, aggiungi /dev/sda1 all’array md0:

mdadm --add /dev/md0 /dev/sda1

Controlla lo stato di sincronizzazione:

cat /proc/mdstat

Esempio dopo l’aggiunta:

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
248820 blocks super 1.2 [2/2] [UU]

unused devices: 
root@server1:~#

Quando vedi [UU] l’array è sincronizzato su entrambi i dischi.

Aggiornare /etc/mdadm/mdadm.conf

Salva una copia di backup della configurazione e rigenera il file mdadm.conf usando –examine –scan:

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

Un esempio del file:

cat /etc/mdadm/mdadm.conf

Esempio:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST 

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Tue, 24 May 2011 21:11:37 +0200
# by mkconf 3.1.4-1+8efb9d1
ARRAY /dev/md/0 metadata=1.2 UUID=6cde4bf4:7ee67d24:b31e2713:18865f31 name=server1.example.com:0
ARRAY /dev/md/1 metadata=1.2 UUID=3ce9f2f2:ac89f75a:530c5ee9:0d4c67da name=server1.example.com:1

Mantieni il file in un posto sicuro e valuta di tenerne una copia fuori dal server.

Aggiornare GRUB e initramfs

Rimuovi lo script obsoleto (se presente) e aggiorna la configurazione di GRUB e l’immagine initramfs:

rm -f /etc/grub.d/09_swraid1_setup
update-grub
update-initramfs -u

Controlla /boot/grub/grub.cfg per assicurarti che le voci di menu (menuentry) si riferiscano a /dev/md0 e non a (hd0) o (hd1).

Infine reinstalla GRUB su entrambi i dischi una volta ancora per sicurezza:

grub-install /dev/sda
grub-install /dev/sdb

Riavvia il sistema:

reboot

Dovrebbe avviarsi normalmente dal RAID1.

Controlli dopo il riavvio

  • Verifica /proc/mdstat: l’array deve mostrare [UU].
  • Controlla df -h: /boot deve essere montato da /dev/md0.
  • Verifica lvdisplay / vgdisplay / pvdisplay: LVM deve apparire “available” e senza volumi mancanti.
  • Controlla dmesg e /var/log/syslog per eventuali messaggi relativi a md, RAID o GRUB.

Cosa fare se il sistema non si avvia

  1. Avvia da un live USB/CD con strumenti LVM e mdadm.
  2. Assembla manualmente gli array se necessario:
mdadm --assemble --scan
  1. Monta il filesystem e usa chroot per riparare GRUB:
mount /dev/md0 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/bash

# dentro il chroot
update-grub
grub-install /dev/sda
grub-install /dev/sdb
update-initramfs -u
  1. Se l’array non si assembla perché manca una firma, puoi ispezionare le partizioni con mdadm –examine e ricreare l’array con attenzione usando mdadm –create con opzioni conservative (solo se sai cosa stai facendo e hai backup).

Nota: evitare comandi distruttivi come –create senza aver prima verificato UUID e metadata; rischi di perdere dati.

Checklist per ruoli

  • Amministratore (prima dell’intervento):

    • Backup completo dei dati critici.
    • Accesso console/seriale remoto disponibile.
    • Verifica di partizione e spazio disponibili.
  • Operatore (durante l’intervento):

    • Eseguire i comandi in sequenza e annotare output e timestamp.
    • Monitorare la sincronizzazione RAID (/proc/mdstat) fino a completamento.
  • Amministratore (dopo intervento):

    • Test di riavvio e verifica completa dei servizi.
    • Conservare copie di mdadm.conf e /boot/grub/grub.cfg su storage esterno.

Diagramma decisionale per il recupero rapido

flowchart TD
  A[Fail a boot] --> B{Puoi accedere alla console?}
  B -- No --> C[Avvia da live USB e monta dischi]
  B -- Sì --> D{MD arrays online?}
  D -- No --> E[mdadm --assemble --scan]
  E --> F{Array OK?}
  F -- Sì --> G[Chroot e reinstallare GRUB]
  F -- No --> H[Ispeziona metadati con mdadm --examine]
  H --> I[Valuta ricreazione conservativa o ripristino da backup]
  D -- Sì --> G
  G --> J[update-grub && update-initramfs]
  J --> K[Reboot e verifica]

Criteri di accettazione

  • /dev/md0 e /dev/md1 devono presentarsi con stato [UU] in /proc/mdstat.
  • /boot montato su /dev/md0 dopo il riavvio.
  • GRUB installato su /dev/sda e /dev/sdb e configurazione aggiornata.

Glossario (1 riga ciascuno)

  • RAID1: mirroring dei dati su due dischi per ridondanza.
  • LVM: Logical Volume Manager, astrazione per gestire volumi logici.
  • mdadm: utility per creare e gestire array RAID software su Linux.
  • GRUB2: bootloader comune per sistemi Linux moderni.

Note su sicurezza e compatibilità

  • Conserva sempre backup prima di modificare tabelle delle partizioni o ricreare array.
  • Verifica compatibilità del BIOS/UEFI con installazione GRUB su dischi multipli (sistemi UEFI potrebbero richiedere una configurazione diversa).

Riepilogo

Hai installato GRUB2 su entrambi i dischi, cambiato il tipo di partizione di /dev/sda1 in “Linux raid autodetect”, aggiunto /dev/sda1 a /dev/md0, aggiornato mdadm.conf e rigenerato l’initramfs. Dopo il riavvio il sistema dovrebbe avviarsi dal RAID1. Se incontri problemi, usa un live environment per assemblare gli array e reinstallare GRUB.

Importante: conserva logfile e output dei comandi eseguiti per future verifiche o audit.

Autore
Redazione

Materiali simili

Sincronizzare file tra PC senza usare il cloud
Sincronizzazione

Sincronizzare file tra PC senza usare il cloud

Hogwarts Legacy: come risolvere i crash su PC
Gaming

Hogwarts Legacy: come risolvere i crash su PC

Assemblare e avviare il tuo PC: guida completa
Hardware

Assemblare e avviare il tuo PC: guida completa

Comprare Bitcoin su Paxful — Guida pratica P2P
Cripto

Comprare Bitcoin su Paxful — Guida pratica P2P

GRUB2 e RAID1 su LVM: installazione e verifica
Linux

GRUB2 e RAID1 su LVM: installazione e verifica

Usare MicroSD come memoria interna su Android
Android

Usare MicroSD come memoria interna su Android