[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Xen, MirageOS, and Unikernel Migration



On Thu, May 19, 2016 at 04:46:06PM +0100, Vittorio Cozzolino wrote:
> Hi,
> 
> I'm experimenting a bit with VM migration in XEN. Right now I'm trying to
> migrate a MirageOS Unikernel from one server to another without success. The
> image that I'm migrating is a customized version of the simple "hello"
> example that can be found in the mirage-skeleton repo. Both my server
> machines run Ubuntu 14.04 and have Xen 4.6, moreover, migration works for a
> normal VM image (like Alpine Linux).
> 
> Anyway, this is the trace generated by the migrate command:
> 
> Saving to migration stream new xl format (info 0x3/0x0/966)
....
> xc: debug: hypercall buffer: cache hits:21 misses:2 toobig:6
> 
> I suppose the migration fails due to a problem with the shutdown command?
> I'm not an expert of XEN, I just started learning, so any
> remark/comment/suggestion is welcome.
> 

Hi Vittorio,

Migration of PV guests requires some cooperation from the guest. The basic idea 
is 
that the VM actively watches for a request to suspend (migration is built 
around 
suspend-resume), and it then unhooks itself from everything that it knows about 
the 
real hardware it's running on, calls a function that returns only when the VM 
is 
now running on the new hardware, and then reestablishes all the links to the 
real 
machine. MiniOS, the base Xen OS Mirage is using doesn't currently support 
this. 
However, I have a branch with some experimental code to support it on my fork. 
You'll need to pin both minios-xen and mirage-xen to make it work:

    opam pin add -n -y mirage-xen \
    git://github.com/jonludlam/mirage-platform#reenable-suspend-resume2

    opam pin add -n -y minios-xen \
    git://github.com/jonludlam/mini-os#suspend-resume3

Additionally, you'll need to manually watch xenstore so your VM notices the 
request
to suspend. 

We've got a mirage VM that uses all this that we use for testing XenServer - 
it's
available here: https://github.com/xapi-project/xen-test-vm - the code for 
watching
for the suspend trigger is here: 

https://github.com/xapi-project/xen-test-vm/blob/master/src/mirage_vm.ml#L97-L147

I've not tried it with xl directly, but it works for us on XenServer. I'd be 
very
interested to hear if you can get it to work!

Jon



> Best regards,
> Vittorio
> 
> 



> _______________________________________________
> MirageOS-devel mailing list
> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel


_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.