[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] xen+drbd (partial?) success story
We are trying to migrate a domain from a xen box to another transparently, using drbd to ensure the smallest "freezetime" possible. The method described here allows to do that ; the affected domain will be suspended 3 times (a few seconds each time), and doesn't have to be destroyed/recreated whatsoever. The following explanations assume you know about xen domain creation, are familiar with "xm save" and "xm restore", and know what is drbd (if you don't know exactly how to use it, refer to its documentation ; all operations described here are "basic" drbd functions). Long story made short : the migrated domain root device is a symlink, which gets changed between a xm save/xm restore bracked, to switch from a plain root device to a drbd. BUT, we get strange kernel messages on dom0 when running drbd-backed domain ... Phase A: some extra steps to take at domain creation1) create a logical volume to host the domain rootfs (for instance, /dev/vg/mydomain) 2) create a symlink to this domain rootfs (for instance, /dev/xenlvs/mydomain -> /dev/vg/mydomain) 3) mkfs the logical volume and populate it with a filesystem4) start the domain (the configuration should use xenlvs/mydomain as block device, NOT vg/mydomain) Phase B: substitute the real root block device with drbd 5) compile drbd module and utils on both xen boxes 6) xm save mydomain (this suspends the domain, saving its state)7) setup a drbd pseudo-disk on the source box, using the domain logical volume as data disk (and some external temporary storage as meta-data disk) ; let's assume the drbd will be /dev/drbd0 ; and switch this drbd to "primary" operation (=source for synchronization in drbd terms) 8) change the symlink /dev/xenlvs/mydomain so it points to /dev/drbd0 9) xm restore mydomain (this will resume operation on the domain)Steps 7 and 8 are very short, so this first save/restore should not be noticable. Phase C: synchronize drbd state10) on the target xen box, create the target logical volume (/dev/vg/mydomaintoo for instance) - it should obviously have the same size as the source logical volume 11) associate it with a drbd device and setup a symlink with the SAME NAME as on the source box - e.g. /dev/xenlvs/mydomain -> /dev/vg/mydomaintoo 12) synchronize both drbd devices ; wait for synchronization to complete (this can take some time, but the domain stills run on the source box unaffected meanwhile) Phase D: actual migration 13) when synchronization is complete, "xm save" the domain on the source box14) transfer the saved image (size is dependent of xen domain memory size) to the target box 15) tear down drbd on the target box 16) "xm restore" the saved image on the target boxtransfer speed is limited by your network or disks ; drbd detach is very quick (a few seconds again) ; so those steps won't freeze your domain for a long time ! Phase E: cleanup17) you can tear down the drbd on the source box (as well as the now unused logical volume) This works well, *but* when operating a xen domain over drbd, we see a lot of "suspicious" messages in xen0 domain (see attached log). Those messages *seem* harmless, but they certainly indicate something is going wrong under the hood. If someone is familiar with xen and drbd internals and has a clue about what they mean, I will be very happy to learn from them ... All tests were made with xen-testing (as of apr, 27 bk source), compiled with gcc 3.3.4 (from Debian), on a Dual Xeon system (running "pure 32 bits" kernel). _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |