Проект

Общее

Профиль

Перенос виртуальной машины на другую vg » История » Версия 8

Владимир Ипатов, 13.03.2021 15:43

1 1 Владимир Ипатов
h1.  Перенос виртуальной машины на другую vg
2 1 Владимир Ипатов
3 1 Владимир Ипатов
h2. Виртуальная машина на одном узле
4 1 Владимир Ипатов
5 1 Владимир Ипатов
Данная операция является потенциально опасной, следует выполнять ее только при полном понимании описываемых операций и последствий.
6 1 Владимир Ипатов
Данная операция требует остановки машины на все время копирования содержимого.
7 1 Владимир Ипатов
8 1 Владимир Ипатов
h3. Подготовка
9 1 Владимир Ипатов
10 1 Владимир Ипатов
Получить информацию о машине:
11 1 Владимир Ипатов
<pre>
12 1 Владимир Ипатов
gnt-instance info ИМЯ 
13 1 Владимир Ипатов
</pre>
14 1 Владимир Ипатов
15 1 Владимир Ипатов
Больше всего будет интересовать информация о диске:
16 1 Владимир Ипатов
17 1 Владимир Ипатов
Например:
18 1 Владимир Ипатов
<pre>
19 1 Владимир Ипатов
  Disks: 
20 1 Владимир Ипатов
    - disk/0: plain, size 10.0G
21 1 Владимир Ипатов
      access mode: rw
22 1 Владимир Ипатов
      logical_id: xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0
23 1 Владимир Ипатов
      on primary: /dev/xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 (253:9)
24 1 Владимир Ипатов
      name: None
25 1 Владимир Ипатов
      UUID: 3c7fb626-21d2-4e99-9365-6639a13456b5
