Proxmox. Миграция виртуальных машин и контейнеров
Миграция между нодами PVE с разделами ZFS
Требования
Требования для миграции все те же, что и для репликации: Proxmox. Репликация виртуальных машин и контейнеров
- Репликация работает ТОЛЬКО на разделах ZFS (используя технологию клонирования ZFS разделов)
- На обоих хостах в кластере должен быть раздел ZFS с одинаковым именем (объем НЕобязательно должен быть одинаковым)
- При миграции ВМ и КТ на разделе ZFS хоста, на который мигрируем, создаются новые Датасеты-ZFS-клоны для каждой ВМ или КТ, то есть, по сути, миграция ВМ - это Датасет-клон-ZFS на хосте, на который мигрируем, на старом датасет удаляется
Миграция контейнера
Миграция КОНТЕЙНЕРА 100 (при условии что настроена репликация КОНТЕЙНЕРА 100 с pve1 на pve2) проходит довольно быстро (что неудивительно, ведь реплика образа ВД уже имеется на pve2)
КОНТЕЙНЕР 100 исчезнет на pve1 и появится на pve2
При этом в настройках репликации КОНТЕЙНЕРА 100 мы увидим что Target поменялся с pve2 на pve1
То есть после миграции КОНТЕЙНЕРА 100 с pve1 на pve2, он начал реплицироваться обратно на pve1
Если мы проведем обратные действия и мигрируем КОНТЕЙНЕР 100 на pve1, то он снова автоматически начнет реплицироваться на pve2
Миграция ВМ
HINTS
- При миграции, по сути, удаляется датасет-zfs, содержащий образ ВД, с одного хоста и создается на втором, а также переносится файл настройки (
mv /etc/pve/nodes/pve1/qemu-server/100.conf /etc/pve/nodes/pve2/qemu-server/или обратно) - МИГРАЦИЯ ПРИ НАЛИЧИИ СНЭПШОТОВ НЕВОЗМОЖНА. Необходимо удалить все снэпшоты
- МИГРАЦИЯ ПРИ НАСТРОЕННОЙ РЕПЛИКАЦИИ НЕВОЗМОЖНА. Необходимо удалить репликацию, затем запустить миграцию, а затем снова создать репликацию, если необходимо
- По сути, мигрировать при настроенной репликации можно командой:
mv /etc/pve/nodes/pve1/qemu-server/100.conf /etc/pve/nodes/pve2/qemu-server/ - При этом мы теряем новые данные с момента последней синхронизации через репликацию
ОШИБКА "proxmox can't migrate vm with local cd/dvd"
Образ cd/dvd, прикрепленный к ВМ, лежит на хранилище, в свойствах которого не стояла галка "Shared",
ошибка возникала даже после того как образ и даже сам cd-rom от машины я отключил
РЕШЕНИЕ
В свойствах хранилища, на котором лежит образ cd/dvd, подключенный к машине, включить галку "Shared"
Миграция ВМ между нодами PVE с разделами iSCSI или RBD
Собираем кластер из 2-х нод PVE: Proxmox. Кластер
Подключаем к любой ноде блочное устройство (например, RDB из системы CEPH). После подключения блочное устройство автоматически появится как локальное хранилище на всех нодах кластера: Proxmox. Mount Ceph RBD image
Проверяем статус кластера
pvecm status
Expected votes: - для успешной миграции этот параметр должен быть 2 (устанавливается по-умолчанию при создании кластера из 2-х нод), если нет - вводим в консоли (обе ноды должны быть онлайн):
pvecm expected 2
... Cluster information ------------------- Name: pve-cluster Config Version: 4 Transport: knet Secure auth: on Quorum information ------------------ Date: Tue Mar 28 21:24:44 2023 Quorum provider: corosync_votequorum Nodes: 2 Node ID: 0x00000002 Ring ID: 1.5c Quorate: Yes Votequorum information ---------------------- Expected votes: 2 Highest expected: 2 Total votes: 2 Quorum: 2 Flags: Quorate Membership information ---------------------- Nodeid Votes Name 0x00000001 1 192.168.199.180 0x00000002 1 192.168.199.188 (local) ...
Вариант 1. Обе ноды PVE онлайн
ПКМ на ВМ - Migrate - target: pve02
Произойдет живая миграция. ВМ не выключится. ВМ исчезнет на pve01 и через несколько секунд появится на pve02, так как виртуальный ЖД, подключенный к ВМ, остался все на том же сетевом SAN хранилище, по сути мигрирует только настройка ВМ и опертивная память.
Вариант 2. Нода pve01 офлайн
В данном случае миграцию через веб-интерфейс выполнить не получится
Необходимо ввести следующую команду на оставшейся онлайн ноде pve02:
pvecm expected 1
Теперь в консоли pve02 просто переносим конфиг машины в директорию pve02:
mv /etc/pve/nodes/pve01-test/qemu-server/100.conf /etc/pve/nodes/pve02-test/qemu-server/
ВМ появится в веб-интерфейсе pve02.
Когда pve01 вернется онлайн - вводим в консоли:
pvecm expected 2
Теперь снова можно делать живую миграцию обратно на pve01.