Міграція віртуальних машин з Hyper-V до Proxmox
Отже - виникла необхідіність перенести ВМ з одного середовища в інше.
Насамперед необхідно зауважити, що в Hyper-V є два варіанти створення ВМ це так звані генерації Gen1, та Gen2. Відповідно вони і стали основною проблемою яку мені прийшлось вирішити.
При при міграції 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», щоб інсталювати гостьові інструменти, дотримуйтеся вказівок і переконайтеся, що для інсталяції драйверів вибрано всі параметри:
дайте завершити встановлення.
Потім встановіть правильний msi у папку «guest-agent»:
Після цього кроку ви можете вимкнути віртуальну машину, готову конвертувати та експортувати диск для використання всередині Proxmox.
Обов’язково запишіть інформацію про свою віртуальну машину, наприклад конфігурацію IP-адреси та призначену віртуальну mac-адресу.
Наша віртуальна машина, яку ми переносимо, має диск на 17 ГБ.
Переходим до папки в які знаходиться наша ВМ та копіюєм на сервер Proxmox через SFTP. На момент написання статті я використовував Proxmox 7,3-4
scp <source_vhdx> <proxmox_user>@<proxmox_ip>:<proxmox_folder_path> - якось так, або через зручний для вас спосіб
Переходим до Proxmox та створюєм ВМ
1 Створити нову ВМ та дати їй назву і порядковий номер який потім створиться в папці /var/lib/vz/images/ в нашому випадку це 103
2. Налаштування покоління ОС - MS Windows та нашу версію
3. Системні налаштування, контроллер, версія BIOS, формат, та диск збереження UEFI
4. Диск із системою, його ми видаляєм, так як пізніше підмонтуєм з Hyper-V
5. CPU, та RAM - виставляєм які потрібні для нормальної роботи ОС. Також змінюєм мережеву можель на Vitrio (так як драйвера вже в нас були встановлені раніше)
ПІсля чого натискаєм створити, та чекаєм пару сек.
Далі переходим в консоль 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
Вибрати тип диску SATA, кеш перезапис, та емуляція SSD - при бажанні та можливостей сервера
Після підключення диску, він покаже, що його об'єм 127 Гб, це максимальне значення vhdx ВМ на Hyper-V Gen1
Наступним короком буде додавання цього диску в Boot Order
Стартуєм нашу перенесену ВМ, процес завантаження проходить у звичному режимі
Після завантаження ОС, авторизовуємось в системі, та одразу помічаєм, що наша ОС побачила нову мережу, та запропонувала нам підтвердити її налаштування, які були видані по DHCP
Якщо б ми не завантажили перед цим на Hyper-V драйвера Virtio - то цей крок можна було б зробити зараз
І останній момент при гарній роботі ВМ на новому місці, потрібно змінити тип контролера SCSI на VirIO
Виключаєм ВМ, та ідем до вкладки Hardware -> SCSI Controller type
Зьерігаєм, та завантажуєм ВМ.
Ті самі дії можна було б робити через конфіг файл /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