26 1 Владимир Ипатов
</pre>
27 1 Владимир Ипатов
28 1 Владимир Ипатов
Выключить машину
29 1 Владимир Ипатов
30 1 Владимир Ипатов
<pre>
31 1 Владимир Ипатов
gnt-instance shutdown ИМЯ
32 1 Владимир Ипатов
</pre>
33 1 Владимир Ипатов
34 1 Владимир Ипатов
На мастер узле остановить ganeti-watcher, ganeti:
35 1 Владимир Ипатов
<pre>
36 1 Владимир Ипатов
service ganeti-watcher stop
37 1 Владимир Ипатов
service ganeti stop
38 1 Владимир Ипатов
</pre>
39 1 Владимир Ипатов
Сделать резервную копию конфига ganeti.
40 1 Владимир Ипатов
<pre>
41 1 Владимир Ипатов
cp /var/lib/ganeti/config.data ~/
42 1 Владимир Ипатов
</pre>
43 1 Владимир Ипатов
44 1 Владимир Ипатов
берем имя тома из информации об инстансе, после /
45 1 Владимир Ипатов
<pre>
46 1 Владимир Ипатов
в нашем случае это 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0
47 1 Владимир Ипатов
</pre>
48 1 Владимир Ипатов
49 1 Владимир Ипатов
Копируем в буфер обмена
50 1 Владимир Ипатов
51 1 Владимир Ипатов
Также из информации об инстансе берем точный размер тома
52 1 Владимир Ипатов
53 1 Владимир Ипатов
создаем том с таким же именем на новой vg (здесь она будет называться ssd)
54 1 Владимир Ипатов
55 1 Владимир Ипатов
<pre>
56 1 Владимир Ипатов
lvcreate -L10G -n 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 ssd
57 1 Владимир Ипатов
</pre>
58 1 Владимир Ипатов
59 1 Владимир Ипатов
открываем файл /var/lib/ganeti/config.data, ищем по данному имени, находим блок наподобие этого (json упакован без отступов и перевода строки, читать неудобно, так что нужно пользоваться поиском по подстроке):
60 1 Владимир Ипатов
61 1 Владимир Ипатов
<pre>
62 2 Владимир Ипатов
"disks": [{"logical_id": ["xenvg", "8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0"], "uuid": "3c7fb626-21d2-4e99-9365-6639a13456b5", "dev_type": "plain", "params": {}, "mode": "rw", "iv_name": "disk/0", "size": 10240}]
63 1 Владимир Ипатов
</pre>
64 1 Владимир Ипатов
65 1 Владимир Ипатов
вот указание vg и имени тома:
66 1 Владимир Ипатов
67 1 Владимир Ипатов
<pre>
68 1 Владимир Ипатов
{"logical_id": ["xenvg", "8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0"],
69 1 Владимир Ипатов
</pre>
70 1 Владимир Ипатов
71 1 Владимир Ипатов
В нем меняем vg "xenvg" на "ssd"
72 1 Владимир Ипатов
73 1 Владимир Ипатов
Сохраняем файл.
74 1 Владимир Ипатов
75 1 Владимир Ипатов
Запускаем ганети:
76 1 Владимир Ипатов
<pre>
77 1 Владимир Ипатов
service ganeti start
78 1 Владимир Ипатов
</pre>
79 1 Владимир Ипатов
80 1 Владимир Ипатов
Если в кластере более одного узла, то запускаем копирование конфигурации:
81 1 Владимир Ипатов
<pre>
82 1 Владимир Ипатов
gnt-cluster redist-conf
83 1 Владимир Ипатов
</pre>
84 1 Владимир Ипатов
85 1 Владимир Ипатов
проверяем, применились ли изменения, с помощью команды info:
86 1 Владимир Ипатов
87 1 Владимир Ипатов
<pre>
88 1 Владимир Ипатов
gnt-instance info ИМЯ
89 1 Владимир Ипатов
</pre>
90 1 Владимир Ипатов
91 1 Владимир Ипатов
Если все в порядке, то запускаем машину и ganeti-watcher
92 1 Владимир Ипатов
<pre>
93 1 Владимир Ипатов
gnt-instance startup ИМЯ
94 1 Владимир Ипатов
service ganeti-watcher start
95 1 Владимир Ипатов
</pre>
96 1 Владимир Ипатов
97 1 Владимир Ипатов
98 3 Владимир Ипатов
h2. Виртуальная машина на двух узлах
99 3 Владимир Ипатов
100 3 Владимир Ипатов
Возможны два варианта производства этой операции: с остановкой и без.
101 3 Владимир Ипатов
Вариант без остановки более сложный и трудоемкий.
102 3 Владимир Ипатов
103 3 Владимир Ипатов
h2. Перенос с остановкой
104 3 Владимир Ипатов
105 3 Владимир Ипатов
машину следует перед переносом остановить и перевести в plain (сделать ее машиной на одном узле):
106 3 Владимир Ипатов
107 3 Владимир Ипатов
<pre>
108 3 Владимир Ипатов
gnt-instance shutdown ИМЯ
109 3 Владимир Ипатов
gnt-instance modify -t plain ИМЯ
110 3 Владимир Ипатов
</pre>
111 3 Владимир Ипатов
112 3 Владимир Ипатов
После этого машина останется только на primary узле, дальнейшие операции проводятся так же, как для машины на одном узле, см. выше.
113 3 Владимир Ипатов
114 3 Владимир Ипатов
по завершении переноса машина переводится в drbd режим:
115 3 Владимир Ипатов
116 3 Владимир Ипатов
<pre>
117 3 Владимир Ипатов
gnt-instance modify -t drbd -n gnt2 ИМЯ
118 3 Владимир Ипатов
</pre>
119 3 Владимир Ипатов
где gnt2 - имя нового secondary узла
120 3 Владимир Ипатов
121 3 Владимир Ипатов
h2. Перенос без остановки
122 4 Владимир Ипатов
123 4 Владимир Ипатов
Данная операция является потенциально опасной, следует выполнять ее только при полном понимании описываемых операций и последствий.
124 4 Владимир Ипатов
125 4 Владимир Ипатов
h3. Подготовка 
126 4 Владимир Ипатов
127 4 Владимир Ипатов
получаем информацию об инстансе, интересует то, на каком узле он запущен и информация о дисках:
128 4 Владимир Ипатов
129 4 Владимир Ипатов
<pre>
130 4 Владимир Ипатов
gnt-instance info ИМЯ
131 4 Владимир Ипатов
</pre>
132 4 Владимир Ипатов
133 4 Владимир Ипатов
<pre>
134 4 Владимир Ипатов
  Disks: 
135 4 Владимир Ипатов
    - disk/0: drbd, size 10.0G
136 4 Владимир Ипатов
      access mode: rw
137 5 Владимир Ипатов
      nodeA: gnt2, minor=1
138 5 Владимир Ипатов
      nodeB: gnt1, minor=1
139 4 Владимир Ипатов
      port: 11001
140 4 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
141 5 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status ok
142 4 Владимир Ипатов
      name: None
143 4 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
144 4 Владимир Ипатов
      child devices: 
145 4 Владимир Ипатов
        - child 0: plain, size 10.0G
146 5 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
147 4 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4)
148 4 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4)
149 4 Владимир Ипатов
          name: None
