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

Автор George, Май 13, 2025, 04:47

« назад - далее »

George

В жизни бывает, когда сталкиваешься с тем, что раньше никогда не приходилось делать. Вот и я столкнулся с proxmox. Году в 2021 я его попробовал, развернул 3 ноды, поднял на них 11 windows. Но при попытке выключить ноду, мою витруалку не мигрировало, как в vmware, а выключило и включило на другой ноде. После этого я слегка потерял интерес к данной системе. Но жизнь снова столкнула нас. Нашел в инете статью и сохранил себе

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

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


Установка ovftool

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

Первым делом переходим на страницу загрузки утилиты и копируем ссылку на последнюю версию архива:
скачать естественно нельзя, я приложу файл, скачанный мной в мае 2025
Копируем ссылку для скачивания архива ovftool

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

Загружаем соответственно, через winscp, поскольку нельзя скачать и с proxmox тоже

Код: bash
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

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

Код: bash
unzip VMware-ovftool-*.zip


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

Код: bash
mv ovftool /opt/

ovftool установлен. Можно переходить к экспорту/импорту машины.
[нет. Надо еще права задать на исполнение. Я через winscp дал из всей папке[/i]

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

Код: bash
/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 — путь, где будет сохранен каталог, в котором будет экспортирован шаблон выгруженной виртуальной машины.
Предположим, что нам нужно перенести виртуальную машину win11 с гипервизора esxi1.cloud-life.site. Команда будет такой:
Код: bash
/opt/ovftool/ovftool vi://root@esxi1.cloud-life.site /win11 ./

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

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

/opt/ovftool/ovftool --noSSLVerify --powerOffSource vi://root@esxi1.cloud-life.site/win11 ./

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

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

Теперь можно создать новую виртуальную машину на Proxmox из шаблона ovf. Синтаксис следующий:
Код: bash
qm importovf <VMID> ./<vm_name>/<vm_name>.ovf <pve_storage>

* где:

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

Код: bash
qm importovf 333 ./win11/win11.ovf ssd1

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

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

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

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

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

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

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

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

Код: bash
/usr/bin/vmware-uninstall-tools.pl

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

2. Сначала остановим службу vmtoolsd:
Код: bash
systemctl disable vmtoolsd --now

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

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

Код: bash
apt purge open-vm-tools

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

Код: bash
yum erase open-vm-tools

Установка гостевой утилиты Proxmox (qemu)
В зависимости от типа Linux команды будут отличаться.

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

Код: bash
apt update
Код: bash
apt install qemu-guest-agent
б) RPM (Rocky Linux / РЕД ОС / CentOS):

Код: bash
yum install qemu-guest-agent

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

Для запуска сервиса выполняем:
Код: bash
systemctl enable qemu-guest-agent --now

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

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

Код: bash
qm template 333
На этом моменте я перестал читать, и удивился, почему не грузится. Решение простое - тип контроллера устанавливаем VmwareParavirtualх. Другой вариант - ниже, я не пробовал

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

Dracut: /dev/disk/by-uuid does not exist
Система не грузится на импортированной виртуальной машине, выдавая ошибку загрузки. Сообщения могут быть разные, например:

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

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

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

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

Код: bash
vi /etc/pve/qemu-server/<VMID>.conf

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

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

Код: bash
sed -i 's/scsi0/sata0/' /etc/pve/qemu-server/333.conf

  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.