====== Миграция ====== ===== Миграция с других гипервизоров (локально). ===== **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/|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://techblog.jeppson.org/2018/01/migrate-xenserver-proxmox/]] [[https://www.reddit.com/r/homelab/comments/625i4p/tutorial_convert_vulnhub_vms_for_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\VHD**X** (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|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|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/|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/|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/|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/|http://linux-notes.org/utilita-pv-progress-bar-dlya-konsol-ny-h-utilit-v-unix-linux/]] **Предупреждение. Все ниже описанное вы делаете на свой страх и риск. Внимательно проверяйте какие диски копируете и куда принимаете. Крайне желательно иметь резервные копии данных.** И так. Как сказал один оч. известный и достойный Человек: "Поехали!" Качаем на принимающей и отдающей сторонах SystemRescueCD ([[http://www.system-rescue-cd.org/|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 и пробуем загрузиться.