如何在 VMware ESXi 虚拟机上运行 KVM

记得以前就有人问过 “能不能在一个虚拟机上运行虚拟机”,答案当然是可以的,Xen HVM, KVM, VMware, Qemu 等 Hypervisor 都可以这样嵌套虚拟,不过由于性能低下实际用处不大。在 VMware ESXi 虚拟机上运行虚拟机,被称为多层虚拟或者嵌套虚拟机(Nested VMs)。如果只有一台电脑想测试多节点 OpenStack 环境的话,使用 VMware ESXi 虚拟几个运行 KVM Hypervisor 的 OpenStack 计算节点是个不错的办法。VMware ESXi 5.0 默认情况下不支持嵌套虚拟,所以在 VMware ESXi 虚拟机里安装完 KVM 以后会发现 KVM 虽然能装但不可用:

# kvm-ok 
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

解决办法很简单:1、修改 VMware ESXi 的设置;2、修改对应虚拟机的设置。

登陆 VMware ESXi 控制台打开 VMware ESXi 5.0 的 SSH 服务(默认 SSH 服务是关闭的),然后用 ssh 登陆 VMware ESXi 后在 config 文件中最后加入 vhv.allow = “TRUE” 一行:

# vi /etc/vmware/config
libdir = "/usr/lib/vmware"
authd.proxy.vim = "vmware-hostd:hostd-vmdb"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
authd.fullpath = "/sbin/authd"
authd.soapServer = "TRUE"
vmauthd.server.alwaysProxy = "TRUE"
vhv.allow = "TRUE"

重启 VMware ESXi 后编辑虚拟机选项(需要先关闭虚拟机),打开 Edit virtual machine settings 对话框,在 options 页面的 General Options 选项里把 Guest Operating System 的类型换成 Other 里面的 VMware ESxi 5.x,如图:

running nested vms on vmware esxi

最后启动虚拟机后再 kvm-ok 一下就可以看到 KVM 可以用了:

# kvm-ok 
INFO: /dev/kvm exists
KVM acceleration can be used

相关阅读:
在 CentOS 上安装和配置 KVM.
在 VMware ESXi 上安装 Minix.
在 VMware ESXi 虚拟机上运行不同的 Hypervisor 可以看看 VMware 的 Running Nested VMs.

