24 вересня, Неділя, 2023
A- A A+

hyperv to proxmox1

Міграція віртуальних машин з Hyper-V до Proxmox

Отже - виникла необхідіність перенести ВМ з одного середовища в інше.

Насамперед необхідно зауважити, що в Hyper-V є два варіанти створення ВМ це так звані генерації Gen1, та Gen2. Відповідно вони і стали основною проблемою яку мені прийшлось вирішити.

hyperv gen1 2

При при міграції Windows OS потрібно розуміти, що KVM має певну специфіку, та вимоги до драйверів а саме Virtio посилання з описом та подальшим завантаженням пакету драйверів у вигляді virtio-win-*.iso нам знадобиться трохи згодом.

Отже наша віртуальна машина має такі специфікації:

Параметр Значення
Покоління Hyper-V 2
Операційна система Windows Server 2019
Тип BIOS UEFI
Розмір диска 50 ГБ

Попередня підготовка
Кроки попередньої підготовки віртуальних машин однакові, як для платформи Linux, так і для платформи Windows:

Встановити драйвера Virtio на ВМ яку хочемо переносити.

Завантажуєм її та підключаєм вітруальний CD-ROM з попередньо завантаженим образом

Двічі клацніть / Установіть «Virtio-win-gt-x64.msi», щоб інсталювати гостьові інструменти, дотримуйтеся вказівок і переконайтеся, що для інсталяції драйверів вибрано всі параметри:

hyperv to proxmox3

hyperv to proxmox4

дайте завершити встановлення.

Потім встановіть правильний msi у папку «guest-agent»:

hyperv to proxmox5

Після цього кроку ви можете вимкнути віртуальну машину, готову конвертувати та експортувати диск для використання всередині Proxmox.

Обов’язково запишіть інформацію про свою віртуальну машину, наприклад конфігурацію IP-адреси та призначену віртуальну mac-адресу.

Наша віртуальна машина, яку ми переносимо, має диск на 17 ГБ.

Переходим до папки в які знаходиться наша ВМ та копіюєм на сервер Proxmox через SFTP. На момент написання статті я використовував Proxmox 7,3-4

hyperv to proxmox2scp <source_vhdx> <proxmox_user>@<proxmox_ip>:<proxmox_folder_path> - якось так, або через зручний для вас спосіб

Переходим до Proxmox та створюєм ВМ

1 Створити нову ВМ та дати їй назву і порядковий номер який потім створиться в папці /var/lib/vz/images/ в нашому випадку це 103

hyperv to proxmox6

2. Налаштування покоління ОС - MS Windows та нашу версію

hyperv to proxmox7

3. Системні налаштування, контроллер, версія BIOS, формат, та диск збереження UEFI

hyperv to proxmox8

4. Диск із системою, його ми видаляєм, так як пізніше підмонтуєм з Hyper-V

hyperv to proxmox9

5. CPU, та RAM - виставляєм які потрібні для нормальної роботи ОС. Також змінюєм мережеву можель на Vitrio (так як драйвера вже в нас були встановлені раніше)

hyperv to proxmox10

ПІсля чого натискаєм створити, та чекаєм пару сек.

Далі переходим в консоль Proxmox, та конвертуєм раніше завантажений диск .vhdx в qcow2 (також можна і в raw) завантажуєм його в папку, згідно номеру ВМ яку ми створювали на PVE (103)

root@pve1:home/# qemu-img convert -O qcow2 /home/WinServ19.vhdx /var/lib/vz/images/103/vm-103-disk-1.qcow2

Чекаєм поки він конвертується

Наступний крок - це монтування диску до нашої ВМ.

Запускаєм команду

# qm rescan
rescan volumes...
VM 103 add unreferenced volume 'local:103/vm-103-disk-1.qcow2' as 'unused0' to config

та отримуєм інформацію, що появився непідключений диск ВМ 103, вибираєм його, та натискаєм на кнопку Edit

hyperv to proxmox11

Вибрати тип диску SATA, кеш перезапис, та емуляція SSD - при бажанні та можливостей сервера

hyperv to proxmox12

Після підключення диску, він покаже, що його об'єм 127 Гб, це максимальне значення vhdx ВМ на Hyper-V Gen1

hyperv to proxmox13

Наступним короком буде додавання цього диску в Boot Order

hyperv to proxmox14

Стартуєм нашу перенесену ВМ, процес завантаження проходить у звичному режимі

hyperv to proxmox15

Після завантаження ОС, авторизовуємось в системі, та одразу помічаєм, що наша ОС побачила нову мережу, та запропонувала нам підтвердити її налаштування, які були видані по DHCP

hyperv to proxmox16

Якщо б ми не завантажили перед цим на Hyper-V драйвера Virtio - то цей крок можна було б зробити зараз

І останній момент при гарній роботі ВМ на новому місці, потрібно змінити тип контролера SCSI на VirIO

Виключаєм ВМ, та ідем до вкладки Hardware -> SCSI Controller type

hyperv to proxmox17

Зьерігаєм, та завантажуєм ВМ.

Ті самі дії можна було б робити через конфіг файл /etc/pve/qemu-server/103.conf

agent: 1
bios: ovmf
boot: order=sata0
cores: 1
efidisk0: local:103/vm-103-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
ide2: none,media=cdrom
machine: pc-q35-7.1
memory: 2048
meta: creation-qemu=7.1.0,ctime=1680878694
name: WinServ19
net0: virtio=E2:5F:25:31:47:5D,bridge=vmbr0
numa: 0
ostype: win10
sata0: local:103/vm-103-disk-1.qcow2,cache=writeback,size=127G,ssd=1
scsihw: virtio-scsi-pci
smbios1: uuid=13a65d3b-5a4d-4e92-89e1-be1ae577433b
sockets: 1
vmgenid: 0e4aa5da-7cbf-4183-b7e7-a89633232c39