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