150 4 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
151 4 Владимир Ипатов
        - child 1: plain, size 128M
152 4 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
153 4 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
154 1 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
155 1 Владимир Ипатов
          name: None
156 1 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
157 1 Владимир Ипатов
158 5 Владимир Ипатов
</pre>
159 5 Владимир Ипатов
160 5 Владимир Ипатов
Итак, мы видим, что машина запущена на gnt2, устройство /dev/drbd1, lvm том /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
161 5 Владимир Ипатов
162 5 Владимир Ипатов
Далее, нужно запустить мастер на узле, который является *SECONDARY* для виртуальной машины, заходим на него и gnt-cluster master-failover
163 5 Владимир Ипатов
164 5 Владимир Ипатов
затем останавливаем ganeti-watcher НА ОБОИХ узлах:
165 5 Владимир Ипатов
<pre>
166 5 Владимир Ипатов
service ganeti-watcher stop
167 5 Владимир Ипатов
</pre>
168 5 Владимир Ипатов
169 5 Владимир Ипатов
Далее, переходим на узел, где машина secondary (в нашем случае это мастер, gnt1)
170 5 Владимир Ипатов
171 5 Владимир Ипатов
Далее, нужно отцепить drbd от текущего тома старой vg:
172 5 Владимир Ипатов
<pre>
173 5 Владимир Ипатов
drbdsetup resource1 down
174 5 Владимир Ипатов
</pre>
175 5 Владимир Ипатов
где resource1 - это аналог /dev/drbd1
176 5 Владимир Ипатов
177 5 Владимир Ипатов
Переименовываем том в старой vg, а также это будет наш бэкап:
178 5 Владимир Ипатов
<pre>
179 5 Владимир Ипатов
lvrename ssd 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data gate-disk0
180 5 Владимир Ипатов
</pre>
181 5 Владимир Ипатов
182 5 Владимир Ипатов
затем заново активируем drbd:
183 5 Владимир Ипатов
<pre>
184 5 Владимир Ипатов
gnt-instance activate-disks ИМЯ
185 5 Владимир Ипатов
</pre>
186 5 Владимир Ипатов
187 5 Владимир Ипатов
после этого проверяем, что диск проиницализировался заново и он считается Diskless, запускаем команду drbd-overview:
188 5 Владимир Ипатов
<pre>
189 5 Владимир Ипатов
 1:??not-found??  Connected Secondary/Primary Diskless/UpToDate 
190 5 Владимир Ипатов
</pre>
191 5 Владимир Ипатов
192 6 Владимир Ипатов
Также видим, что диск считается degraded, missing disk в выводе gnt-instance info:
193 6 Владимир Ипатов
194 1 Владимир Ипатов
<pre>
195 6 Владимир Ипатов
 Disks: 
196 6 Владимир Ипатов
    - disk/0: drbd, size 10.0G
197 6 Владимир Ипатов
      access mode: rw
198 6 Владимир Ипатов
      nodeA: gnt2.pproduct, minor=1
199 6 Владимир Ипатов
      nodeB: gnt1.pproduct, minor=1
200 6 Владимир Ипатов
      port: 11001
