Skip to content

Cold Migration

A cold migration moves a stopped guest between hypervisors. It is the fallback when live migration is not possible or not required.

When to use it

  • The target does not advertise live_migration and LIVE_REQUIRED is not set.
  • The guest has host-bound resources (host-passthrough CPU, GPU/PCI passthrough, strict NUMA/hugepage requirements) that block a live move.
  • A maintenance window allows a short outage.

Behaviour

  • The source stays authoritative until the commit; nothing is released or destroyed early.
  • The same lifecycle, lease and recovery rules apply as for live migration (see Migration).
  • Failures before the point of no return roll back; failures at or after it surface as RECOVERY_REQUIRED.

Run it

php artisan pterocloud:migration:start <instance_uuid> --target=<hv_uuid> --mode=COLD

Preflight first (read-only):

php artisan pterocloud:migration:preflight <instance_uuid> --target=<hv_uuid> --mode=COLD --json

Honesty

Disk transfer and route moves are not tested on physical hardware in this build. Treat cold migration as orchestration-complete but hardware-unproven.