Progetto

Generale

Profilo

ProxmoxOnRaid1 » Cronologia » Versione 1

Simone Piccardi, 11-10-2012 17:25

1 1 Simone Piccardi
h1. Migrare a Raid1 una installazione Proxmox
2
3
L'installatore di Proxmox rende più facile installare la piattaforma su una macchina recente (fornendo tutti i moduli ed i firmware per gli
4
hardware più recenti) rispetto alla installazione di una Debian seguita dalla succssiva installazione della piattaforma, ma ha una flessibilità estremamente ridotta, ed in particolare non è assolutamente in grado di eseguire una installazione su RAID software. 
5
6
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@. 
7
8
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. 
9
10
La procedure 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.
11
12
h2. Preparazione
13
14
Anzitutto occorre eseguire alcuni passi di preparazione:
15
16
* Aggiornare tutto all'ultima versione:
17
18
  <pre>
19
  apt-get update
20
  apt-get upgrade
21
  </pre>
22
23
* installare il necessario al RAID software:
24
25
  <pre>
26
  apt-get install mdadm
27
  </pre>
28
29
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:
30
31
* fermare il RAID fake sul secondo disco:
32
33
  <pre>
34
  /etc/init.d/mdadm-raid stop
35
  </pre>
36
37
* eliminare il RAID fittizio creato dall'installazione di @mdadm@
38
39
  <pre>
40
  mdadm --zero-superblock /dev/sdb
41
  </pre>
42
43
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. 
44
  
45
h2. Predisporre il RAID software sul disco libero
46
47
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.
48
49
* ripartizionare opportunamente il secondo disco:
50
51
  <pre>
52
  sfdisk -d /dev/sda | sfdisk --force /dev/sdb 
53
  sfdisk --change-id /dev/sdb 1 fd
54
  sfdisk --change-id /dev/sdb 2 fd
55
  </pre>
56
  
57
58
* azzerare i dati del RAID sulle partizioni 
59
60
  <pre>
61
  mdadm --zero-superblock /dev/sdb1
62
  mdadm --zero-superblock /dev/sdb2
63
  </pre>
64
65
Questo passo è precauzionale, se il disco è, come ci si aspetta, intonso, i comandi daranno l'errore, innocuo: 
66
<pre>
67
mdadm: Unrecognised md component device
68
</pre>
69
 
70
* creare i RAID 1:
71
  <pre>
72
  mdadm --create /dev/md0 -l 1 -n 2 missing /dev/sdb1
73
  mdadm --create /dev/md1 -l 1 -n 2 missing /dev/sdb2
74
  </pre>
75
in entrambi i casi confermare l'uso dei metadati 1.2 rispondendo "y" al comando.
76
77
* impostare correttamente il contenuto di @/etc/mdadm/mdadm.conf@ con:
78
  
79
  <pre>
80
  mdadm --detail --scan >> /etc/mdadm/mdadm.conf
81
  </pre>
82
83
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.
84
85
h2. Spostare /boot sul RAID
86
87
Il passo successivo è spostare @/boot@ dal primo disco al RAID appena creato su @/dev/md0@, per questo occorre eseguire le seguenti operazioni: 
88
89
* creare il filesytem per boot e copiarci tutto il necessario:
90
91
  <pre>
92
  mkfs.ext3 /dev/md0
93
  mount /dev/md0 /mnt
94
  cp -ax /boot/* /mnt/
95
  umount /mnt/
96
  </pre>
97
98
* montare la nuova versione di @/boot@ su /@dev/md0@ al posto della vecchia, con i comandi:
99
100
  <pre>
101
  umount /boot/
102
  mount /dev/md0 /boot/
103
  </pre>
104
  
105
* 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: 
106
107
  <pre>
108
  NEWUUID=$(blkid  /dev/md0| cut -d'"' -f2)
109
  sed -i -re "s/(^UUID=)([0-9abcdef-]+)/\1$NEWUUID/"  /etc/fstab
110
  </pre>
111
112
ma si consiglia di fare la sostituzione del valore dell'UUID a mano.
113
114
115
Alla fine di queste operazioni il sistema avrà @/boot@ sul disco RAID e sarà predisposto per usarlo anche al riavvio.
116
117
h2. Migrazione dei dati del sistema (la radice)
118
119
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:
120
121
122
* inizializzare ed aggiungere @/dev/md1@ al volume group usato da Proxmox
123
124
  <pre>
125
  pvcreate /dev/md1
126
  vgextend pve /dev/md1
127
  </pre>
128
129
* spostare i dati di LVM dal primo disco al RAID:
130
131
  <pre>
132
  pvmove /dev/sda2 /dev/md1 
133
  </pre>
134
135
questo passo avrà una durata di vari minuti, dipendente da dimensione e velocità dei dischi.
136
137
* rimuovere il disco @/dev/sda2 @dal volume group ed eliminare i dati di LVM
138
139
  <pre>
140
  vgreduce pve /dev/sda2
141
  pvremove /dev/sda2
142
  </pre>
143
144
145
h2. Riconfigurazione di GRUB e dell'avvio
146
147
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 poi deve aver cura, per precauzione, di rigenerare i ramdisk di avvio con la nuova situazione in cui è attivo il RAID. Le operazioni da eseguire sono:
148
149
* reinstallare grub su entrambi i dischi, per questo è sufficiente, una volta che si sia rimontato @/dev/md0@ su @/boot@, eseguire il comando:
150
  
151
  <pre>
152
  dpkg-reconfigure grub-pc
153
  </pre>
154
  
155
e nella finestra di ''debconf'' scegliere di installare GRUB su @/dev/sda@ e @/dev/sdb@. 
156
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@).
157
 
158
* aggiornare il kernel o altro se necessario, e rigenerare i ramdisk di avvio con i comandi:
159
  
160
  <pre>
161
  apt-get dist-upgrade
162
  update-initramfs -u -k all
163
  </pre>
164
 
165
h2. completare il RAID1
166
167
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:
168
169
* impostare il tipo corretto di partizione:
170
171
  <pre>
172
  sfdisk --change-id /dev/sda 1 fd
173
  sfdisk --change-id /dev/sda 2 fd
174
  </pre>
175
  
176
* inserire i dischi nel RAID1:
177
178
  <pre>
179
  mdadm --add /dev/md0 /dev/sda1
180
  mdadm --add /dev/md1 /dev/sda2
181
  </pre>
182
  
183
Attendere la sincronizzazione del RAID, verificarla con:
184
185
  <pre>
186
  watch cat /proc/mdstat 
187
  </pre>
188
189
A questo punto si potrà eseguire il reboot e verificare che sia tutto a posto.