post-copy based live migration
This is yet another live migration mechanism for QEMU/KVM, which implements the migration technique known as "postcopy" or "lazy" migration. Just after the "migrate" command is invoked, the execution host of a VM is instantaneously switched to a destination host.
An alternative implementation has been merged in QEMU 2.5: Features/PostCopyLiveMigration
The migration procedure looks like
- start migration: stop the guest VM on the source and send the machine states except guest RAM to the destination
- resume the guest VM on the destination without guest RAM contents
- Hook guest access to pages, and pull page contents from the source. This continues until all the pages are pulled to the destination
- character device driver
qemu mmap() the dedicated character device, and then hook page fault. Next it send the page fault request to the user space daemon and when the daemon responds the page request with page contents, the page fault is resolved and VM execution is resumed.
- daemon on destination side
an independent daemon vs a thread in qemu. It waits page request from the character device. When receiving the requests, it pull the page contents from the migration source, then responds the requests.
The existing protocol that exists today will be extended.
- character deriver to hook guest ram access
- daemon to handle page request
- modification to qemu on source side
- fix THP: They check if vma operations is anonymous, not if the page is anonymous.
- 2014-06-27 Dave Gilbert working with Andrea Arcangeli on a version; different kernel approach without the character device; status working and just cleaning up for posting
- another connection for background page transfer in order to reduce latency
- mixing precopy/postcopy
- avoid memory copy
- hint not to send page
- not to pull page when writing/clearing whole page
- cooperate with Kemari
- Enabling Instantaneous Relocation of Virtual Machines with a Lightweight VMM Extension
- presentation slide