Миграция виртуальных машин из Hyper-V в Proxmox
Миграция виртуальных машин из Hyper-V в Proxmox
В этой статье будет кратко показано, как выполняется миграция виртуальных машин из Hyper-V в Proxmox. Причем миграция разных поколений виртуальных машин Hyper-V – как ВМ первого поколения, так и ВМ второго поколения.
Приведенная ниже последовательность действий покрывает основные типовые сценарии миграции. Поскольку дополнительных вводных при миграции может быть много, то маловероятно, что это руководство можно рассматривать как универсальное и охватывающее все возможные случаи.
В руководстве от Proxmox не так много пояснительной информации о процессе миграции с Hyper-V. Поэтому данная статья поможет наглядно показать весь процесс.
Исходные данные
Для тестового сценария создано несколько виртуальных машин.
Виртуальная машина 1.
|
Параметр |
Значение |
|
Поколение виртуальной машины Hyper-V |
2 |
|
Операционная система |
Ubuntu Server 22.04 LTS |
|
Тип BIOS |
UEFI |
|
Размер диска 1 (системный) |
60 ГБ |
Виртуальная машина 2.
|
Параметр |
Значение |
|
Поколение виртуальной машины Hyper-V |
2 |
|
Операционная система |
Windows Server 2016 Standard |
|
Тип BIOS |
UEFI |
|
Размер диска 1 (системный) |
60 ГБ |
Миграция виртуальных машин Linux чуть проще, т.к. драйвер для Virtio уже есть на борту. Для виртуальных машин Windows этот драйвер нужно будет установить вручную.
В качестве исходного гипервизора Hyper-V выступал Windows Server 2022.
В качестве целевого гипервизора выступает Proxmox 7.2-7.
Предварительная подготовка
Шаги по предварительной подготовке виртуальных машин одинаковы, как для платформы Linux, так и для платформы Windows:
- Создание копии vhd/vhdx диска.
- Копирование vhd/vhdx диска на сервер Proxmox.
Создание копии vhd/vhdx диска
На самом деле здесь есть несколько вариантов. В зависимости от того, насколько возможен перерыв в работе виртуальной машины Hyper-V.
Итак, для создания копии диска есть следующие варианты:
1. Первый вариант самый оптимальный – останавливаете виртуальную машину и загружаете диски на сервер Proxmox. Этот метод обеспечит гарантированную целостность данных на диске. К тому же, если после этого не будете запуска ВМ на сервере Hyper-V, то по завершении миграции получите на Proxmox самую актуальную версию ВМ. И не нужно будет думать о том, как перенести дельту изменений виртуальной машины.
2. Если виртуальная машина критическая и нельзя выполнять её остановку, то можно выполнить экспорт виртуальной машины. В результате получиться копия всех файлов работающей виртуальной машины Hyper-V, в т.ч. и виртуальных дисков. Недостаток этого метода в том, что выполняется экспорт всех дисков. Если какие-то из дисков нужно исключить, то это не тот метод. Однако, именно этот метод был использован. Из практики данного метода –“битых” дисков при использовании этого метода не обнаружено.
3. Если виртуальную машину останавливать нельзя и нужно выполнить экспорт только части дисков. (например, нужен только системный диск), то можно использовать утилиту Disk2vhd. Но это самый относительно ненадежный метод, т.к. на высоконагруженных системах есть шанс получить не совсем консистентные данные.
Копирование vhd/vhdx диска на сервер Proxmox
Это тоже относительно понятный шаг. Все, что нужно сделать – это скопировать виртуальный диск (или диски) на сервер Proxmox в локальную директорию. Инструмент для копирования можно использовать любой. Если выполняете копирования из среды Windows, то можно использовать WinSCP.
Если работаете в среде Linux, то можно использовать утилиту scp. Формат команды для scp следующий:
scp <source_vhdx> <proxmox_user>@<proxmox_ip>:<proxmox_folder_path>
Пример:
scp tst-lin.vhdx root@10.10.10.20:/mnt/pve/HDD
scp tst-win.vhdx
root@10.10.10.20:/mnt/pve/HDD
По итогу должны увидеть vhd(x) диски в директории на сервере Proxmox:
Создание виртуальных машин
После того, как была выполнена конвертация жестких дисков можно создавать виртуальные машины. Процесс настройки виртуальных машин после создания немного отличается. Для Linux машин особо дополнительных действий не требуется. Для машин Windows необходимо будет установить драйвер virtio. Но обо всех подробностях ниже.
Для ОС Linux
Итак, необходимо создать заготовку виртуальной машины для Linux:
1. Указывается сервер Proxmox (если в организации их несколько) и имя виртуальной машины:
2. Указывается тип операционной системы – Linux.
3. Далее необходимо указать ряд важных параметров:
Тип эмулируемого аппаратного обеспечения – в статье указан i440fx.
Тип BIOS – в статье выбран OVMF (UEFI) (т.к. исходная ВМ использовала UEFI BIOS).
Тип SCSI контроллера – VirtIO SCSI, т.к. его поддержка есть в Linux из коробки.
Также необходимо выбрать формат и хранилище для UEFI раздела.
4. На странице конфигурации виртуальных дисков удаляются вообще все диски:
5. Указываются количественные ресурсы процессора:
6. Указывается количество оперативной памяти:
7. И параметры сети:
Обратите внимание на тип сетевого адаптера – VirtIO. Аналогично контроллеру SCSI его поддержка есть в Linux из коробки.
8. На странице со сводными параметрами создаваемой виртуальной машины нажмите кнопку “Finish“.
9. Импортируем виртуальный жесткий диск:
qm importdisk 104 /mnt/pve/HDD/tst-lin.vhdx NVMe
Формат команды следующий:
qm importdisk <vmid>
<source> <storage>
10. После этого в настройках виртуальной машины должен появиться неиспользуемый виртуальный жесткий диск:
11. Перейдем в настройки виртуального жесткого диска (кнопка “Edit“) и добавим его в используемые диски виртуальной машиной (кнопка “Add“):
12. Также убедитесь, что в настройках виртуальной машины новый диск из п. 11 используется в качестве загрузочного диска:
13. Вот теперь можно попробовать запустить виртуальную машину на сервере Proxmox:
Единственный нюанс, с которым можно столкнуться – это то, что сетевой интерфейс может быть переименован, например с eth0 на ens18. Соответственно, нужно было скорректировать файл с настройками сети и изменить имя адаптера на ens18:
nano
/etc/netplan/00-installer-config.yaml
И изменить имя сетевого адаптера:
И применить изменения в конфигурации сети:
netplan apply
После этого виртуальная машина успешно получила IP адрес от сервера DHCP:
Для ОС Windows
В целом миграция виртуальных машин Windows выполняется аналогично миграции виртуальных машин Linux. Но есть ряд нюансов. Собственно, именно нюансам и будет посвящен этот раздел.
В статье будет поверхностно описан процесс миграции виртуальных машин Windows, особое внимание будет уделено тем шагам, где есть отличия от платформы Linux:
1. Как и для платформы Linux сначала создается виртуальная машина без дисков. Отличия будут только на шаге выбора типа гостевой операционной системы:
Очень важный момент – выбор типа SCSI контроллера. В Windows из коробки нет драйвера для virtio. Поэтому будет указан другой тип контроллера – LSI 53C895A.
Так же на этапе выбора модели сетевого адаптера укажите Intel E1000
Причины аналогичны – в Windows из коробки нет поддержки адаптеров типа VirtIO.
2. Импортируем виртуальный жесткий диск:
qm importdisk 105 /mnt/pve/HDD/tst-win.vhdx NVMe
3. Подключаем импортированный виртуальный жесткий диск.
Не забудьте в параметрах очередности загрузки выбрать подключенный диск:
4. Запускаем виртуальную машину.
5. Если запуск прошел успешно, то теперь необходимо установить драйвер VirtIO. ISO образ с драйвером для Windows можно загрузить вот по этой ссылке. Можно либо непосредственно выполнить загрузку в гостевой ОС, либо выполнить загрузку через в локальное хранилище Proxmox, а затем примонтировать ISO образ в гостевую ОС. Рассмотрим использование второго метода – через загрузку в локальное хранилище Proxmox и подключение ISO в гостевую ОС.
6. Примонтируем ISO образ.
7. Установим драйвер VirtIO.
8. Меняем тип контроллера SCSI на VirIO.
И снова запускаем виртуальную машину. Проверяем, что ВМ запустилась успешно.
9. Так же можно поменять тип сетевого адаптера на VirtIO. Но нужна будет перезагрузка ВМ.
В данном случае миграция будет завершена успешно.
Если что-то пошло не так
Могут быть нюансы с Windows. В случае каких-то затруднений рекомендуется ознакомиться с руководством. Вероятнее всего там получиться найти ответы на какие-то ваши вопросы или ошибки.