www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

如何在 KVM 虚拟机上运行 KVM

 

    上次讨论了如何在 VMware ESXi 虚拟机上运行 KVM 问题,前不久有读者想 “在 kvm 上面创建个虚拟机安装 rackspace 的 openstack” 问到 “如何开启虚拟机上的 CPU VT 功能以便在 KVM 上运行 KVM”,又是一个嵌套应用虚拟机的问题:在 KVM 虚拟机上运行 KVM 虚拟机。以下步骤在 Ubuntu Server 12.04 LTS 64 bit 上测试通过。

    首先检查 KVM host(母机)上是否打开了嵌套虚拟机功能(默认是开启的):

 

# modinfo kvm_intel | grep nested parm: nested:bool # cat /sys/module/kvm_intel/parameters/nested Y 

 

如果上面的显示结果不是 Y 的话需要开启 nested:

 

# modprobe -r kvm-intel # modprobe kvm-intel nested=1 # cat /sys/module/kvm_intel/parameters/nested Y 

 

然后在 KVM guest(虚拟机)的 xml 配置文件中加入 vmx 选项,并启动虚拟机(这里用的是 Ubuntu 官方发布的 Ubuntu KVM 镜像 ubuntu-12.04-server-cloudimg-amd64-disk1.img):

 

# vi nestedvm.xml ... <cpu match='exact'/> <model>core2duo</model/> <feature policy='require' name='vmx'//> </cpu/> ... # virsh create nestedvm.xml 

 

启动虚拟机后登陆并安装 KVM,执行 kvm-ok 和 modinfo 均出现错误:

 

# apt-get install ubuntu-virt-server # kvm-ok INFO: /dev/kvm does not exist HINT: sudo modprobe kvm_intel INFO: Your CPU supports KVM extensions KVM acceleration can be used # modinfo kvm_intel ERROR: modinfo: could not find module kvm_intel 

 

这是因为我们使用的是 ubuntu-12.04-server-cloudimg-amd64-disk1.img 这个官方虚拟机镜像,这个镜像使用的是 linux 3.2.0-23-virtual 内核,缺少 KVM 模块(kvm-intel.ko),所以我们需要改为 generic 内核:

 

# uname -a Linux test 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux # apt-get install linux-generic 

 

重启后进入虚拟机执行 kvm-ok 和 modinfo 均成功:

 

# kvm-ok INFO: /dev/kvm exists KVM acceleration can be used # modinfo kvm_intel filename: /lib/modules/3.2.0-30-generic/kernel/arch/x86/kvm/kvm-intel.ko license: GPL author: Qumranet srcversion: 3BAF54F96ECD4B02292CAA0 depends: kvm intree: Y vermagic: 3.2.0-30-generic SMP mod_unload modversions parm: vpid:bool parm: flexpriority:bool parm: ept:bool parm: unrestricted_guest:bool parm: emulate_invalid_guest_state:bool parm: vmm_exclusive:bool parm: yield_on_hlt:bool parm: fasteoi:bool parm: nested:bool parm: ple_gap:int parm: ple_window:int 

 

现在应该可以在这个虚拟机上创建另一个虚拟机了

 

 

posted on 2014-12-09 21:55  秦瑞It行程实录  阅读(448)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui