Проект

Общее

Профиль

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

Владимир Ипатов, 03.03.2021 22:27

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 4 Владимир Ипатов
      nodeA: gnt2.pproduct, minor=1
138 4 Владимир Ипатов
      nodeB: *gnt1.pproduct, minor=1*
139 4 Владимир Ипатов
      port: 11001
140 4 Владимир Ипатов
      on primary: /dev/drbd1 (147:1) in sync, status ok
141 4 Владимир Ипатов
      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 4 Владимир Ипатов
          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 4 Владимир Ипатов
          on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5)
155 4 Владимир Ипатов
          name: None
156 4 Владимир Ипатов
          UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a
157 4 Владимир Ипатов
158 4 Владимир Ипатов
</pre>