Preparare GRUB2 e aggiungere /dev/sda a RAID1 su LVM
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
- Avvia da un live USB/CD con strumenti LVM e mdadm.
- Assembla manualmente gli array se necessario:
mdadm --assemble --scan
- 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
- 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.
Materiali simili

Sincronizzare file tra PC senza usare il cloud

Hogwarts Legacy: come risolvere i crash su PC

Assemblare e avviare il tuo PC: guida completa

Comprare Bitcoin su Paxful — Guida pratica P2P
GRUB2 e RAID1 su LVM: installazione e verifica
