Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Миграция VM между гипервизорами: практический гайд

Миграция виртуальных машин между гипервизорами — задача, которая раньше или позже встаёт перед каждым инфраструктурным инженером. Будь то уход от VMware после смены лицензионной политики или переезд с Hyper-V на открытый стек — алгоритм похожий, но дьявол в деталях.

VMware → Proxmox: основной сценарий

После изменений в лицензионной политике VMware многие команды ищут альтернативы. Proxmox VE — наиболее популярный выбор для on-premise.

Инструмент миграции — virt-v2v (из пакета virt-v2v на RHEL/Debian):

# Экспорт VM из VMware через vCenter API
virt-v2v -ic vpx://vcenter.example.com/Datacenter/cluster/host 
          "VM-Name" 
          -o local -os /var/lib/vz/images/100/ 
          -of qcow2

Или через промежуточный OVF-экспорт:

# На VMware: File → Export → Export OVF Template
# Получаем: vm.ovf + vm.vmdk

# На Proxmox: импорт через qm importovf
qm importovf 101 /tmp/vm.ovf local-lvm

Hyper-V → KVM

Hyper-V использует формат VHDX. Конвертация через qemu-img:

# Конвертация VHDX → qcow2
qemu-img convert -f vhdx -O qcow2 /path/to/disk.vhdx /var/lib/vz/images/102/vm-102-disk-0.qcow2

# Проверка результата
qemu-img info /var/lib/vz/images/102/vm-102-disk-0.qcow2

После конвертации создаём VM в Proxmox и присоединяем диск:

qm create 102 --name migrated-vm --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0
qm importdisk 102 /var/lib/vz/images/102/vm-102-disk-0.qcow2 local-lvm
qm set 102 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-102-disk-0
qm set 102 --boot order=scsi0

Форматы дисков: vmdk / vhdx / qcow2

Формат Гипервизор Особенности
vmdk VMware Может быть монолитным или split; поддерживает snapshot-chains
vhdx Hyper-V Поддерживает до 64 ТБ, журналирование
qcow2 KVM/QEMU COW, снапшоты, сжатие, шифрование
raw Универсальный Максимальная производительность, нет overhead

qemu-img convert поддерживает все основные форматы:

# VMDK → raw (для максимальной производительности на SSD)
qemu-img convert -f vmdk -O raw source.vmdk /dev/vg_data/vm-disk

# VMDK → qcow2 со сжатием
qemu-img convert -f vmdk -O qcow2 -c source.vmdk destination.qcow2

# Проверка прогресса (с флагом -p)
qemu-img convert -p -f vmdk -O qcow2 large-disk.vmdk output.qcow2

VirtIO драйверы

Главная проблема при миграции с VMware/Hyper-V — отсутствие VirtIO-драйверов в Windows-гостях. Без них Windows не увидит диск и сетевой интерфейс KVM.

Для Linux-гостей драйверы уже в ядре — проблем нет.

Для Windows: до выключения VM на исходном гипервизоре установите virtio-win драйверы:

# ISO с драйверами
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Монтируем ISO к работающей Windows VM на VMware/Hyper-V, устанавливаем драйверы из Device Manager (SCSI controller, Network adapter), только потом переносим диск на KVM.

Альтернатива — использовать virt-v2v, который умеет автоматически инжектировать VirtIO-драйверы в Windows-образ при конвертации.

OVF Import в Proxmox

OVF (Open Virtualization Format) — стандартный формат переноса VM между гипервизорами:

# Через веб-интерфейс: Datacenter → Node → Import from OVF/OVA

# Через CLI
qm importovf 103 /tmp/exported-vm.ova local-lvm --format qcow2

При импорте OVA Proxmox автоматически извлекает манифест и диски.

Тестирование после миграции

После запуска VM обязательно проверяем:

  • Сеть: ip a, ping, трассировка маршрута
  • Диски: df -h, iostat -x 1 5 — нет ли деградации производительности
  • Службы: systemctl status ключевых сервисов
  • Логи: journalctl -xe — нет ли ошибок драйверов
  • Производительность: сравнение benchmark до и после (fio, iperf3)

Для Windows дополнительно: Device Manager — нет ли устройств с ошибками, проверка активации, проверка служб.

Миграция VM — стресс для инфраструктуры, но с правильной подготовкой и пониманием форматов дисков она проходит предсказуемо. Главное — тестируйте на некритичных VM перед переносом production.

3 Ответа

  1. virt-v2v реально упрощает жизнь при миграции Windows VM — сам столкнулся с тем, что ручная установка VirtIO-драйверов в некоторых версиях Windows дала BSoD после переноса, а virt-v2v справился автоматически.

  1. Добавлю: при конвертации большого VMDK с thin provisioning результирующий qcow2 может оказаться меньше заявленного размера, что хорошо. Но qemu-img всё равно прочитает весь виртуальный объём — планируйте время конвертации исходя из этого.

  1. После миграции 30 VM с VMware на Proxmox могу сказать: самое узкое место — пропускная способность сети между гипервизорами. Если есть возможность — делайте через физический перенос диска или по 10GbE, иначе уходит очень много времени.