如何在 CentOS 6 上设置嵌套式虚拟
1. 引言
在某些情况下,你或许会想先测试或确认一套虚拟化设置,然后才把它推行在实物上。这时候的话,最理想的做法就是把你的监督器主机设置成虚拟机器,然后在当中运行虚拟机器。这个在拟拟机器内运行虚拟机器的做法名为嵌套式虚拟。
嵌套式虚拟是一个可通过内核参数来启用的功能。很可惜,现有的 CentOS 内核暂时并未支持此参数。
2. 开始之先
你可以通过检查 /sys/module/kvm_intel/parameters/nested 这个文件来确定你的系统是否支持 nested 这个参数。
在一台缺省的 CentOS 6 系统上此文件并不存在。有幸地,我们拥有 xen-c6 计划(http://dev.centos.org/centos/6/xen-c6/ ),它提供了一个支持 nested 参数的内核!
3. 第 1 步:把 xen-c6 软件库加进你的系统
- su -
- cd /etc/yum.repos.d
- yum repolist
- [选择性] vi xen-c6.repo :修改为 enabled=0 令软件库不会被缺省成启用的
4. 第 2 步:安装新的内核
- su -
- yum --enablerepo xen-c6 install kernel kernel-firmware
- vi /boot/grub/grub.conf :在 kernel 那一行的末端加上 kvm-intel.nested=1
- 重新开机
- 确定能正常运作:cat /sys/module/kvm_intel/parameters/nested 会输出 Y
5. 第 3 步:设置监督器的虚拟机器
若要设置生效,我们的虚拟机器内的虚拟处理器必须拥有 vmx 这个标志。
我会在这篇教学文档内采用 virt-manager。当然,你可以利用 XML 档及 virsh 来取得同一效果。
- virt-manager
打开监督器虚拟机器,进到 Details(内容)> Processor(处理器)
- 展开 Configuration(设置)
- 按 Copy host CPU configuration(复制主机处理器设置)按钮
- 展开 CPU Features(处理器功能)
- 确保 vmx 功能已设置为 require(必须的)
- 按 Apply(应用)
引导监督器虚拟机器,然后你会发现 libvirtd 正在虚拟机器内运行!
(来源: http://technotes.nocoffee.nl )
Translation of revision 2