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