201 6 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
202 6 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK*
203 6 Владимир Ипатов
      name: None
204 6 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
205 6 Владимир Ипатов
      child devices: 
206 6 Владимир Ипатов
        - child 0: plain, size 10.0G
207 6 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
208 6 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4)
209 6 Владимир Ипатов
          name: None
210 6 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
211 6 Владимир Ипатов
        - child 1: plain, size 128M
212 6 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
213 6 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
214 6 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
215 6 Владимир Ипатов
          name: None
216 6 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
217 6 Владимир Ипатов
</pre>
218 6 Владимир Ипатов
219 6 Владимир Ипатов
h3. непосредственно перенос
220 6 Владимир Ипатов
221 6 Владимир Ипатов
Останавливаем ganeti на мастере, делаем резервную копию конфига
222 6 Владимир Ипатов
<pre>
223 5 Владимир Ипатов
service ganeti stop
224 5 Владимир Ипатов
cp /var/lib/ganeti/config.data ~
225 5 Владимир Ипатов
</pre>
226 5 Владимир Ипатов
227 5 Владимир Ипатов
открываем конфиг, находим по имени тома секцию конфига, относящуюся к диску (там json без отступов и переводов строки, так что пользуемся поиском по подстроке):
228 5 Владимир Ипатов
<pre>
229 5 Владимир Ипатов
[{"logical_id": ["8db85567-d4d7-427d-916e-382ab6d9448b", "05ddeac2-8a00-42a5-bf8c-68a440d29d49", 11001, 1, 1, "6adc50aa8fda95beb7b1565c3eb2fd688a9e8a47"], "uuid": "4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2", "dev_type": "drbd", "params": {}, "mode": "rw", "children": [{"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"], "params": {}, "uuid": "4a24c9fb-cd8e-4034-b908-18d3d83c246d", "size": 10240}, {"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"],
230 5 Владимир Ипатов
</pre>
231 5 Владимир Ипатов
нас интересует то, что относится к _data, не _meta:
232 5 Владимир Ипатов
<pre>
233 5 Владимир Ипатов
{"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"], "params": {}, "uuid": "4a24c9fb-cd8e-4034-b908-18d3d83c246d", "size": 10240}
234 5 Владимир Ипатов
</pre>
235 5 Владимир Ипатов
меняем в конфиге имя vg на новую (вместо "ssd" - "xenvg"), только для _data, не для _meta
236 5 Владимир Ипатов
сохраняем конфиг
237 5 Владимир Ипатов
238 5 Владимир Ипатов
затем, на узле, где машина сейчас запущена (т.е. не на том, который сейчас мастер и где мы сейчас редактировали конфиг), создаем том в новой vg.
239 5 Владимир Ипатов
В нашем примере это узел gnt2.
240 5 Владимир Ипатов
<pre>
241 5 Владимир Ипатов
lvcreate -L10G -n 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data xenvg
242 1 Владимир Ипатов
</pre>
243 6 Владимир Ипатов
244 8 Владимир Ипатов
переходим обратно на мастер, запускаем ganeti:
245 6 Владимир Ипатов
<pre>
246 6 Владимир Ипатов
service ganeti start
247 6 Владимир Ипатов
</pre>
248 6 Владимир Ипатов
249 6 Владимир Ипатов
делаем gnt-instance info, вывод:
250 6 Владимир Ипатов
251 6 Владимир Ипатов
<pre>
252 6 Владимир Ипатов
  Disks: 
253 6 Владимир Ипатов
    - disk/0: drbd, size 10.0G
254 6 Владимир Ипатов
      access mode: rw
255 6 Владимир Ипатов
      nodeA: gnt2.pproduct, minor=1
256 6 Владимир Ипатов
      nodeB: gnt1.pproduct, minor=1
257 6 Владимир Ипатов
      port: 11001
258 6 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
259 6 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK*
260 6 Владимир Ипатов
      name: None
261 6 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
262 6 Владимир Ипатов
      child devices: 
263 6 Владимир Ипатов
        - child 0: plain, size 10.0G
264 6 Владимир Ипатов
          logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
265 6 Владимир Ипатов
          on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
266 6 Владимир Ипатов
          name: None
267 6 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
268 6 Владимир Ипатов
        - child 1: plain, size 128M
269 6 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
270 6 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
271 6 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
272 6 Владимир Ипатов
          name: None
273 6 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
274 6 Владимир Ипатов
275 6 Владимир Ипатов
</pre>
276 6 Владимир Ипатов
277 6 Владимир Ипатов
ганети считает, что drbd собран на /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data, при этом он отсутствует на secondary. На primary том присутствует, но он пока не используется, он только для обмана ganeti.
278 6 Владимир Ипатов
279 6 Владимир Ипатов
Теперь можно запустить процедуру пересоздания томов для drbd:
280 6 Владимир Ипатов
<pre>
281 6 Владимир Ипатов
gnt-instance replace-disks -a ИМЯ
282 6 Владимир Ипатов
</pre>
283 6 Владимир Ипатов
она проверит, присутствуют ли все тома для этого диска на обоих нодах. У нас отсутствует том _data на secondary ноде, он его создаст, подцепит к drbd, отсинкает.
284 6 Владимир Ипатов
285 6 Владимир Ипатов
После завершения процедуры у нас окажется, что на узле, где крутится машина, drbd собран на старой vg, а на вторичном узле - уже на новой, и все штатно работает. смотрим:
286 6 Владимир Ипатов
drbd-overview:
287 6 Владимир Ипатов
<pre>
288 7 Владимир Ипатов
1:??not-found??  Connected Secondary/Primary UpToDate/UpToDate
289 6 Владимир Ипатов
</pre>
290 6 Владимир Ипатов
291 6 Владимир Ипатов
gnt-instance info:
292 1 Владимир Ипатов
<pre>
293 7 Владимир Ипатов
  Disks: 
294 7 Владимир Ипатов
    - disk/0: drbd, size 10.0G
295 7 Владимир Ипатов
      access mode: rw
296 7 Владимир Ипатов
      nodeA: gnt2.pproduct, minor=1
297 7 Владимир Ипатов
      nodeB: gnt1.pproduct, minor=1
298 7 Владимир Ипатов
      port: 11001
299 7 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
300 7 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status ok
301 7 Владимир Ипатов
      name: None
302 7 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
303 7 Владимир Ипатов
      child devices: 
304 7 Владимир Ипатов
        - child 0: plain, size 10.0G
305 7 Владимир Ипатов
          logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
306 7 Владимир Ипатов
          on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
307 7 Владимир Ипатов
          on secondary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
308 7 Владимир Ипатов
          name: None
309 7 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
310 7 Владимир Ипатов
        - child 1: plain, size 128M
311 7 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
312 7 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20)
313 7 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20)
314 7 Владимир Ипатов
          name: None
