Hi,

I am a grad. student in Tel-Aviv university, and my theses is focused on
asynchronous mirroring.
I have already built asynchronous mirror software (which is composed of a
driver and a daemon), which works by setting up a virtual block device over
an existing one, and thus mirroring the existing one (asynchronously) to the
network using a window.

What I would like to add to it is the ability to asynchronously mirror a
(QEMU) VM as well, so that if the primary site crashes, the VM can be
restored (to the last stable point) immediately.

Since I want it to be as general as possible, I will not rely on my mirror,
but only on there being a virtual block device that is mirroring me (and
that has consistent writes (that is, if write A succeeded, and afterwards
write B succeeded, then if B is on the secondary site, then A must be there
too)), and that there is some kind of marking mechanism (so that I can mark
the last consistent state).

The reason I want to do this using QEMU is that it has live migration -
which is almost what I need.
Right now my plan is to treat the memory as a file, and put it and all the
vm images on the same mirroring block device.
Then, every minute or so, I will (stop the vm) sync the memory and disks,
and put a mark (where during the minute I will continue to write what I
can).

This sounds to me like doing a continuous "live migration", but never
actually moving the machine, and after finishing the migration on the side
that initiated it, not throwing away the dirty/clean pages (so that the
memory does not have to be moved completely again).

I would appreciate any direction and/or suggestions in this matter.

Also, I wondered where can I find some documentation about the whole
migration process - should I just read the code, or is there any document
about it?

Thanks,
    Tomer

Reply via email to