验证CPU内核是否支持虚拟化

验证内核支持KVM虚拟化方法

X86_64架构的环境验证方法

在x86_64架构环境中,或者Intel的硬件,
(1)我们检测是否支持KVM的方式:

#系统内核版本
[root@xaxadplmq01 ~]# uname -a
Linux xaxadplmq01 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

#查看cpu是否支持虚拟化、值大于0表示支持
[root@xaxadplmq01 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
128
#查看是否加载kvm模块
[root@xaxadplmq01 ~]# lsmod | grep kvm
kvm_amd               106496  76
ccp                   102400  1 kvm_amd
kvm                   753664  1 kvm_amd
irqbypass              16384  17 kvm

如果检测到没有,也可能是还未加载,此时,可以使用modprobe kvmmodprobe kvm_intel加载内核模块,当然如果是amd的那么相对应的应该是modprobe kvm_amd
(2)当然除此之外还可以用另一种方法也可以验证是否支持:

#系统内核版本
[root@xaxadplmq01 ~]# uname -a
Linux xaxadplmq01 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

[root@xaxadplmq01 ~]# ls -l /dev/kvm 
crw-rw---- 1 root kvm 10, 232 Mar 13 06:17 /dev/kvm
[root@xaxadplmq01 ~]# ls /sys/module/kvm
coresize  holders  initsize  initstate  notes  parameters  refcnt  sections  srcversion  taint  uevent

如果/dev/kvm/sys/module/kvm二者之一不存在说明KVM虚拟化是不支持的。

aarch64(arm64)架构的环境验证方法

由于该架构的特殊性,若支持KVM虚拟化,那么KVM代码会直接编译进内核,就不能以x86_64那种利用lsmod kvm |grep kvm查看是否有内核模块。只能采用第二种方式:

如果/dev/kvm和/sys/module/kvm二者之一不存在说明KVM虚拟化是不支持的。

#系统内核版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux

[root@localhost ~]# ls -l /dev/kvm 
crw-rw-rw- 1 root kvm 10, 232 Mar 10 17:04 /dev/kvm
[root@localhost ~]# ls -l /sys/module/kvm/
total 0
drwxr-xr-x 2 root root     0 Mar 13 14:54 parameters
--w------- 1 root root 65536 Mar 13 14:54 uevent