本分分享了如何检测自己的电脑是否支持KVM虚拟化技术,包括Intel VT虚拟化和AMD-V虚拟化。
英特尔和AMD CPU均支持虚拟化技术,该技术允许使用硬件虚拟化以安全高效的方式在x86服务器或计算机上同时运行多个操作系统。XEN,KVM,Vmware和其他虚拟化软件可以使用Intel和AMD硬件虚拟化进行完全虚拟化。换句话说,使用Intel VT或AMD-V,您可以运行未修改的来宾操作系统,例如MS-Windows,而不会出现任何问题。要运行KVM,您需要一个支持硬件虚拟化的CPU。
查看CPU详细信息 /proc/cpuinfo
cpuinfo文件包含有关CPU的信息。这些信息包括cpu、线程、核心、套接字和非统一内存访问(NUMA)节点的数量。还有关于CPU缓存和缓存共享、家庭、模型、bogoMIPS、字节顺序和步进的信息。您需要记下以下供应商特定的cpu标志:
在检查你的电脑是否支持虚拟化先要记住几个术语:
vmx– Intel VT-x,代表在BIOS中启用了虚拟化支持。
svm– AMD SVM,代表在BIOS中启用了虚拟化。
aes–使用Intel和AMD cpus上的高级加密标准执行加密和解密的应用程序。
检查您的硬件是否支持虚拟化的命令
使用以下命令来验证是否在您的BIOS中启用了硬件虚拟化扩展。
验证Linux上的Intel VT CPU虚拟化扩展
以root用户身份键入以下命令,以验证主机cpu是否支持Intel VT技术,并输入:
# grep --color vmx /proc/cpuinfo
示例输出:
如果输出具有vmx标志,则Intel CPU主机能够运行硬件虚拟化。
在Linux上验证AMD V CPU虚拟化扩展
以超级用户身份键入以下命令,以验证主机cpu是否支持AMD – V技术:
# grep --color svm /proc/cpuinfo
同样,输出具有svm标志,然后AND CPU主机能够运行硬件虚拟化。
验证Intel或AMD 64位CPU
getconf LONG_BIT
输出"64”
lscpu命令
该命令可以查看CPU的具体信息:
把全部命令放在一起查看CPU信息
egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo
## Only show Intel CPU flags ##
egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo | sort | uniq
## OR better use the following ##
egrep -wo 'vmx|lm|aes' /proc/cpuinfo | sort | uniq\
| sed -e 's/aes/Hardware encryption=Yes (&)/g' \
-e 's/lm/64 bit cpu=Yes (&)/g' -e 's/vmx/Intel hardware virtualization=Yes (&)/g'
其他Intel x86 CPU特定的虚拟化标志
ept–启用了英特尔扩展页表支持,可以更快地模拟来宾页表。
vpid–英特尔虚拟处理器ID。在来宾之间进行上下文切换时,无需进行昂贵的TLB刷新。
tpr_shadow和flexpriority-英特尔功能访问任务优先级注册,运行某些类型的SMP客人时,这有助于在降低呼叫到虚拟机管理程序。
vnmi–英特尔虚拟NMI帮助解决来宾中的选定中断事件。
其他AMD x86 CPU特定的虚拟化标志
npt– AMD嵌套页表,类似于Intel EPT。
lbrv– AMD LBR虚拟化支持。
svm_lock– AMD SVM锁定MSR。
nrip_save– AMD SVM next_rip保存。
tsc_scale– AMD TSC缩放支持。
vmcb_clean– AMD VMCB清洁位支持。
flushbyasid– AMD按ASID刷新。
decodeassists– AMD解码助手支持。
pausefilter– AMD过滤的暂停拦截。
pfthreshold– AMD暂停过滤器阈值。
解决您的问题的一些技巧。
提示1:查看Linux内核消息
键入以下命令以查看是否在BIOS中启用了kvm支持:
# dmesg | less
# dmesg | grep -i kvm
提示2:检查您的BIOS设置
默认情况下,许多系统制造商在BIOS中禁用AMD或Intel硬件CPU虚拟化技术。您需要重新引导系统并在BIOS中打开它。启用后,请按照前面所述运行lscpu或grep命令,以查看是否启用了虚拟化支持: 示例输出:
$ lscpu
$ egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo | sort | uniq
$ egrep -o '(vmx|svm)' /proc/cpuinfo | sort | uniq
输出:
svm
提示3:XEN内核
默认情况下,如果您引导到XEN内核,则使用grep命令将不会显示svm或vmx标志。要查看是否已通过xen启用它,请输入:
cat /sys/hypervisor/properties/capabilities
您必须在输出中看到hvm标志。如果不重新启动计算机,请在BIOS中设置Virtualization。