Migrare a Raid1 una installazione Proxmox¶
L'installatore di Proxmox rende più facile installare la piattaforma su una macchina recente (fornendo tutti i moduli ed i firmware per gli hardware più recenti) rispetto all'installazione di una Debian seguita dalla successiva installazione della piattaforma, ma ha una flessibilità estremamente ridotta, ed in particolare non è assolutamente in grado di eseguire un'installazione su RAID software.
Quella che segue è la descrizione di come fare a convertire un'installazione ordinaria in un'installazione su RAID1. Si assume che i due dischi che vogliamo mettere in RAID siano /dev/sda
e /dev/sdb
e che l'installazione ordinaria dal CD di installazione di Proxmox sia stata eseguita (come di default) su /dev/sda
.
Per la stesura di queste note sono stati utilizzati due articoli come riferimento. Il primo però prevede un'inutile copia dei dati da un volume logico ad un altro di LVM, con varie inutili (e potenzialmente pericolose) modifiche a /etc/fstab
, alla modalità di identificare i filesystem (da fare per dispositivo e non per UUID) e delle configurazioni di GRUB. Il secondo usa il metodo di migrazione del volume logico indicato anche qui, ma mantiene le inutili modifiche all'identificazione dei filesystem in /etc/fstab
e non chiarisce le modifiche da fare a GRUB.
La procedura qui descritta prevede un unico riavvio finale, il solo cambiamento dell'UUID della partizione /boot con quello del disco RAID in /etc/fstab e nessun cambiamento (a parte una reinstallazione) della configurazione di GRUB rispetto ai default di installazione.
Preparazione¶
Anzitutto occorre eseguire alcuni passi di preparazione:
- Aggiornare tutto all'ultima versione:
apt-get update apt-get upgrade
- installare il necessario al RAID software:
apt-get install mdadm
Le due azioni seguenti possono non servire.
In genere non sono necessarie se non si è marcato il disco /dev/sdb
come RAID in precedenza (ad esempio usando da subito le istruzioni che vedremo nel passo successivo). In quel caso infatti viene attivato un RAID fittizio completamente sballato su /dev/sdb che deve essere rimosso.
In tal caso occorre eseguire le seguenti operazioni:
- fermare il RAID fake sul secondo disco:
/etc/init.d/mdadm-raid stop
- eliminare il RAID fittizio creato dall'installazione di
mdadm
mdadm --zero-superblock /dev/sdb
Si noti che se questa operazione non viene fatta e non si ferma il RAID e si ripartiziona il secondo disco con le istruzioni seguenti, udev alla partenza del RAID farà scomparire i device delle partizioni, e se non si cancella il superblocco RAID su /dev/sdb
verrà fatto ripartire il RAID fittizio al riavvio successivo, per cui sarà necessario o riavviare di nuovo o ripetere il ripartizionamento a RAID fermo.
Predisporre il RAID software sul disco libero¶
Il secondo passo dell'installazione è predisporre il RAID software sul secondo disco, che si presuppone non sia stato neanche partizionato. Si tenga presente che è importante eseguire questo passo '''dopo''' aver installato il pacchetto mdadm
per non incorrere nei problemi indicati al punto precedente.
- ripartizionare opportunamente il secondo disco:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb sfdisk --change-id /dev/sdb 1 fd sfdisk --change-id /dev/sdb 2 fd
- azzerare i dati del RAID sulle partizioni
mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdb2
Questo passo è precauzionale, se il disco è, come ci si aspetta, intonso, i comandi daranno l'errore, innocuo:
mdadm: Unrecognised md component device
- creare i RAID 1:
mdadm --create /dev/md0 -l 1 -n 2 missing /dev/sdb1 mdadm --create /dev/md1 -l 1 -n 2 missing /dev/sdb2
in entrambi i casi confermare l'uso dei metadati 1.2 rispondendo "y" al comando.
- impostare correttamente il contenuto di
/etc/mdadm/mdadm.conf
con:mdadm --detail --scan >> /etc/mdadm/mdadm.conf
se /dev/sdb
è stato inserito per sbaglio come RAID fittizio (come accennato in precedenza) prima di eseguire questo comando andranno tolte le righe ARRAY
sbagliate create all'installazione del pacchetto mdadm
e poi aggiungere quelle buone col comando precedente.
Spostare /boot sul RAID¶
Il passo successivo è spostare /boot
dal primo disco al RAID appena creato su /dev/md0
, per questo occorre eseguire le seguenti operazioni:
- creare il filesytem per boot e copiarci tutto il necessario:
mkfs.ext3 /dev/md0 mount /dev/md0 /mnt cp -ax /boot/* /mnt/ umount /mnt/
- montare la nuova versione di
/boot
su /dev/md0
al posto della vecchia, con i comandi:umount /boot/ mount /dev/md0 /boot/
- modificare /etc/fstab per l'uso della nuova
/boot
, verificare conblkid
l'UUID del filesystem e metterlo dentro/etc/fstab
, per quest'ultima operazione si possono usare i comandi:NEWUUID=$(blkid /dev/md0| cut -d'"' -f2) sed -i -re "s/(^UUID=)([0-9abcdef-]+)/\1$NEWUUID/" /etc/fstab
ma si consiglia di fare la sostituzione del valore dell'UUID a mano.
Alla fine di queste operazioni il sistema avrà /boot
sul disco RAID e sarà predisposto per usarlo anche al riavvio.
Migrazione dei dati del sistema (la radice)¶
Per evitare modifiche, rimontaggi e riavvi a causa del cambio del disco della radice, basta usare la funzionalità di migrazione dei dati di LVM da un dispositivo fisico ad un altro. Per questo occorre compiere le seguenti operazioni:
- inizializzare ed aggiungere
/dev/md1
al volume group usato da Proxmoxpvcreate /dev/md1 vgextend pve /dev/md1
- spostare i dati di LVM dal primo disco al RAID:
pvmove /dev/sda2 /dev/md1
questo passo avrà una durata di vari minuti, dipendente da dimensione e velocità dei dischi.
- rimuovere il disco @/dev/sda2 @dal volume group ed eliminare i dati di LVM
vgreduce pve /dev/sda2 pvremove /dev/sda2
Riconfigurazione di GRUB e dell'avvio¶
Una volta spostata la radice e /boot
sul RAID occorre dire a GRUB di usare i dati nei nuovi dispositivi (in particolare quelli del bootloader stesso), il modo più pulito è eseguire una reinstallazione dello stesso con la nuova situazione. Si deve poi aver cura, per precauzione, di rigenerare i ramdisk di avvio con la nuova situazione in cui è attivo il RAID. Le operazioni da eseguire sono:
- reinstallare grub su entrambi i dischi.
Per questo è sufficiente, una volta che si sia rimontato/dev/md0
su/boot
, eseguire il comando:dpkg-reconfigure grub-pc
e nella finestra di ''debconf'' scegliere di installare GRUB su /dev/sda
e /dev/sdb
.
Si verifichi su /boot/grub/grub.cfg
che nelle menuentry che fanno riferimento al kernel sia indicata come radice /dev/md0 (cioè ci sia qualcosa del tipo set root='(md/0)'
) e che venga fatto riferimento all'UUID del filesystem di /dev/md0
(si verifichi con blkid
).
- aggiornare il kernel o altro se necessario, e rigenerare i ramdisk di avvio con i comandi:
apt-get dist-upgrade update-initramfs -u -k all
Completare il RAID1¶
A questo punto si possono inserire le partizioni di /dev/sda
nel RAID1 e convertirle al relativo formato, le ultime operazioni da eseguire sono pertanto le seguenti:
- impostare il tipo corretto di partizione:
sfdisk --change-id /dev/sda 1 fd sfdisk --change-id /dev/sda 2 fd
- inserire i dischi nel RAID1:
mdadm --add /dev/md0 /dev/sda1 mdadm --add /dev/md1 /dev/sda2
Attendere la sincronizzazione del RAID, verificarla con:
watch cat /proc/mdstat
A questo punto si potrà eseguire il reboot e verificare che tutto sia a posto.
Updated by Chiara Barbucci almost 8 years ago · 6 revisions