315 7 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
316 6 Владимир Ипатов
</pre>
317 6 Владимир Ипатов
318 6 Владимир Ипатов
drbdsetup resource1 show на gnt2 (где запущена машина):
319 6 Владимир Ипатов
<pre>
320 6 Владимир Ипатов
resource resource1 {
321 6 Владимир Ипатов
    options {
322 6 Владимир Ипатов
    }
323 6 Владимир Ипатов
    net {
324 6 Владимир Ипатов
        max-buffers     	8000;
325 6 Владимир Ипатов
        cram-hmac-alg   	"md5";
326 6 Владимир Ипатов
        shared-secret   	"";
327 6 Владимир Ипатов
        after-sb-0pri   	discard-zero-changes;
328 6 Владимир Ипатов
        after-sb-1pri   	consensus;
329 6 Владимир Ипатов
    }
330 6 Владимир Ипатов
    _remote_host {
331 6 Владимир Ипатов
        address			ipv4 10.101.200.11:11001;
332 6 Владимир Ипатов
    }
333 6 Владимир Ипатов
    _this_host {
334 6 Владимир Ипатов
        address			ipv4 10.101.200.12:11001;
335 6 Владимир Ипатов
        volume 0 {
336 6 Владимир Ипатов
            device			minor 1;
337 6 Владимир Ипатов
            disk			"/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data";
338 6 Владимир Ипатов
            meta-disk			"/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta";
339 6 Владимир Ипатов
            disk {
340 6 Владимир Ипатов
                size            	20971520s; # bytes
341 6 Владимир Ипатов
                resync-rate     	122880k; # bytes/second
342 6 Владимир Ипатов
                c-plan-ahead    	0; # 1/10 seconds
343 6 Владимир Ипатов
            }
344 6 Владимир Ипатов
        }
345 6 Владимир Ипатов
    }
346 6 Владимир Ипатов
}
347 6 Владимир Ипатов
</pre>
348 6 Владимир Ипатов
см. "disk"
349 6 Владимир Ипатов
drbdsetup resource1 show на gnt1 (вторичный узел):
350 6 Владимир Ипатов
<pre>
351 6 Владимир Ипатов
resource resource1 {
352 6 Владимир Ипатов
    options {
353 6 Владимир Ипатов
    }
354 6 Владимир Ипатов
    net {
355 6 Владимир Ипатов
        max-buffers     	8000;
356 6 Владимир Ипатов
        cram-hmac-alg   	"md5";
357 6 Владимир Ипатов
        shared-secret   	"";
358 6 Владимир Ипатов
        after-sb-0pri   	discard-zero-changes;
359 6 Владимир Ипатов
        after-sb-1pri   	consensus;
360 6 Владимир Ипатов
    }
361 6 Владимир Ипатов
    _remote_host {
362 6 Владимир Ипатов
        address			ipv4 10.101.200.12:11001;
363 6 Владимир Ипатов
    }
364 6 Владимир Ипатов
    _this_host {
365 6 Владимир Ипатов
        address			ipv4 10.101.200.11:11001;
366 6 Владимир Ипатов
        volume 0 {
367 6 Владимир Ипатов
            device			minor 1;
368 6 Владимир Ипатов
            disk			"/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data";
369 6 Владимир Ипатов
            meta-disk			"/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta";
370 6 Владимир Ипатов
            disk {
371 6 Владимир Ипатов
                size            	20971520s; # bytes
372 6 Владимир Ипатов
                resync-rate     	122880k; # bytes/second
373 6 Владимир Ипатов
                c-plan-ahead    	0; # 1/10 seconds
374 6 Владимир Ипатов
            }
375 6 Владимир Ипатов
        }
376 6 Владимир Ипатов
    }
377 6 Владимир Ипатов
}
378 6 Владимир Ипатов
</pre>
379 6 Владимир Ипатов
380 6 Владимир Ипатов
Таким образом, половина операции завершена.
381 6 Владимир Ипатов
382 6 Владимир Ипатов
h3. Миграция и перенос второго узла.
383 6 Владимир Ипатов
384 6 Владимир Ипатов
первым делом на узле, где крутится машина, удаляем диск, который мы создавали перед заменой vg (т.е. у нас это gnt2):
385 6 Владимир Ипатов
<pre>
386 6 Владимир Ипатов
lvremove /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
387 6 Владимир Ипатов
</pre>
388 6 Владимир Ипатов
Если он говорит, что том занят, значит вы удаляете не то и не там.
389 6 Владимир Ипатов
390 6 Владимир Ипатов
Распространяем обновленную конфигурацию ганети по кластеру (запускается с мастера, все еще gnt1):
391 6 Владимир Ипатов
<pre>
392 6 Владимир Ипатов
gnt-cluster redist-conf
393 6 Владимир Ипатов
</pre>
394 6 Владимир Ипатов
395 6 Владимир Ипатов
Мигрируем машину на secondary узел:
396 6 Владимир Ипатов
<pre>
397 6 Владимир Ипатов
gnt-instance migrate ИМЯ
398 6 Владимир Ипатов
</pre>
399 6 Владимир Ипатов
400 6 Владимир Ипатов
401 6 Владимир Ипатов
После миграции машины переводим мастер на новый вторичный узел (у нас это будет gnt2, с него только что уехала машина)
402 6 Владимир Ипатов
<pre>
403 6 Владимир Ипатов
gnt-cluster master-failover
404 6 Владимир Ипатов
</pre>
405 6 Владимир Ипатов
406 6 Владимир Ипатов
на нем же отцепляем том в старой vg от drbd, переименовываем (еще один бэкап):
407 6 Владимир Ипатов
<pre>
408 6 Владимир Ипатов
drbdsetup resource1 down
409 6 Владимир Ипатов
lvrename ssd 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data gate-disk0
410 6 Владимир Ипатов
</pre>
411 6 Владимир Ипатов
412 6 Владимир Ипатов
инициализируем drbd в diskless:
413 6 Владимир Ипатов
<pre>
414 6 Владимир Ипатов
gnt-instance activate-disks ИМЯ
415 6 Владимир Ипатов
</pre>
416 6 Владимир Ипатов
проверяем drbd-overview:
417 6 Владимир Ипатов
<pre>
418 6 Владимир Ипатов
1:??not-found??  Connected Secondary/Primary Diskless/UpToDate
419 6 Владимир Ипатов
</pre>
420 6 Владимир Ипатов
проверяем gnt-instance info:
421 6 Владимир Ипатов
<pre>
422 6 Владимир Ипатов
  Disks: 
