Linux系统内核不支持虚拟化,Linux如何检测CPU是否支持KVM的Intel VT/AMD-V虚拟化

本分分享了如何检测自己的电脑是否支持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

示例输出:

Linux系统内核不支持虚拟化,Linux如何检测CPU是否支持KVM的Intel VT/AMD-V虚拟化_第1张图片

如果输出具有vmx标志,则Intel CPU主机能够运行硬件虚拟化。

在Linux上验证AMD V CPU虚拟化扩展

以超级用户身份键入以下命令,以验证主机cpu是否支持AMD – V技术:

# grep --color svm /proc/cpuinfo

Linux系统内核不支持虚拟化,Linux如何检测CPU是否支持KVM的Intel VT/AMD-V虚拟化_第2张图片

同样,输出具有svm标志,然后AND CPU主机能够运行硬件虚拟化。

验证Intel或AMD 64位CPU

getconf LONG_BIT

输出"64”

lscpu命令

该命令可以查看CPU的具体信息:

Linux系统内核不支持虚拟化,Linux如何检测CPU是否支持KVM的Intel VT/AMD-V虚拟化_第3张图片

把全部命令放在一起查看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'

Linux系统内核不支持虚拟化,Linux如何检测CPU是否支持KVM的Intel VT/AMD-V虚拟化_第4张图片

其他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。

你可能感兴趣的:(Linux系统内核不支持虚拟化)