Project

General

Profile

ProxmoxOnRaid1 » History » Version 4

Chiara Barbucci, 02/28/2017 02:59 PM

1 1 Simone Piccardi
h1. Migrare a Raid1 una installazione Proxmox
2
3 4 Chiara Barbucci
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 alla 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 una installazione su RAID software. 
4 1 Simone Piccardi
5
Quella che segue è la descrizione di come fare a convertire una installazione ordinaria in una installazione su RAID1. Si assume che i due dischi che si vogliono 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@. 
6
7 4 Chiara Barbucci
Per la stesura di queste note sono stati utilizzati due articoli come riferimento, "il primo":http://www.howtoforge.com/proxmox-2-with-software-raid 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":http://www.petercarrero.com/content/2010/07/31/adding-software-raid-proxmox-ve-install usa il metodo di migrazione del volume logico indicato anche qui, ma mantiene le inutili modifiche alla identificazione dei filesystem in @/etc/fstab@ e non chiarisce le modifiche da fare a GRUB. 
8 1 Simone Piccardi
9 4 Chiara Barbucci
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.
10 1 Simone Piccardi
11
h2. Preparazione
12
13
Anzitutto occorre eseguire alcuni passi di preparazione:
14
15
* Aggiornare tutto all'ultima versione:
16
17
  <pre>
18
  apt-get update
19 2 Simone Piccardi
  apt-get upgrade</pre>
20 1 Simone Piccardi
21
* installare il necessario al RAID software:
22
23
  <pre>
24
  apt-get install mdadm</pre>
25
26 4 Chiara Barbucci
Le due azioni seguenti possono non servire. 
27
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. 
28
In tal caso occorre eseguire le seguenti operazioni:
29 1 Simone Piccardi
30
* fermare il RAID fake sul secondo disco:
31
32
  <pre>
33 2 Simone Piccardi
  /etc/init.d/mdadm-raid stop</pre>
34 1 Simone Piccardi
35
* eliminare il RAID fittizio creato dall'installazione di @mdadm@
36
37
  <pre>
38 2 Simone Piccardi
  mdadm --zero-superblock /dev/sdb</pre>
39 1 Simone Piccardi
40 4 Chiara Barbucci
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. 
41 1 Simone Piccardi
  
42
h2. Predisporre il RAID software sul disco libero
43
44
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.
45
46
* ripartizionare opportunamente il secondo disco:
47
48
  <pre>
49
  sfdisk -d /dev/sda | sfdisk --force /dev/sdb 
50
  sfdisk --change-id /dev/sdb 1 fd
51 2 Simone Piccardi
  sfdisk --change-id /dev/sdb 2 fd</pre>
52 1 Simone Piccardi
  
53
54
* azzerare i dati del RAID sulle partizioni 
55
56
  <pre>
57
  mdadm --zero-superblock /dev/sdb1
58 2 Simone Piccardi
  mdadm --zero-superblock /dev/sdb2</pre>
59 1 Simone Piccardi
60
Questo passo è precauzionale, se il disco è, come ci si aspetta, intonso, i comandi daranno l'errore, innocuo: 
61
<pre>
62
mdadm: Unrecognised md component device
63
</pre>
64
 
65
* creare i RAID 1:
66
  <pre>
67
  mdadm --create /dev/md0 -l 1 -n 2 missing /dev/sdb1
68 2 Simone Piccardi
  mdadm --create /dev/md1 -l 1 -n 2 missing /dev/sdb2</pre>
69
70 1 Simone Piccardi
in entrambi i casi confermare l'uso dei metadati 1.2 rispondendo "y" al comando.
71
72
* impostare correttamente il contenuto di @/etc/mdadm/mdadm.conf@ con:
73
  
74
  <pre>
75 2 Simone Piccardi
  mdadm --detail --scan >> /etc/mdadm/mdadm.conf  </pre>
76 1 Simone Piccardi
77 4 Chiara Barbucci
se @/dev/sdb@ è stato inserito per sbaglio come RAID fittizio (come accennato in precedenza) prima di eseguire questo comando andranno tolte le righe @ARRAY@ create sbagliate all'installazione del pacchetto @mdadm@, e poi aggiungere quelle buone col comando precedente.
78 1 Simone Piccardi
79
h2. Spostare /boot sul RAID
80
81
Il passo successivo è spostare @/boot@ dal primo disco al RAID appena creato su @/dev/md0@, per questo occorre eseguire le seguenti operazioni: 
82
83
* creare il filesytem per boot e copiarci tutto il necessario:
84
85
  <pre>
