Project

General

Profile

ProxmoxOnRaid1 » History » Version 1

Simone Piccardi, 10/11/2012 05:25 PM

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