KVM嵌套虚拟化 -- 在虚拟机中创建虚拟机

嵌套虚拟化

一般情况下,我们是无法在KVM虚拟机里面再去创建虚拟机的,因为我们的KVM虚拟机的CPU默认情况下并不支持虚拟化功能,对于Inter的CPU来说,如果要支持虚拟化功能,必须要有一个叫vmx的特性,以下是一个物理服务器的CPU信息:

这里写图片描述
在CPU特性(flags)中包含了vmx这个特性,说明这台服务器是支持虚拟化功能的,也就是说我们可以在这台服务器上创建虚拟机。我们再看看以这台服务器作为宿主机,创建的虚拟机的CPU特性:
这里写图片描述
我们可以看到虚拟机的CPU特性(flags)相比起宿主机来说要少很多,并且没有vmx这个特性,所以我们是无法在这台虚拟机上创建虚拟机的。
那么,我们如何让创建出来的虚拟机的CPU也带有vmx特性呢?这就要用到所谓的嵌套虚拟化的功能了。当宿主机开启嵌套虚拟化功能时,我们在该宿主机上创建的虚拟机的CPU也可以获得vmx特性,从而可以在该虚拟机中再去创建虚拟机:
KVM嵌套虚拟化 -- 在虚拟机中创建虚拟机_第1张图片

检查宿主机机是否开启了嵌套虚拟化功能:
这里写图片描述
cat /sys/module/kvm_intel/parameters/nested结果为Y时表示宿主机支持嵌套虚拟化,为N为不支持。如何开启宿主机的嵌套虚拟化功能可参考这篇文章:http://www.cnblogs.com/jython/p/4458807.html

创建支持虚拟化功能的虚拟机

当我们有了支持KVM嵌套虚拟化的宿主机后,便可以创建支持虚拟化功能的虚拟机了。我们使用libvirt来创建虚拟机,虚拟机的配置文件可以参考下面的vm01.xml文件:


    vm01
    2096576
    2
    
        hvm
        
    
    
        
        
        
    
     
        
        
    
    
    destroy
    restart
    destroy
    
        /usr/libexec/qemu-kvm
        
            
            
            
        
        
                   
                   
                
                

使用以下命令创建虚拟机:

virsh define vm01.xml
virsh start vm01

进入虚拟机,查看CPU特性,可以看到此时虚拟机的CPU已经支持vmx特性:
这里写图片描述

我们再参考上面的方式在这个虚拟机中使用libvirt再创建一台虚拟机:
KVM嵌套虚拟化 -- 在虚拟机中创建虚拟机_第2张图片

可以看到虚拟机成功创建出来了。

你可能感兴趣的:(虚拟化)