86
  mkfs.ext3 /dev/md0
87
  mount /dev/md0 /mnt
88
  cp -ax /boot/* /mnt/
89
  umount /mnt/</pre>
90
91
* montare la nuova versione di @/boot@ su /@dev/md0@ al posto della vecchia, con i comandi:
92
93
  <pre>
94
  umount /boot/
95 2 Simone Piccardi
  mount /dev/md0 /boot/</pre>
96 1 Simone Piccardi
  
97 4 Chiara Barbucci
* modificare /etc/fstab per l'uso della nuova @/boot@, verificare con @blkid@ l'UUID del filesystem e metterlo dentro @/etc/fstab@, per quest'ultima operazione si possono usare i comandi: 
98 1 Simone Piccardi
99
  <pre>
100
  NEWUUID=$(blkid  /dev/md0| cut -d'"' -f2)
101 2 Simone Piccardi
  sed -i -re "s/(^UUID=)([0-9abcdef-]+)/\1$NEWUUID/"  /etc/fstab</pre>
102 1 Simone Piccardi
103
ma si consiglia di fare la sostituzione del valore dell'UUID a mano.
104
105
Alla fine di queste operazioni il sistema avrà @/boot@ sul disco RAID e sarà predisposto per usarlo anche al riavvio.
106
107
h2. Migrazione dei dati del sistema (la radice)
108
109
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:
110
111
112
* inizializzare ed aggiungere @/dev/md1@ al volume group usato da Proxmox
113
114
  <pre>
115
  pvcreate /dev/md1
116 2 Simone Piccardi
  vgextend pve /dev/md1 </pre>
117 1 Simone Piccardi
118
* spostare i dati di LVM dal primo disco al RAID:
119
120
  <pre>
121 2 Simone Piccardi
  pvmove /dev/sda2 /dev/md1 </pre>
122 1 Simone Piccardi
123
questo passo avrà una durata di vari minuti, dipendente da dimensione e velocità dei dischi.
124
125
* rimuovere il disco @/dev/sda2 @dal volume group ed eliminare i dati di LVM
126
127
  <pre>
128
  vgreduce pve /dev/sda2
129
  pvremove /dev/sda2</pre>
130 2 Simone Piccardi
131 1 Simone Piccardi
132
h2. Riconfigurazione di GRUB e dell'avvio
133
134 4 Chiara Barbucci
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:
135 1 Simone Piccardi
136 4 Chiara Barbucci
* reinstallare grub su entrambi i dischi. 
137
  Per questo è sufficiente, una volta che si sia rimontato @/dev/md0@ su @/boot@, eseguire il comando:
138 1 Simone Piccardi
  
139 2 Simone Piccardi
  <pre>
140 1 Simone Piccardi
  dpkg-reconfigure grub-pc </pre>
141
  
142
e nella finestra di ''debconf'' scegliere di installare GRUB su @/dev/sda@ e @/dev/sdb@. 
143 4 Chiara Barbucci
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@).
144 1 Simone Piccardi
 
145
* aggiornare il kernel o altro se necessario, e rigenerare i ramdisk di avvio con i comandi:
146
  
147
  <pre>
148
  apt-get dist-upgrade
149 2 Simone Piccardi
  update-initramfs -u -k all</pre>
150 1 Simone Piccardi
 
151 4 Chiara Barbucci
h2. Completare il RAID1
152 1 Simone Piccardi
153
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:
154
155
* impostare il tipo corretto di partizione:
156
157
  <pre>
158 2 Simone Piccardi
  sfdisk --change-id /dev/sda 1 fd
159 1 Simone Piccardi
  sfdisk --change-id /dev/sda 2 fd</pre>
160
  
161
* inserire i dischi nel RAID1:
162
163
  <pre>
164
  mdadm --add /dev/md0 /dev/sda1
165 2 Simone Piccardi
  mdadm --add /dev/md1 /dev/sda2</pre>
166 1 Simone Piccardi
  
167
Attendere la sincronizzazione del RAID, verificarla con:
168
169
  <pre>
170 2 Simone Piccardi
  watch cat /proc/mdstat </pre>
171 1 Simone Piccardi
172 4 Chiara Barbucci
A questo punto si potrà eseguire il reboot e verificare che tutto sia a posto.