2 Replies to “Live Migrating QEMU-KVM Virtual Machines: Full Text”

  1. Thank You Amit for this wonderful description. I got interested and checked out 2.6 version and started understanding the codebase. I have couple of basic questions if you dont mind.
    You mentioned that dirty ram pages are sent from source to destn and this process involves communicating to src kernel by issuing ioctl (KVM_GET_DIRTY_LOG )
    My question is once the dirty ram pages are received on destination side, then how those dirty pages are applied to the kernel of guest vm, because I did not find the any such ioctl.

    Here is the browsed codebase followed wrt incoming_migration
    migration_fd_process_incoming()
    process_incoming_migration_co()
    qemu_loadvm_state()
    vmstate_load_state()

    1. Hi,

      Glad you liked the article.

      On the destination side, nothing is required to be done on the kernel – the src sends the guest’s pages to the destination along with the address map. The destination then just fills in those pages in its memory. The guest kernel doesn’t even know about the migration, and when it is started on the destination, it just feels to it as if there was some pause, but everything else remains the same for the guest.

Leave a Reply

Your email address will not be published. Required fields are marked *

*