423 6 Владимир Ипатов
    - disk/0: drbd, size 10.0G
424 6 Владимир Ипатов
      access mode: rw
425 6 Владимир Ипатов
      nodeA: gnt1.pproduct, minor=1
426 6 Владимир Ипатов
      nodeB: gnt2.pproduct, minor=1
427 6 Владимир Ипатов
      port: 11001
428 6 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
429 6 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK*
430 6 Владимир Ипатов
      name: None
431 6 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
432 6 Владимир Ипатов
      child devices: 
433 6 Владимир Ипатов
        - child 0: plain, size 10.0G
434 6 Владимир Ипатов
          logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
435 6 Владимир Ипатов
          on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
436 6 Владимир Ипатов
          name: None
437 6 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
438 6 Владимир Ипатов
        - child 1: plain, size 128M
439 6 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
440 6 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20)
441 6 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
442 6 Владимир Ипатов
          name: None
443 6 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
444 6 Владимир Ипатов
</pre>
445 6 Владимир Ипатов
446 6 Владимир Ипатов
запускаем создание томов и ресинк:
447 6 Владимир Ипатов
<pre>
448 6 Владимир Ипатов
gnt-instance replace-disks -a ИМЯ
449 6 Владимир Ипатов
</pre>
450 6 Владимир Ипатов
451 6 Владимир Ипатов
после завершения процесса проверяем, что drbd подцеплен к нужным дискам, на обоих нодах:
452 6 Владимир Ипатов
gnt1 drbdsetup resource1 show:
453 6 Владимир Ипатов
<pre>
454 6 Владимир Ипатов
resource resource1 {
455 6 Владимир Ипатов
    options {
456 6 Владимир Ипатов
    }
457 6 Владимир Ипатов
    net {
458 6 Владимир Ипатов
        max-buffers     	8000;
459 6 Владимир Ипатов
        cram-hmac-alg   	"md5";
460 6 Владимир Ипатов
        shared-secret   	"";
461 6 Владимир Ипатов
        after-sb-0pri   	discard-zero-changes;
462 6 Владимир Ипатов
        after-sb-1pri   	consensus;
463 6 Владимир Ипатов
    }
464 6 Владимир Ипатов
    _remote_host {
465 6 Владимир Ипатов
        address			ipv4 10.101.200.12:11001;
466 6 Владимир Ипатов
    }
467 6 Владимир Ипатов
    _this_host {
468 6 Владимир Ипатов
        address			ipv4 10.101.200.11:11001;
469 6 Владимир Ипатов
        volume 0 {
470 6 Владимир Ипатов
            device			minor 1;
471 6 Владимир Ипатов
            disk			"/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data";
472 6 Владимир Ипатов
            meta-disk			"/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta";
473 6 Владимир Ипатов
            disk {
474 6 Владимир Ипатов
                size            	20971520s; # bytes
475 6 Владимир Ипатов
                resync-rate     	122880k; # bytes/second
476 6 Владимир Ипатов
                c-plan-ahead    	0; # 1/10 seconds
477 6 Владимир Ипатов
            }
478 6 Владимир Ипатов
        }
479 6 Владимир Ипатов
    }
480 6 Владимир Ипатов
}
481 6 Владимир Ипатов
</pre>
482 6 Владимир Ипатов
gnt2 drbdsetup resource1 show
483 6 Владимир Ипатов
<pre>
484 6 Владимир Ипатов
resource resource1 {
485 6 Владимир Ипатов
    options {
486 6 Владимир Ипатов
    }
487 6 Владимир Ипатов
    net {
488 6 Владимир Ипатов
        max-buffers     	8000;
489 6 Владимир Ипатов
        cram-hmac-alg   	"md5";
490 6 Владимир Ипатов
        shared-secret   	"";
491 6 Владимир Ипатов
        after-sb-0pri   	discard-zero-changes;
492 6 Владимир Ипатов
        after-sb-1pri   	consensus;
493 6 Владимир Ипатов
    }
494 6 Владимир Ипатов
    _remote_host {
495 6 Владимир Ипатов
        address			ipv4 10.101.200.11:11001;
496 6 Владимир Ипатов
    }
497 6 Владимир Ипатов
    _this_host {
498 6 Владимир Ипатов
        address			ipv4 10.101.200.12:11001;
499 6 Владимир Ипатов
        volume 0 {
500 6 Владимир Ипатов
            device			minor 1;
501 6 Владимир Ипатов
            disk			"/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data";
502 6 Владимир Ипатов
            meta-disk			"/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta";
503 6 Владимир Ипатов
            disk {
504 6 Владимир Ипатов
                size            	20971520s; # bytes
505 6 Владимир Ипатов
                resync-rate     	66560k; # bytes/second
506 6 Владимир Ипатов
                c-plan-ahead    	0; # 1/10 seconds
507 6 Владимир Ипатов
            }
508 6 Владимир Ипатов
        }
509 6 Владимир Ипатов
    }
510 6 Владимир Ипатов
}
511 6 Владимир Ипатов
</pre>
512 6 Владимир Ипатов
513 6 Владимир Ипатов
gnt-instance info:
514 6 Владимир Ипатов
<pre>
515 6 Владимир Ипатов
  Disks: 
