В жизни бывает, когда сталкиваешься с тем, что раньше никогда не приходилось делать. Вот и я столкнулся с proxmox. Году в 2021 я его попробовал, развернул 3 ноды, поднял на них 11 windows. Но при попытке выключить ноду, мою витруалку не мигрировало, как в vmware, а выключило и включило на другой ноде. После этого я слегка потерял интерес к данной системе. Но жизнь снова столкнула нас. Нашел в инете статью и сохранил себе
Мы рассмотрим один из способов переноса виртуальной машины с гипервизора VMware в Proxmox — экспорт шаблона ovf с последующим его импортом на новый гипервизор. Для выполнения задачи будет использоваться утилита ovftool, которую мы установим на хост Proxmox.
Подробнее про миграцию серверов в Proxmox можно почитать на официальном сайте гипервизора.
Установка ovftoolУтилита ovftool нужна для экспорта виртуальной машины VMware в шаблон ovf. Она может быть установлена простой распаковкой архива в любой каталог компьютера или сервера. Мы будем устанавливать ovftool на гипервизор Proxmox.
Первым делом переходим на страницу загрузки утилиты и копируем ссылку на последнюю версию архива:
скачать естественно нельзя, я приложу файл, скачанный мной в мае 2025Копируем ссылку для скачивания архива ovftool
Используя данную ссылку, загружаем архив, подключившись к Proxmox по SSH:
Загружаем соответственно, через winscp, поскольку нельзя скачать и с proxmox тоже 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 установлен. Можно переходить к экспорту/импорту машины.
[нет. Надо еще права задать на исполнение. Я через winscp дал из всей папке[/i]
Перенос виртуальной машиныСинтаксис для экспорта виртуальной машины следующий:
/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. Команда будет такой:
/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. Синтаксис следующий:
qm importovf <VMID> ./<vm_name>/<vm_name>.ovf <pve_storage>
* где:
<VMID> — идентификатор для создаваемой виртуальной машины (должен быть уникальным для гипервизора или его кластера).
./<vm_name>/<vm_name>.ovf — путь до выгруженного ovf файла.
<pve_storage> — имя хранилища Proxmox.
Например:
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. Для удаления родной утилиты достаточно ввести команду:
/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
На этом моменте я перестал читать, и удивился, почему не грузится. Решение простое - тип контроллера устанавливаем VmwareParavirtualх. Другой вариант - ниже, я не пробовалРешение возможных проблемРассмотрим в данном разделе проблемы, с которыми столкнулся я.
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