18.开启PVE 宿主机的nested虚拟化
最近在使用Proxmox VE 平台为服务器提供虚拟化能力,顺便把EVE-NG 迁移到该平台,然后发现需要额外做一点工作来将CPU 的虚拟化功能expose 到Guest OS。以下是找到的相关资料和我在服务器上的操作记录整合。
检查宿主机CPU 是否支持虚拟化
检查PVE 宿主机是否开启嵌套虚拟化
root@proxmox:~# cat /sys/module/kvm_intel/parameters/nested |
显示N
即尚未开启。进行如下操作开启嵌套虚拟化。
对于Intel CPU 来说(自行查看CPU 是否支持)
echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf |
对于AMD CPU来说(自行查看CPU 是否支持)
echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf |
针对自己的硬件平台执行完上述操作后,重启或重载内核模块。
# 重载内核模块 |
推荐重启,省事。
这时候再次检查,应该显示Y
代表已开启。
root@proxmox:~# cat /sys/module/kvm_intel/parameters/nested |
Note: 注意什么时候用的是下划线******,什么时候用的是短横线********。**
开启EVE 的虚拟化
首先在PVE 的控制台或直接SSH 登陆主机,使用命令查看虚拟机。
# 注意110 是虚拟机主机ID,在网页中可直接看到 |
拷贝得到的输出到编辑器中,找到其中-cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep
在其后添加+vmx
,即:
/usr/bin/kvm \ |
复制所得,然后在PVE 的CLI 界面使用该命令,启动VM 110 (EVE-NG)。
使用qm list
查看虚拟机状态,
oot@pve:~# qm list |
显示虚拟机已经启动。
这是登陆到虚拟机的CLI 界面,使用egrep "vmx|svm" /proc/cpuinfo flags
,查看是否成功在虚机中启动虚拟化。
root§eve-ng:ß# egrep "vmx|svm" --color=always /proc/cpuinfo |
将VMX参数添加为默认启动项
在PVE 的host 机中,编辑需要启动vmx
的主机的配置文件。文件存放于/etc/pve/qemu-server
下。
修改对应vm-id 的配置文件,在这里需要修改的文件是110.conf
在第一行添加args: -cpu 'kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep,+vmx'
(注意该命令请通过qm showcmd 110 —pretty
命令,找到CPU 选项的一行,手动添加+vmx
),保存。通过网页启动110 虚机时无需再通过命令行手动添加vmx
启动选项启动guest virtualization nest。