516 6 Владимир Ипатов
    - disk/0: drbd, size 10.0G
517 6 Владимир Ипатов
      access mode: rw
518 6 Владимир Ипатов
      nodeA: gnt1.pproduct, minor=1
519 6 Владимир Ипатов
      nodeB: gnt2.pproduct, minor=1
520 6 Владимир Ипатов
      port: 11001
521 6 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
522 6 Владимир Ипатов
      on secondary: /dev/drbd1 (147:1) in sync, status ok
523 6 Владимир Ипатов
      name: None
524 6 Владимир Ипатов
      UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2
525 6 Владимир Ипатов
      child devices: 
526 6 Владимир Ипатов
        - child 0: plain, size 10.0G
527 6 Владимир Ипатов
          logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data
528 6 Владимир Ипатов
          on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
529 6 Владимир Ипатов
          on secondary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19)
530 6 Владимир Ипатов
          name: None
531 6 Владимир Ипатов
          UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d
532 6 Владимир Ипатов
        - child 1: plain, size 128M
533 6 Владимир Ипатов
          logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta
534 6 Владимир Ипатов
          on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20)
535 6 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20)
536 6 Владимир Ипатов
          name: None
537 6 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
538 6 Владимир Ипатов
</pre>
539 6 Владимир Ипатов
540 6 Владимир Ипатов
если все хорошо, запускаем watcher НА ОБОИХ нодах:
541 6 Владимир Ипатов
<pre>
542 6 Владимир Ипатов
sudo service ganeti-watcher start
543 6 Владимир Ипатов
</pre>
544 6 Владимир Ипатов
545 6 Владимир Ипатов
через некоторое время тома в старой vg можно удалить.