如果要找出 Linux 系统运行在虚拟化平台中还是硬件服务器上,有多种方式可供大家选择,这主要取决于你的 hypervisor 或 container 环境。不同的虚拟化或容器技术会在其实例中引入不同的识别指纹,如:处理器厂商、特殊的 /proc 文件或虚拟网卡名称等。 另外通过 dmesg 显示启动序列,也可以找出 Linux 或 VPS 所使用虚拟化平台类型的一些线索。
下面我们将介绍几个命令行工具,让大家可以非常容易地检测到 Linux 所使用的虚拟化平台类型。
方法一:dmidecode
要检测 Linux 底层的虚拟化类型首选的就是 dmidecode
sudo dmidecode -s system-manufacturer
系统极客网站运行在 Microsoft Azure 平台上,所以检测出来是微软的 Hyper-V。如果你的系统运行在物理服务器上,输入的将是硬件制造商的实际名称(如 Dell Inc.)。如果你的 Linux 是运行在虚拟化平台中,则会显示所使用的虚拟化技术相关名称,如 「Microsoft Corporation」「QEMU」「Xen」「VirtualBox」「VMware, Inc」等等。
注意:该方法不适用于基于容器的虚拟化技术。
方法二:systemd
对于使用 systemd 的 Linux 系统,可以使用 systemd-detect-virt 命令来进行检测,该命令目前可以同时检测到基于 hypervisor 的虚拟化技术(例如 KVM、QEMU、VMware、Xen、Oracle VM、VirtualBox、UML)和基于容器的虚拟化技术(例如 LXC、Docker、OpenVZ)。
systemd-detect-virt
注意:在物理服务器上使用该命令会输出「none」。
方法三:virt-what
我们介绍的最后一种检测 Linux 所使用虚拟化类型的方法是 virt-what
在使用之前,大家需要先通过 apt-get 或 yum
sudo virt-what