检查是否在 Centos 7 上没有 sudo 的情况下启用了虚拟化?

Check if virtualization is enabled without sudo on Centos 7?

我需要检查是否在 Centos 7 上启用了没有 sudo 的虚拟化。

我找到了检查虚拟化是否启用的命令,但它需要 sudo。

sudo modprobe msr
sudo rdmsr 0x3a

对于 Ubuntu 存在实用程序 cpu-checker,它可以在没有 sudo 的情况下检查是否启用了虚拟化。

kvm-ok

是否存在与 Centos 7 上的 cpu-checker 类似的实用程序?

第一个:

kvm-okrdmsr 0x3a 做完全不同的事情。

kvm-ok,根据它的 man page 只是解析 /proc/cpuinfo 以获得 CPU 标志,这些标志表明 CPU 中的虚拟化技术(然后检查是否加载了必要的模块,而 rdmsr 读取 CPU.

的特殊模型特定寄存器

因此,kvm-ok 不会执行任何您需要 root 权限的操作,而 rdmsr 无法工作,因为您的进程不需要上下文来查询这些寄存器。

rdmsr 0x3a 可以使用一些技巧来确定是否在英特尔酷睿 iX 或更高版本的 XEON 处理器上启用了 VT 技术;对于高性能虚拟化,必要,但不够

因此,我会说继续做 kvm-ok 手动做的事情。

检查第一个 CPU 的 vmxsvm flags:

grep flags /proc/cpuinfo|head -n1|grep -Eo '(vmx|svm)'

并验证 kvm 模型是否已加载:

lsmod | grep '^kvm'

如果您实际上需要查询特定于模型的寄存器(例如,由于某种原因,即使在 UEFI 设置中禁用了 VT,vmx 标志仍然存在),最简单的方法当然是使用 sudo 的功能将程序 rdmsr 指定为 运行 恰好 的用户使用参数 0x3a你的选择(让我们称之为 daemonuser)没有密码(见 man sudoers,或你的 /usr/share/doc/sudo/examples/sudoers):

daemonuser ALL = NOPASSWD: /path/to/rdmsr 0x3a