I  was  simulating a XenServer pool today. To do so, I started several
 QEMU VMs, each of which ran a XenServer  host.  By  bridging  all  the
 network  interfaces, I created a "virtual network" just for the VMs. I
 added another regular Ubuntu VM which acted as an NFS storage  server.
 Finally, all the individual XenServers could form a pool. Even Citrix'
 HA feature was working.

 This was a very interesting and insightful task.

 As I used overqemu[1], I only had to  install  XenServer  once.  After
 that,  I simply spawned multiple overqemu instances with the same base
 image. This led to an interesting situation, because  those  instances
 could  not  form  a XenServer pool -- they all had the same host UUID.
 Resolving this was rather easy but still interesting.

 Now, of  course,  all  this  involves  nested  virtualization.  To  my
 surprise, this worked pretty well and fast. But performance wasn't the
 issue anyway. The point  of  this  experiment  was  to  find  out  how
 XenServer  responds  to  different  kinds of host failures and storage
 failures. This is why I used VMs in the first place --  it's  easy  to
 add new ones or rearrange them.

 ____________________

 1. https://github.com/vain/bin-pub/blob/master/overqemu