Перенос виртуальной машины с гипервизора VMware (ESX) на Proxmox

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: VMwareProxmox VE.

Мы рассмотрим один из способов переноса виртуальной машины с гипервизора VMware в Proxmox — экспорт шаблона ovf с последующим его импортом на новый гипервизор. Для выполнения задачи будет использоваться утилита ovftool, которую мы установим на хост Proxmox.

Подробнее про миграцию серверов в Proxmox можно почитать на официальном сайте гипервизора.

Установка ovftool

Утилита ovftool нужна для экспорта виртуальной машины VMware в шаблон ovf. Она может быть установлена простой распаковкой архива в любой каталог компьютера или сервера. Мы будем устанавливать ovftool на гипервизор Proxmox.

Первым делом переходим на страницу загрузки утилиты и копируем ссылку на последнюю версию архива:

Копируем ссылку для скачивания архива ovftool

Используя данную ссылку, загружаем архив, подключившись к Proxmox по SSH:

curl -sOL https://vdc-download.vmware.com/vmwb-repository/dcr-public/2ee5a010-babf-450b-ab53-fb2fa4de79af/2a136212-2f83-4f5d-a419-232f34dc08cf/VMware-ovftool-4.4.3-18663434-lin.x86_64.zip

Распаковываем скачанный архив:

unzip VMware-ovftool-*.zip

Переносим распакованный каталог в папку /opt:

mv ovftool /opt/

ovftool установлен. Можно переходить к экспорту/импорту машины.

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

Синтаксис для экспорта виртуальной машины следующий:

/opt/ovftool/ovftool vi://<user>:<password>@<vm_host>/<vm_folder>/<vm_name> <path/to/export>

* где:

  • user — имя пользователя, под которым мы подключаемся к гипервизору.
  • password — пароль пользователя. Если не задать, то будет запрошен интерактивно.
  • vm_host — имя гипервизора, с которого мы будем экспортировать виртуальную машину.
  • vm_folder — каталог, в котором находится виртуальная машина.
  • vm_name — имя виртуальной машины.
  • path/to/export — путь, где будет сохранен каталог, в котором будет экспортирован шаблон выгруженной виртуальной машины.

Предположим, что нам нужно перенести виртуальную машину vm_name с гипервизора vm_host.dmosk.local. Команда будет такой:

/opt/ovftool/ovftool vi://root@vm_host.dmosk.local/vm_name ./

* импорт будет выполнен в текущий каталог, где мы находимся при выполнении команды ovftool. В нем будет создан каталог по имени машины (в нашем случае, vm_name), а в нем будут размещены файлы экспортированной машины.

У команды ovftool есть много полезных опций. Наиболее полезны noSSLVerify и powerOffSource:

/opt/ovftool/ovftool --noSSLVerify --powerOffSource vi://root@vm_host.dmosk.local/vm_name ./

noSSLVerify — не выполняет проверку сертификата. Удобно, если у нас самоподписанный сертификат на хосте vmware. powerOffSource — автоматически выключит виртуальную машину, если она включена (включенную машину нельзя экспортировать).

Начнется процесс экспорта-импорта. Он займет какое-то время — просто ждем. Как было сказано выше, в текущем каталоге будет создана папка с именем переносимой виртуальной машины.

Теперь можно создать новую виртуальную машину на Proxmox из шаблона ovf. Синтаксис следующий:

qm importovf <VMID> ./<vm_name>/<vm_name>.ovf <pve_storage>

* где:

  • <VMID> — идентификатор для создаваемой виртуальной машины (должен быть уникальным для гипервизора или его кластера).
  • ./<vm_name>/<vm_name>.ovf — путь до выгруженного ovf файла.
  • <pve_storage> — имя хранилища Proxmox.

Например:

qm importovf 333 ./vm_host.dmosk.local/vm_host.dmosk.local.ovf ssd1

* в данном примере будет создана виртуальная машина с идентификатором 333 на хранилище ssd1.

Готово. Перенос виртуальной машины из VMware в Proxmox по простому сценарию выполнен.

Действия после переноса

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

Добавление сетевого адаптера

Импортированная виртуальная машина будет создана без сетевого интерфейса. Его проще всего добавить в веб-инструменте управления Proxmox.

Для этого переходимо к созданной машине - Hardware - Add - Network Device.

Смена утилит гостевой операционной системы

Нам необходимо сначала удалить утилиту для VMware, после установить и запустить утилиту qemu.

Удаление гостевой утилиты VMware

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

1. Для удаления родной утилиты достаточно ввести команду:

/usr/bin/vmware-uninstall-tools.pl

Если система вернет ошибку, то переходим ко второму варианту.

2. Сначала остановим службу vmtoolsd:

systemctl disable vmtoolsd --now

После удалим open-vm-tools. В зависимости от используемой системы это выполняется разными командами.

а) Deb (Ubuntu / Debian / Astra Linux):

apt purge open-vm-tools

б) RPM (Rocky Linux / РЕД ОС / CentOS):

yum erase open-vm-tools

Установка гостевой утилиты Proxmox (qemu)

В зависимости от типа Linux команды будут отличаться.

а) DEB-based (Ubuntu / Debian / Astra Linux):

apt update

apt install qemu-guest-agent

б) RPM (Rocky Linux / РЕД ОС / CentOS):

yum install qemu-guest-agent

Установка завершена.

Для запуска сервиса выполняем:

systemctl enable qemu-guest-agent --now

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

Создание шаблона

Если нам нужно создать шаблон из импортированной виртуальной машины, вводим:

qm template 333

Решение возможных проблем

Рассмотрим в данном разделе проблемы, с которыми столкнулся я.

Dracut: /dev/disk/by-uuid does not exist

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

dracut warning: /dev/disk/by-uuid/xxxx does not exist

Причина: в перенесенной системе нет нужных драйверов для дискового контроллера, как правило, scsi. 

Решение: мы можем изменить настройку виртуальной машины на использование контроллера sata. Как правило, это решает проблему и ползволяет загрузить виртуальную машину.

Изменения нужно внести в конфигурационном файле виртуальной машины 

vi /etc/pve/qemu-server/<VMID>.conf

Необходимо заменить scsi0 на sata0.

Это можно сделать одной командой sed. Например, для нашей перенесенной машины:

sed -i 's/scsi0/sata0/' /etc/pve/qemu-server/333.conf

Читайте также

Другие материалы, которые могут вас заинтересовать:

1. Установка и настройка Proxmox VE.

2. Настройка кластера Proxmox VE.

3. Конвертирование виртуального диска Proxmox в диск VMware.

# Linux # Виртуализация # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет