Перенос виртуальной машины с гипервизора VMware (ESX) на Proxmox
Используемые термины: VMware, Proxmox VE.
Мы рассмотрим один из способов переноса виртуальной машины с гипервизора VMware в Proxmox — экспорт шаблона ovf с последующим его импортом на новый гипервизор. Для выполнения задачи будет использоваться утилита ovftool, которую мы установим на хост Proxmox.
Подробнее про миграцию серверов в Proxmox можно почитать на официальном сайте гипервизора.
Установка утилиты ovftool
Процесс экспорта и импорта виртуальной машины
Настройка виртуальной машины после переноса
Решение возможных проблем
Дополнительная информация
Установка ovftool
Утилита ovftool нужна для экспорта виртуальной машины VMware в шаблон ovf. Она может быть установлена простой распаковкой архива в любой каталог компьютера или сервера. Мы будем устанавливать ovftool на гипервизор Proxmox.
Первым делом переходим на страницу загрузки утилиты и копируем ссылку на последнюю версию архива:
Используя данную ссылку, загружаем архив, подключившись к 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.