Проект

Общее

Профиль

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

« Предыдущее - Версия 3/8 (Разница(diff)) - Следующее » - Текущая версия
Владимир Ипатов, 03.03.2021 22:22


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

Виртуальная машина на одном узле

Данная операция является потенциально опасной, следует выполнять ее только при полном понимании описываемых операций и последствий.
Данная операция требует остановки машины на все время копирования содержимого.

Подготовка

Получить информацию о машине:

gnt-instance info ИМЯ 

Больше всего будет интересовать информация о диске:

Например:

  Disks: 
    - disk/0: plain, size 10.0G
      access mode: rw
      logical_id: xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0
      on primary: /dev/xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 (253:9)
      name: None
      UUID: 3c7fb626-21d2-4e99-9365-6639a13456b5

Выключить машину

gnt-instance shutdown ИМЯ

На мастер узле остановить ganeti-watcher, ganeti:

service ganeti-watcher stop
service ganeti stop

Сделать резервную копию конфига ganeti.
cp /var/lib/ganeti/config.data ~/

берем имя тома из информации об инстансе, после /

в нашем случае это 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0

Копируем в буфер обмена

Также из информации об инстансе берем точный размер тома

создаем том с таким же именем на новой vg (здесь она будет называться ssd)

lvcreate -L10G -n 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 ssd

открываем файл /var/lib/ganeti/config.data, ищем по данному имени, находим блок наподобие этого (json упакован без отступов и перевода строки, читать неудобно, так что нужно пользоваться поиском по подстроке):

"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}]

вот указание vg и имени тома:

{"logical_id": ["xenvg", "8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0"],

В нем меняем vg "xenvg" на "ssd"

Сохраняем файл.

Запускаем ганети:

service ganeti start

Если в кластере более одного узла, то запускаем копирование конфигурации:

gnt-cluster redist-conf

проверяем, применились ли изменения, с помощью команды info:

gnt-instance info ИМЯ

Если все в порядке, то запускаем машину и ganeti-watcher

gnt-instance startup ИМЯ
service ganeti-watcher start

Виртуальная машина на двух узлах

Возможны два варианта производства этой операции: с остановкой и без.
Вариант без остановки более сложный и трудоемкий.

Перенос с остановкой

машину следует перед переносом остановить и перевести в plain (сделать ее машиной на одном узле):

gnt-instance shutdown ИМЯ
gnt-instance modify -t plain ИМЯ

После этого машина останется только на primary узле, дальнейшие операции проводятся так же, как для машины на одном узле, см. выше.

по завершении переноса машина переводится в drbd режим:

gnt-instance modify -t drbd -n gnt2 ИМЯ

где gnt2 - имя нового secondary узла

Перенос без остановки