Миграция Windows в виртуальную машину Proxmox

В статье рассмотрим особенности миграции Windows машин в среду виртуализации Proxmox, включая сценарии миграции физических компьютеров (Physical-to-Virtual, P2V миграция) или виртуальных машин с других гипервизоров (Virtual-to-Virtual, V2V). Мы постарались рассмотреть большинство типовых сценариев миграции, доступные инструменты и проблемы, которые могут возникнуть при переносе настроенной Windows машины в виртуальную машину Proxmox.

Подготовка Windows хоста к миграции в Proxmox

Начнем с подготовки Windows хоста, который вы планируете перенести в Proxmox:

Скачайте последнюю версию ISO образ с драйверами Virt-IO и установите на Windows машине перед миграцией. Это добавит необходимые Virt-IO драйверы, нужные для загрузки системы после смены контролера диска (без них Windows не загрузится с BSOD ошибкой INACCESSIBLE_BOOT_DEVICE), инициализации сетевых адаптеров, гостевой агент QEMU Guest Agent и другие компоненты.

установка virtio-win-driver

Возможно установить Virtio-win-guest-tools через встроенный в Windows пакетный менеджер WinGet:

winget install RedHat.VirtIO

Проверьте в исходной Windows, используется ли режим загрузки UEFI и соответственно диски с GPT таблицей разделов (по умолчанию на всех современных компьютерах) или BIOS (Legacy CSM с MBR таблицей разделов на диске). ВМ именно с таким типом прошивки нужно будет создавать в Proxmox.

$env:firmware_type

$env:firmware_type проверить тип BIOS или UEFI

Миграция виртуальных Windows на Proxmox с других гипервизоров

Миграция с VMware в Proxmox

В Proxmox 8.2 появилась встроенная возможность прямого импорта виртуальных машин с хостов VMware ESXi (vCenter).

Хост ESXi подключается как внешнее хранилище в Proxmox и вам нужно только указать ВМ, которую вы хотите перенести. Proxmox сам прочитает конфигурационный файл .vmx, создаст аналогичную ВМ и скопирует виртуальные диски.

Миграция с Hyper-V в Proxmox

Встроенных инструментов для прямого импорта ВМ из Hyper-V в Proxmox пока нет (формат экспорта виртуальных машин Hyper-V также не поддерживается в Proxmox).

Но администратор может легко смонтировать SMB хранилище с файлами виртуальных машин в Proxmox, создать новые пустые ВМ с аналогичными характеристиками и импортировать vhdx диски командой qm importdisk (ВМ на Hyper-V должна быть остановлена). По сути, этот сценарий мы и рассматриваем дальше в этой статье.

Снимаем образ диска машины Windows

Если вы хотите мигрировать в Proxmox физические Windows машины/сервера (P2V), или ВМ с других гипервизоров или от внешних облачных провайдеров (VPS, VDS), для миграции машины вам нужно будет создать образ ее дисков. В таком образе будет содержаться полная копия Windows со всеми ролями, настройками, приложениями и данными.

Для захвата образа локальных дисков хоста Windows и конвертация их в формат виртуального диска можно использовать различные утилиты:

  • Disk2VHD от Microsoft – позволяет прямо в онлайн режиме (из-под работающей системы) через службу теневого копирования (Volume Shadow Copy Service, VSS) создать образ локальных логических дисков и сохранить их в формат виртуального диска VHDX.
  • Clonezilla – исходный компьютер нужно загрузить с загрузочной флешки Clonezilla, сохранить образ системы на внешний диск или сетевую папку (по SMB, NFS, SFTP). После этого на Proxmox создаётся новая ВМ, выполняется загрузка с ISO образа Clonezilla и выполняется развертывание захваченного образа.
  • Можно установить бесплатный Veeam Agent для Windows на физическую машину и создать ее резервную копию. Затем пустая ВМ загружается с диска восстановления Veeam Recovery Media и выполняется восстановление из бэкапа.
  • VMware Converter – также бесплатная утилита которая позволяет выполнить захват образа машины по сети и конвертировать ее в формат виртуального диска VMDK (поддерживается в Proxmox).
  • Starwind V2V / P2V Converter

Какой конкретно инструмент использовать – решать вам, так как выбор зависит от того, где и в каком виде запущена сейчас Windows, какие есть ограничения в вашей инфраструктуре и какие инструменты вы можете использовать. Для простых случаев (обычные ПК) можно использовать простую утилиту Disk2vhd. Если же вы мигрируете машины со сложными, тяжелыми сервисами, лучше снимать образ на холодную (офлайн) через Clonezilla / Veeam.

Для захвата образа системы я воспользуюсь утилитой Disk2VHD. Скачайте утилиту и запустите прямо на Windows хост, который вы хотите мигрировать в Proxmox (если на сервере запущены продуктивные службы, нужно корректно остановить их для получения консистентной копии).

Укажите, что вы хотите использовать более современный формат VHDX, разрешите использовать службу VSS и укажите куда нужно сохранить получившийся виртуальный диск с образом (это может быть отдельный локальный диск, внешний USB накопитель или в сетевая папка). Выберите локальные диски (в том числе загрузочный раздел EFI и раздел со средой восстановления), которые нужно захватить.

Disk2vhd - захват образа дисков Windows в VHDX файл

После того, как захват образа закончен, полученный VHDX файл можно скопировать на хост Proxmox:

scp -r F:\VHD\s-fs01.vhdx root@192.168.158.101:/tmp/

scp скопировать vhdx на Proxmox

После копирования файла виртуального диска, проверьте его целостность с помощью команды в консоли Proxmox:

# qemu-img check -r all /tmp/s-fs01.vhdx

