Testing Migration on KVM/ARM

So far migration support has only been completed for KVM ARMv7-A.

Work is planned for KVM ARMv8-A migration support. For details, see: https://cards.linaro.org/browse/CARD-419.


We have not yet done exhaustive testing of migration scenarios, but have simply verified that the basic suspend/resume operation of a VM works.

Basic configuration of QEMU, host kernel, and guest system is not covered on this page. Instead we refer you to https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm or Peter Maydell's KVM how-to guide: https://wiki.linaro.org/PeterMaydell/KVM/HowTo.

Basic Suspend Resume Testing

Launch your guest using a command akin to this:

  # ./qemu-system-arm \
  -m 512 -M vexpress-a15 -cpu cortex-a15 \
  -smp 2 \
  -dtb /root/vexpress-v2p-ca15-tc1.dtb \
  -kernel zImage \
  -sd ubuntu.img \
  -net nic -net tap,vlan=0,ifname=tap0,downscript=no \
  -nographic \
  -append "console=ttyAMA0 mem=512M debug root=/dev/mmcblk0 rw"

Drop into the monitor using <ctrl-a>, <c> (or use some other method for connecting to the QEMU monitor externally), and enter the following command:

 (qemu) migrate "exec:cat > vm.state"
 (qemu) quit

You will now have a file containing your VM state called vm.state in your working directory.

To resume from this state, run QEMU again, but add this to your command line:

-S -incoming "exec:cat ubuntu.state"

This should drop you into the monitor in a stopped state (the "-S" option), and you can resume your VM by entering:


on the QEMU console, followed by pressing <ctrl-a>, <c> and your VM should resume where you left off.

LEG/Engineering/Virtualization/KVM_Migration_testing (last modified 2014-02-18 01:54:35)