XenServer 开启 嵌套虚拟化(二次虚拟化)

XenServer代码

在Xen的虚拟机中运行另外一个虚拟机,说白了,就是Xen的嵌套虚拟化技术。

在XenServer中一行代码搞定:

xe vm-param-set uuid= platform:exp-nested-hvm=true

原理分析

其实在当前最新的Xen的版本中,这个功能是默认就开启的,具体的参看:https://wiki.xenproject.org/wiki/Nested_Virtualization_in_Xen

  1. 在一般的嵌套虚拟化中,整个架构是这样子的:
  2. 其中,L1是第一层虚拟机,在这个虚拟机中会再运行一个hypervisor,里面运行嵌套的那个虚拟机,被称为L2层。由于我们在L1和L2层运行的都是Xen hypervisor,所以整个架构看起来是这样子的:
  3. 当然,在这种情况下,还可以分成4个子情况:
    L1运行PV Xen,L2运行PV Xen
    L1运行PV Xen,L2运行HVM Xen
    L1运行HVM Xen,L2运行PV Xen
    L1运行HVM Xen,L2运行HVM Xen
  4. L1运行HVM Xen,L2运行PV Xen

    按照之前“全虚拟化启动虚拟机”的步骤做下来,在启动虚拟机的时候加两个选项hap=1和nestedhvm=1:
    
    kernel = "hvmloader"
    builder="hvm"
    
    name = "l1-guest"
    
    memory = 1024
    vcpus = 2
    
    disk = [ 'file:/path/to/vm.img,xvda,rw' ]
    
    # boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d) 
    boot="cd"
    
    hap=1
    nestedhvm=1
    

     

THE END