Содержание

Миграция

Миграция с других гипервизоров (локально).

Migrate VMWare ESXi Virtual Machines to Proxmox KVM with LVM-Thin Logical Volumes https://www.sysorchestra.com/2017/03/16/migrate-vmware-esxi-virtual-machines-to-proxmox-kvm-with-lvm-thin-logical-volumes/

Migrate from Xenserver to Proxmox https://techblog.jeppson.org/2018/01/migrate-xenserver-proxmox/

https://www.reddit.com/r/homelab/comments/625i4p/tutorial_convert_vulnhub_vms_for_proxmox/

Небольшой how-to.

Внимание!

Формат raw - это т.н. «сырой» формат образов дисков. Перед дальнейшими операциями убедиться в наличие
свободного места.

Подключаемся по SFTP к Proxmox. В Win это можно сделать с пом. WinSCP или FAR.

Забрасываем образ(ы) диска(ов), к-ые мы хотим подкинуть к ВМ в предварительно созданную временную папку.

Прим. Если у вас ova-образ - сперва распаковываем
tar -xvf disk.ova

Конвертируем (на примере vmware .vmdk)
qemu-img convert -p -O raw disk.vmdk disk.raw

Смотрим размер получившегося
ls -ahl

Cоздаем через gui ВМ с диском(-ми) не меньшего размера. ВМ не запускать!

Смотрим что у нас получилось (у вас путь к образам дисков может быть другой)
ls -al /dev/zvol/rpool/data/

Разворачиваем образ диска в диск ВМ
dd if=/path/to/file/disk.raw of=/dev/zvol/ZFS-Pool-Name/vm-XYZ-disk-X
ZFS-Pool-Name и vm-XYZ-disk-X изменить на свои

После
qm rescan

Upd2.
Короткий вариант. Проверил - работает.
qemu-img convert -p -O raw disk.vmdk /dev/zvol/ZFS-Pool-Name/vm-XYZ-disk-X
ZFS-Pool-Name и vm-XYZ-disk-X изменить на свои
qm rescan

Запускаем ВМ. Проверяем.

Upd3.
Специально для тех, кто переходит с MS Hyper-V на Proxmox (KVM):

Подкидываем vhdx- образ по SFTP во временную папку на Proxmox.

Далее повторяем ранее описанное (т.е., создаем через gui ВМ с диском необх. размера, но не вкл. её! )

Команда для конвертации:
qemu-img convert -p -O raw disk.vhdx /dev/zvol/ZFS-Pool-Name/vm-XYZ-disk-X
ZFS-Pool-Name и vm-XYZ-disk-X изменить на свои
qm rescan

Запускаем ВМ. Проверяем.

Upd4.
И для догадливых
Аналогично описанному выше (только наоборот) можно конвертировать zfs-диски Proxmox-а во все самые распространненные форматы:

Сперва выкл. ВМ, конечно.

VHD\VHDX (Hyper-V)
qemu-img convert -p -O vhdx /dev/zvol/ZFS-Pool-Name/vm-XYZ-disk-X /path/to/file/disk.vhdx
ZFS-Pool-Name , vm-XYZ-disk-X и /path/to/file/ изменить на свои

Остальные форматы https://docs.openstack.org/image-guide/convert-images.html

P.s. Также имеется возможность миграции\конвертирования по сети используя netcat, dd, pv, gzip\pigz\bzip2, ssh и
SystemRescueCD https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE

Так что, добро пожаловать в мир открытого ПО. Для тех кто еще не решился )


Миграция Windows 2000 с динамическими дисками dynamic disc

Дано:
Старый сервер с Windows 2000 Server на программном raid1 из 2-ух дисков. На сервере живет оч. важное для клиента ПО.

Задача:
(Бережно) перенести в Proxmox VE (KVM)

Проблема:

  1. Linux ничего «не знает» о динамических дисках Windows, что не дает возможность использовать «в лоб» Clonezilla и Partclone для миграции локально или по сети.
  2. Windows 2000 не имеет в своем составе службу Volume Shadow Copy, что не позволяет использовать, напр., Disk2vhd для промежуточной миграции в vhd(x) и дальнейшего переноса на PVE.