No errors were found on the image.

qemu-img check -r all /tmp/s-fs01.vhdx проверка vhdx диска

Подготовка новой виртуальной машины c Windows в Proxmox

На хосте Proxmox создайте новую пустую ВМ (без диска). В качестве типа гостевой ОС обязательно укажите Windows и версию, соответствующую исходной машине.

Новая Windows ВМ в Proxmox

Предоставьте ей необходимые ресурсы. Можно оставить столько же ядер CPU и RAM, как на исходной, а можно и как увеличить, так и уменьшить, в зависимости от ситуации.

Выберите тип загрузки (seaBIOS или OVMF UEFI), который использовался на физической машине.

Выбрать тип firmware UEFI или BIOS в настройка ВМ proxmox

  • Удалите виртуальный диск, который предлагается создать по умолчанию удалите новый диск
  • В качестве сетевого адаптора выберите VirtIO (paravirtualizaed)

Все основные настройки и значимые параметры Windows ВМ в Proxmox мы рассматривали в одной из предыдущих статей.

настройки виртуальной машины proxmox

Не включайте пока новую машину. Запомните ее VM ID (например, 121).

Без предварительной конвертации Proxmox поддерживает следующие основные форматы виртуальных дисков: RAW, QCOW2 и VMDK (формат VMware),RAW, VDI, но не VHD. VHD (VHDX) файл можно предварительно конвертировать в совместимый формат командой:

# qemu-img convert -O qcow2 /tmp/s-fs01.vhdx /mnt/pve/datastore2/images/121/vm-121-disk-1.qcow2

Но в актуальных версиях Proxmox утилита импорта автоматически может определить тип виртуального диска и конвертировать VHDX на лету, поэтому можно сразу импортировать диск в созданную вами виртуальную машину:

# qm importdisk 121 /tmp/s-fs01.vhdx datastore2

# qm importdisk - импорт vhdx диска в виртуалку

В настройках ВМ появится новый неиспользуемый диск (Unused Disk). Дважды щелкните по новому диску и подключите его к ВМ.

Для оптимальной производительности диски в виртуальных машинах Windows на хосте Proxmox лучше подключать через SCSI контроллер. Однако, если сразу подключить новый диск через SCSI, Windows не загрузится, т.к. просто не увидит диска (из-за того, что драйвер контроллера Red Hat Virio SCSI не настроен на автоматический запуск). Этот драйвер можно вручную загрузить из командной строки в среду WinPE, но мы воспользуемся более простым, хотя и запутанным решением.

Идея заключается в том, что мы временно подключаем мигрированный виртуальный диск Windows через SATA шину и добавляем маленький временный 1 Гб диск через SCSI контроллер.

Подключить диск через SATA

Временный диск через виртуальный SCSI контроллер proxmox

В разделе Options -> Boot Order поставьте SATA диск в качестве первичного загрузочного устройства и запускайте ВМ

Настроить порядок загрузки ВМ

Windows должна запустится с SATA контроллера и автоматически установить драйвера для контроллера VirtIO SCSI. Откройте Device Manager и проверьте, что в списке Storage Controller появился Red Hat Virio SCSI pass-through controller. Драйвер vioscsi теперь будет настроен на автоматическую загрузку.

Драйвер Red Hat Virio SCSI pass-through controller установлен

Теперь виртуальную машину можно выключить:

  1. Перейдите в раздел Hardware в настройках ВМ
  2. Отключите SATA диск (Detach) и переподключите его через быстрый SCSI VirtIO контроллер. Переподключить диск через SCSI
  3. Маленький 1 Гб диск можно удалить
  4. Выберите диск на SCSI контроллере в качестве первого загрузочного устройства. Выбрать scsi в качестве загрузочного устройства

Можно ли мигрировать Windows машину в Proxmox без таких сложностей с временными SATA контроллерами и SCSI дисками? Да, можно, но официально такой способ не поддерживается.

Идея в том, чтобы до миграции (и захвата образа Windows) создать в Windows фейковый SCSI контроллер VirtIO. Для этого нужно воспользоваться PowerShell скриптом load-virtio-scsi-on-boot, доступным тут https://github.com/croit/load-virtio-scsi-on-boot

Скачайте PS1 скрипт и запустите его:

powershell.exe -ExecutionPolicy Bypass -File .\Downloads\load-virtio-scsi-on-boot.ps1

load-virtio-scsi-on-boot.ps1

Скрипт создаст фантомное устройство-контроллер (VirtIO phantom device: Red Hat VirtIO SCSI pass-through controller ROOT\VIOSCSI\0000), загрузит для него драйвер VirtIO SCSI, после чего удалит его.

фейковый : Red Hat VirtIO SCSI pass-through controller

Заключительный этап миграции

После того, как вы убедились, что мигрированная виртуальная машина Windows успешно запускается на Proxmox проверьте:

  • Настройки сетевого интерфейса (возможны сценарии со скрытыми сетевыми адаптерами)
  • Проверьте, что в диспетчере устройств определилось все виртуальное оборудование и нет неизвестных устройств
  • Удалите старые утилиты и драйвера (например, Hyper-V Integration Services, VMware Tools или драйверы и утилиты физического железа: звук, графика и прочее)
  • Проверьте, что в Windows запушена служба Qemu agent: Get-Service QEMU-GA
  • Проверьте работу всех служб и приложений. Лицензии некоторых приложений может слететь после замены оборудования на виртуальное. Возможно, потребуется перерегистрация. Проверьте статус активации Windows.

Итак, в статье мы рассмотрели основные шаги, которые помогут вам успешно подготовиться и выполнить миграцию Windows машины в среду виртуализации Proxmox.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)