评论 (31 Comments)

  1. 免费VMware ESXi对硬件,除了内存32G外,对CPU还有限制吗?或者其他限制?

  2. @imweijh
    限制挺多的,比如免费 VMware ESXi 5.0 上跑的虚拟机最多可以分配 8 CPU cores.

  3. @vpsee 我的意思是,对host机器,比如我有4*8=32core,esxi只能用两个CPU?还是对host没限制,对guest最多8个core ?

  4. @imweijh
    对 host 最多支持 160 CPU cores,对 guest 最多支持 8 VCPUs.

  5. 是不是少了一步呢?
    我记得的情况是
    还要把
    编辑虚拟机设置-选项-CPU/MMU虚拟化-使用Intel VT-X/AMD-V进行指令集虚拟化
    这一项给选择上吧?

  6. @juno
    一般不用,ESXi 会基于 CPU 类型和虚拟机等自动决定 guest 虚拟机是否应该使用硬件虚拟支持。选择 Automatic 就可以了,这个选项在 VMware ESXi 5.0 里是默认的。

    • Automatic
    • Use software for instruction set and MMU virtualization
    • Use Intel VT-x/AMD-v for instruction set virtualization and software for MMU virtualization
    • Use Intel VT-x/AMD-v for instruction set virtualization and Intel EPT/AMD RVI for MMU virtualization
  7. @vpsee,谢谢解答。
    另外一个问题:
    对应xen/kvm,现在还是倾向xen吗?对新手,推荐用哪个?

  8. @imweijh
    推荐新手用 kvm

  9. 嵌套的虚机仍然支持kvm,说明cpu的vt-d特性,可以传递给esx的虚机。kvm只支持硬件虚拟化

  10. @vpsee 你好~如果想用一台电脑测试多个计算节点 OpenStack 环境的话,请问用本文中的方法成功了么?~~能有完整的搭建过程的教程么?~~是在esxi上装Ubuntu,Ubuntu上搭Openstack么?~

  11. @vivimorning
    可以在 esxi 上的 ubuntu 上完整安装 openstack 以及多节点配置。

  12. juno – February 10th, 2012 10:55 am

    是不是少了一步呢?
    我记得的情况是
    还要把
    编辑虚拟机设置-选项-CPU/MMU虚拟化-使用Intel VT-X/AMD-V进行指令集虚拟化
    这一项给选择上吧?

    是的

  13. @vpsee 那请问在vmware workstation 8.0上能运行KVM么?~

  14. @vivimorning
    vmware workstation 可以运行 kvm.

  15. @vpsee
    #kvm-ok
    INFO: Your CPU does not support KVM extensions
    INFO: /dev/kvm does not exist
    HINT: sudo modprobe kvm_
    INFO: For more detailed results, you should run this as root
    HINT: sudo /usr/sbin/kvm-ok
    请问是不是需要修改vmware workstation的配置呢?~~怎么样才能运行KVM呢?~~

  16. 那如何设置VMware Workstation下KVM呢?找到一个Workstation下Hyper-v的
    http://www.veeam.com/blog/nesting-hyper-v-with-vmware-workstation-8-and-esxi-5.html
    还有您这个ESXi下KVM的,但是不会设置VMware Workstation下KVM。。。

  17. VMware Workstation 8.0 下装ubuntu server,ubuntu里装KVM行吗?

  18. @松岩
    VMware Workstation 8.0 可以安装 ubuntu,ubuntu 里可以安装 kvm,但是需要两个条件:
    1、CPU 支持 Intel VT-x/EPT 或者 AMD-V/RVI;
    2、设置 VMware Workstation,设置方法参考 VMware 文档。

  19. @vpsee
    VT-x明白了,换了CPU,通过CPU-Z检测指令集中有VT-x,securable检测到hardware virtualization项locked on(有台机器显示on,应该是支持但没开)。

    大哥有空看一下Workstation配置吧,试过好多次真心不行,http://www.veeam.com/blog/nesting-hyper-v-with-vmware-workstation-8-and-esxi-5.html提供的办法不行,还是grep一下cpuinfo啥都没有,kvm-ok也说不支持(单机上试过ubuntu server自带kvm能跑)。或者至少指点一下该怎么办?麻烦了

  20. 相似的,我对VMware Workstation 8做了如下改动
    1. vhv.allow改为vhv.allow = “TRUE”

    2. Edit virtual machine settings 里把 Guest Operating System 的类型换成 VMware ESxi 里面的 VMware ESxi 5

    结果还是kvm不可运行,cpuinfo一下没有任何flag
    # kvm-ok
    INFO: Your CPU does not support KVM extensions
    KVM acceleration can NOT be used

    —————–

    这怎么办?

  21. 刚找了一个在VMware Workstation里安装红帽,红帽里跑KVM的教程,所以说把红帽换成ubuntu应该可行的,但是不行呢…

    http://blog.srinfotec.com/?p=937

  22. @松岩
    VMware Workstation里安装KVM成功了没?我查了下机器,支持VT,也开了,用CPU-Z检查了下支持指令集VT-x,在VMware Workstation上也勾上了选项:编辑虚拟机设置-选项-CPU/MMU虚拟化-使用Intel VT-X/AMD-V进行指令集虚拟化,但是启动虚拟机后还是不成功。

  23. 请问如何在Xen的虚拟机中运行KVM, 谢谢

  24. @xavier
    xen 虚拟机不能运行 kvm.

  25. 请问 kvm我想装xp 作为guest 开16台 每台运行一些访问网站的小程序 请问这样对磁盘要求是不是要很高才可以

  26. @bobo
    嗯,最好要好一点的硬盘,并采用硬件 raid10.

  27. 请教vpsee:我在VMware ESXi中部署openstack双节点(kvm已配置好),遇到如下问题:在各节点上都可以ping通两个br100,但登陆控制节点实例ping不通计算节点的br100,各实例都可以连外网,各节点的实例间不能互相通信,请问该怎么解决?谢谢!

  28. 安装步骤操作后,虚拟机中已经可以加载kvm模块,但是在使用virt-manager中建立虚拟机,会出现CPU100%,屏幕全黑或有光标不动。
    qemu与libvirt报错
    warning : qemuDomainObjTaint:1128 :
    Domain id=1 name=’XX’ uuid=a02e41a9-9f4d-d94f-43a6-995b1ca6d37d is tainted: high-privileges

  29. ESXi 5.1上面得将“vhv.allow”改成“vhv.enable”才行,然后都不用修改虚拟机的配置就可以了。
    对于桌面版的系统,估计还要跑一下modprobe kvm_intel加载一下kvm模块才能支持。

  30. 博主,我在ESXI5.5上开了一个虚拟机,centos 6.3,在上安装KVM,但按照您这个方法修改ESXI参数,重启了ESXI,还是发现不了SVM支持

  31. 在里面安装系统超级慢~,正常一个windows2003的系统15分中就装好,在esx的kvm里面,安装那要半天!!!

发表评论