On 2019/6/14 14:35, Peng Tao wrote:
By removing the share ram check, qemu is able to migrate to private destination ram when x-ignore-shared capability is on. Then we can create multiple destination VMs based on the same source VM.
This changes the x-ignore-shared migration capability to work similar to Lai's original bypass-shared-memory work(https://lists.gnu.org/archive/html/qemu-devel/2018-04/msg00003.html) which enables kata containers (https://katacontainers.io) to implement the VM templating feature.
An example usage in kata containers(https://katacontainers.io):
- Start the source VM: qemu-system-x86 -m 2G \ -object memory-backend-file,id=mem0,size=2G,share=on,mem-path=/tmpfs/template-memory \ -numa node,memdev=mem0
- Stop the template VM, set migration x-ignore-shared capability, migrate "exec:cat>/tmpfs/state", quit it
- Start target VM: qemu-system-x86 -m 2G \ -object memory-backend-file,id=mem0,size=2G,share=off,mem-path=/tmpfs/template-memory \ -numa node,memdev=mem0 \ -incoming defer
- connect to target VM qmp, set migration x-ignore-shared capability,
migrate_incoming "exec:cat /tmpfs/state" 5. create more target VMs repeating 3 and 4
FYI, corresponding kata pull request is posted at https://github.com/kata-containers/runtime/pull/1799
Cheers, Tao