// Poradnik techniczny // HA · Migracja Aktualizacja:

Migracja na żywo w Proxmox VE
(odpowiednik vMotion)

vMotion w vSphere to live migration maszyny między hostami. W Proxmox VE to qm migrate z flagą --online. Na współdzielonym storage kopiuje się pamięć; na ZFS/LVM lokalnym dochodzi --with-local-disks. To nie jest HA — HA restartuje gościa po fencingu, live migration przenosi działającą VM.

// 01 · Słownik

vMotion vs qm migrate

W panelu PVE: VM → Migrate → „Online”. Z CLI:

qm migrate <vmid> <target> --online

Flaga --online jest ignorowana, gdy VM stoi. Domyślny zakres vmid w man qm to 100–999999999. To nie jest produkt „vMotion” — to live migration QEMU/KVM, którą vSphere opakowuje inną marką.

W GUI widać pasek iteracji pamięci: QEMU kopiuje brudne strony, aż delta zmieści się w oknie przełączenia. Im więcej zapisu w gościu, tym dłużej trwa „ostatnia” iteracja. Dlatego sieć migracji i limit --bwlimit są częścią projektu, nie ozdobą CLI. Maszyna z ogromnym cache bazy na lokalnym ZFS bez shared storage będzie wędrować minutami — to nie awaria, to kopia wolumenu.

// 02 · Dyski

Shared storage i dyski lokalne

Podręcznik pvesm: na storage współdzielonym (NFS, RBD, iSCSI) węzły widzą ten sam obraz, więc live migration jest szybka — bez kopii dysku. Na ZFS/LVM-thin lokalnym włączasz --with-local-disks (live storage migration). --targetstorage mapuje źródło na cel; wartość 1 mapuje każdy storage na siebie.

--force pozwala migrować VM z urządzeniami lokalnymi (np. passthrough). Tylko root. Bez tego zadanie się wyłoży na local device.

⚠️

Uwaga: live migration dysku kopiuje wolumen przez sieć klastra. Na dużym ZFS to minuty, nie sekundy. HA na samym local-ZFS bez replikacji nie magicznie „przenosi” dysku po padzie węzła — dysk zostaje na martwym hoście.

// 03 · Sieć

Sieć, szyfrowanie, limity

  • --migration_network — CIDR sieci używanej do migracji.
  • --migration_type — domyślnie ruch idzie tunelem SSH (szyfrowany). Na całkowicie prywatnej sieci można wyłączyć dla wydajności.
  • --bwlimit — limit KiB/s; domyślnie z datacenter albo storage.
  • --with-conntrack-state — czy migrować wpisy conntrack (domyślnie 0).

Sieć migracji oddzielamy od Corosync i od Ceph. Zatkanie linku klastra live migration’em to klasyczny sposób na utratę kworum w trakcie „niewinnego” vMotion.

// 04 · CPU

Typ CPU i kompatybilność

Live migration wymaga, by cel umiał wykonać ten sam model vCPU. Typ host przykleja flagi fizycznego CPU — między różnymi generacjami Intel/AMD migracja pada. Bezpieczniejszy wspólny mianownik: x86-64-v2 / x86-64-v3 albo jawny model QEMU. Szczegóły: Wybór typu CPU w Proxmox.

// 05 · Granice

Kontenery, HA i load balancer

Działającego LXC nie zmigrujesz na żywo — PVE robi migrację z restartem. HA klastra to inny mechanizm: po fencingu gość startuje na innym węźle (wymaga kworum i dostępnego dysku). Dynamic Load Balancer w PVE 9.2 sam odpala live migration, by wyrównać CPU/RAM — z poszanowaniem affinity. To odpowiednik DRS, nie vMotion w izolacji.

Odpowiednik Storage vMotion to właśnie --with-local-disks / zmiana --targetstorage przy włączonej VM. Odpowiednik vMotion sieciowego (zmiana portgroup w locie) to zmiana mostka/VLAN w konfiguracji — nie zawsze bez krótkiej utraty linku; nie obiecujemy „zero” tam, gdzie QEMU musi przepiąć NIC.

// 06 · Blokady

Co psuje migrację na żywo

  • Passthrough PCI/USB i lokalne urządzenia bez --force (tylko root) — zadanie pada na local device.
  • Typ CPU host między różnymi generacjami Intel/AMD — cel nie umie wykonać tych samych flag.
  • LXC: brak live migrate; PVE robi migrację z restartem. To nie jest vMotion kontenera.
  • Shared storage + wspólny mianownik CPU (x86-64-v2 / x86-64-v3) + osobny CIDR migracji — to jest ścieżka, którą projektujemy jako domyślną.

Dynamic Load Balancer w PVE 9.2 sam odpala live migration z poszanowaniem affinity — to odpowiednik DRS, nie osobny produkt. HA nadal jest innym mechanizmem (restart po fencingu). Kworum: klaster i quorum.

// 07 · Datacenter

Datacenter: sieć i typ migracji

Man qm: --migration_type domyślnie idzie tunelem SSH (szyfrowany). Na całkowicie prywatnej sieci da się przełączyć dla wydajności — to decyzja ryzyka, nie „zawsze wyłączamy”. --bwlimit w KiB/s bierze domyślną wartość z datacenter albo storage. --with-conntrack-state domyślnie 0. --targetstorage 1 mapuje każdy storage na siebie.

// 08 · Projekt

Offline, HA i kolejność w projekcie

Migracja offline (VM wyłączona) kopiuje dysk bez iteracji pamięci — to zwykły transfer wolumenu. --online jest wtedy ignorowane (man qm). HA to nadal inny mechanizm: po fencingu gość startuje na innym węźle, jeśli kworum jest i dysk tam widać. Live migration nie zastępuje HA, HA nie zastępuje live migration.

W projekcie kolejność jest stała: najpierw wspólny mianownik CPU i osobny CIDR migracji, potem shared storage albo świadoma kopia lokalnych dysków, na końcu Dynamic Load Balancer. Affinity i tryb konserwacji HA są w osobnych artykułach — nie mieszamy ich z paskiem vMotion w GUI.

ℹ️

Passthrough PCI/USB zostaje na źródle. --force (tylko root) omija blokadę local device — nie przenosi karty PCIe na cel. To jest świadome „zostaw urządzenie”, nie magiczny vfio migrate.

Zaprojektujemy sieć migracji i CPU

Shared vs local, typ CPU, osobny CIDR na live migration — żeby vMotion na PVE nie rozwalał Corosync.

⚡ Bezpłatna konsultacja → Klaster i quorum