48. Миграция Home Assistant с VMWare Workstation на Proxmox.

 

Знакомство с системой управления умным домом Home Assistant в статьях на этом сайте началось с того, что она была развёрнута как виртуальная машина в гипервизоре VMWare Workstation. В свете последних материалов, описывающих возможность работы с гипервизором Proxmox на отдельном компьютере (мини-пк), возникает естественный вопрос о переводе системы из одного гипервизора в другой. Поехали разбираться.
 
Процесс переноса системы называется миграцией. Для начала на минуту вернёмся к исходным данным, чтобы лучше понять суть задачи.
Дано:
Компьютер (А) с операционной системой Windows, в которой установлен VMWare Workstation внутри которого есть виртуальная машина с Home Assistant.
Другой компьютер (Б) , с Proxmox на борту, находящийся в этой же сети.

Задача:
Сделать так, чтобы виртуалка переехала с компьютера А на Б, с минимумом потерь данных.


В рассматриваемом примере эту миграцию можно сделать несколькими способами:

  1. Создать в проксмоксе новую виртуалку с ХА со свежего дистрибутива, заново создать и добавить все сущности (дав им те же имена как и на системе А), установить и настроить необходимые компоненты, Вручную скопировать код интерфейса и остальных настроек.
  2. Создать в проксмоксе новую виртуалку с ХА со свежего дистрибутива, установить Google drive backup вместе со всеми остальными дополнениями, и надеяться что после скачивания и развёртывания бэкапа всё заработает.
  3. Способ аналогичный предыдущему, но только с помощью встроенных средств ХА.
  4. Взять имеющуюся готовую рабочую машину и просто скопировать её из одной среды в другую. Со всем содержимым, как есть. 

Последний пункт является самым правильным и в то же время интересным. Немного теории чтобы было понятнее.
Виртуальная машина, по сути, это обычный файл, в определённом формате, содержащий в себе информацию о самой виртуалке, её "железе", а так же хранящий в себе диски с загрузочной (а возможно не только) информацией. Файлы созданные в одном гипервизоре далеко не всегда пригодны для использования в другом.


Теперь задача обрастает новыми подробностями и становится ясно, что простым копированием тут не обойтись. Нужно будет этот файл ещё и преобразовать из одного формата в другой.
А самое главное - это обеспечить сохранность данных и работу всей системы умного дома.

Приступим.

Вариант #1 - обычный.

Первым делом ненадолго полностью выключим текущую машину (A) и сделаем её копию - клона.

Выбираем полное клонирование текущего состояния. Это создаст отдельную и независимую от оригинальной машины копию виртуалки.


По завершении создания клона, оригинал можно включить, чтобы дома всё продолжило работать.
Единственная вещь которая нам понадобится от нынешней машины - это её МАК адрес. Скопируем и сохраним его временно где-нибудь в сторонке. Машину же можно включить обратно.


Важное замечание - с этого момента мы работаем с копией оригинальной машины. Копия выключена, в то время как оригинал продолжает выполнять свою роль.

Теперь надо "закинуть" этот файл в проксмокс. Для этого воспользуемся утилитой WinSCP.

 

Чтобы не запутаться, скопируем файл vmdk в директорию образов виртуалок. В данном примере, для образов и резервных копий, выделен отдельный физический диск. Он виден в системе как устройство /dev/sda и смонтирован в качестве каталога с именем WD.

Подключаемся через WinSCP к проксмоксу, идём в вышеназванную директорию и копируем туда vmdk файл клонированной машины.


До или после копирования важно поменять имя файла, в формат подходящий для проксмокса. Он должен содержать в себе имя (номер) будущей виртуальной машины.

Следующей операцией будет конвертация этого файла в "сырой" формат, который сможет понять Proxmox. Для этого воспользуемся следующей командой: qemu-img convert -p -O raw /mnt/pve/WD/template/iso/vm-104-disk-0.vmdk /mnt/pve/WD/template/iso/vm-104-disk-0.raw

Теперь создадим новую виртуальную машину для Home Assistant'а. Повторим те же шаги по ручному созданию виртуалки из этой статьи. Обращаем внимание на номер машины, он должен совпадать с числом указанном в имени файла.

Сейчас вместо диска с образом, импортируем сконвертированный RAW файл: qm importdisk 104 /mnt/pve/WD/template/iso/vm-104-disk-0.raw local-lvm

На этом можно было бы и закончить, однако доведём всё до идеала.

Для начала выключаем работающий сервер Home Assistant. Пока он выключается, берём сохранённый ранее МАК адрес его сетевой карты, и назначаем его в сетевой карте новой виртуалки в проксмоксе.

 
Когда все настройки сохранены, и убедились что виртуальный сервер с ХА на обычном компьютере полностью погас, можно запускать новую виртуальную машину с ХА в проксмоксе.
Очень важно следить за состоянием загрузки через консоль виртуалки. 
По завершении загрузки критически важно обратить внимание на то, есть ли в новой системе сетевой интерфейс и получила ли она адрес.
 

Если строчек с IP адресами нет, это означает что по какий-то причине, система не "увидела" сетевую карту, и её надо создать и добавить заново.

Выключаем виртуалку, удаляем текущую сетевую карту и добавляем новую, не забываем добавить ей тот же МАК адрес снова. Включаем машину и ждём окончания загрузки. На этот раз с сетью всё должно быть в порядке.

После удачной загрузки и проверки что все устройства отображаются и работают нормально, рекомендуется создать резервную копию новой машины на другой физический диск, отличный от того, на котором находятся виртуальные машины и их диски, и поставить защиту на эту версию бэкапа.


Если раньше стационарный комп использовался преимущественно для поддержки работы этого виртуального сервера, то теперь и его тоже можно выключить. Это позволит эффективно экономить электроэнергию.

Вариант #2 -продвинутый.


 
В виртуальном гипервизоре на компе, устанавливаем и разворачиваем Proxmox.
Создаём кластер из двух гипервизоров - нового виртуального и уже работающего на отдельном железе.
Выполняем все действия из первого способа (на компе это будет происходить гораздо быстрее) в новом виртуальном проксмоксе.
Делаем миграцию машины и её дисков с виртуального гипервизора на физический.
Разбиваем и удаляем кластер.

На этом миссия выполнена.

Комментарии