Решение:
Нам понадобятся Clonezilla Live, Gparted Live, драйверы на сетевой адаптер Intel e1000.

  1. Записать на CD\DVD образ Clonezilla live
  2. Скачать с сайта Intel и сохранить на раб. стол КЛОНИРУЕМОЙ файлы PROWMI.exe, PRO2K.exe для установки драйверов на виртуальный сет. адаптер Intel e1000
  3. Создать вирт. машину (ВМ) типа Windows 2000 с размером hdd НЕ МЕНЬШЕ, чем hdd клонируемой.
  4. Загрузиться с Clonezilla live на ФИЗИЧЕСКОЙ до момента «Start Clonezilla or enter login shell» и выбрать Enter_shell
    3.1. (Опционально) Сменить пол-ля на root: sudo passwd root → ввести 2 раза пароль → su - и ввести придуманный ранее пароль
  5. Загрузиться с Clonezilla live на ВИРТУАЛЬНОЙ до момента «Start Clonezilla or enter login shell» и выбрать Enter_shell
    4.1. (Опционально) п.3.1.
  6. Узнать и запомнить IP адрес на ВИРТУАЛЬНОЙ: ip a s
  7. Узнать и запомнить имя клонируемого диска на КЛОНИРУЕМОЙ: fdisk -l
  8. Узнать и запомнить имя диска, на к-ый будет перенесена инф-ция на ВИРТУАЛЬНОЙ: fdisk -l
  9. На ВИРТУАЛЬНОЙ ввести в терминале: sudo nc -w120 -vvnlp 19000 | sudo cat > /dev/sdX, где sdX - имя диска из п.7 и нажать Enter
  10. На КЛОНИРУЕМОЙ ввести в терминале: sudo pv /dev/sdX | sudo nc -vvn X.X.X.X 19000, где sdX - имя диска из п.6, X.X.X.X - IP адрес из п.5 и нажать Enter
  11. По завершние клонирования выкл. КЛОНИРУЕМУЮ.
  12. Перезагрузить ВИРТУАЛЬНУЮ.
  13. Установить на ВИРТУАЛЬНОЙ драйверы сетевой карты Intel E1000: 1. PROWMI.exe, 2. PRO2K.exe
  14. Важно! Откл. в настройках сетевой карты все, что касается Offload.
  15. Для избавления от динамического диска:
    • добавить еще один диск в ВИРТУАЛЬНУЮ
    • загрузиться с Gparted live
    • скопировать партиции со старого на новый диск
    • выключить ВМ
    • отсоединить старый диск
    • загрузиться с нового
    • в случае проблем со стартом ОС загрузиться в Консоль восстановления с диска Windows 2000 и
      пофиксить командами fixboot, fixmbr

Миграция с других гипервизоров (удаленно).

Using Terraform and Cloud-Init to deploy and automatically monitor Proxmox instances https://yetiops.net/posts/proxmox-terraform-cloudinit-windows/
Encrypting Proxmox VE 6: ZFS, LUKS, systemd-boot and Dropbear https://tactical-documentation.github.io/post/proxmoxve6-zfs-luks-systemdboot-dropbear/
ZFS RAIDZ luks disk encryption script https://www.reddit.com/r/Proxmox/comments/ijpuv8/zfs_raidz_luks_disk_encryption_script/

Мигрируем удаленно.

Прим. Примеры использования pv - http://linux-notes.org/utilita-pv-progress-bar-dlya-konsol-ny-h-utilit-v-unix-linux/

Предупреждение. Все ниже описанное вы делаете на свой страх и риск. Внимательно проверяйте какие диски копируете и куда принимаете. Крайне желательно иметь резервные копии данных.

И так. Как сказал один оч. известный и достойный Человек: «Поехали!»

Качаем на принимающей и отдающей сторонах SystemRescueCD (http://www.system-rescue-cd.org/).

Принимающая сторона:
На Proxmox создаем ВМ с размером диска как у отдающей стороны.
Загружаемся с SystemRescueCD в эту ВМ.
Настраиваем сет. параметры (net-setup имя-интерфейса) или получаем их по dhcp. Проверить полученные\настроенные сет. параметры - ip a s

На отдающей стороне:
Загружаемся с SystemRescueCD.
Настраиваем сет. параметры (net-setup имя-интерфейса) или получаем их по dhcp. Проверить полученные\настроенные сет. параметры - ip a s

Запускаем на принимающей стороне:
nc -w10 -vvnlp 19000 | pigz -5 -dfc | cat > /dev/disk-name, где :

-w10 - время ожидания данных в сек. на приним. стороне (меняется на ваше усмотрение).
19000 - номер порта, к-ый слушает netcat и принимает на него данные от отдающей стороны (меняется на ваше усмотрение)
pigz -5 - степень сжатия (меняется на ваше усмотрение)
disk-name - имя диска внутри ВМ (меняете на свое)

Считаем до трех и запускаем на отдающей стороне:
pv /dev/disk-name | pigz -5 -fc | nc -vvn remote-server-ip 19000, где:

disk-name - имя диска, к-ый вы хотите передать (узнается по fdisk -l)
pigz -5 - степень сжатия (меняется на ваше усмотрение)
remote-server-ip - ip-адрес\имя удаленного сервера-приемника
19000 - номер порта удаленного сервера-приемника

Всё. Скрещиваем пальцы, чтобы линк между отдающей и принимающей сторонами не упал и ждем окончания процесса.
После удачного окончания выкл. ВМ на принимающей стороне. Извлекаем в gui из вирт. привода SystemRescueCD и пробуем загрузиться.

Пример с SSH (кому необходима секьюрность):

Принимающая сторона:
Создаем ВМ с размером диска как у отдающей стороны.
Загружаемся с SystemRescueCD в эту ВМ.
Настраиваем сет. параметры (net-setup имя-интерфейса) или получаем их по dhcp. Проверить полученные\настроенные сет. параметры - ip a s
Смотрим какие диски у нас есть - fdisk -l. Запоминаем\записываем имя нужного нам диска.
Более ничего на принимающей стороне делать\запускать не надо.

На отдающей стороне:
Загружаемся с SystemRescueCD.
Настраиваем сет. параметры (net-setup имя-интерфейса) или получаем их по dhcp. Проверить полученные\настроенные сет. параметры - ip a s
Запускаем команду:
pv /dev/disk-name | pigz -5 -fc | ssh remote-server-ip «cat > /dev/disk-name», где :

disk-name - имя диска на принимающей стороне, к-ое мы внимательно выбрали и запомнили ранее
remote-server-ip - ip\имя примающей стороны

Ожидаем удачного окончания процесса передачи. После выкл. ВМ на принимающей стороне. Извлекаем в gui из вирт. привода SystemRescueCD и пробуем загрузиться.