dmidecode -s system-product-name
,物理机通常显示硬件型号,虚拟机则显示如 VMware Virtual Platform
等。,2. 使用 systemd-detect-virt
命令,直接返回虚拟化类型(如 kvm
、vmware
)或 none
(物理机)。,3. 运行 lscpu
查看 Hypervisor vendor
字段,存在则为虚拟机。通过系统硬件信息检测
检查DMI信息(最常用)
sudo dmidecode -s system-product-name
- 物理机典型输出:
PowerEdge R740
、ProLiant DL380
- 虚拟机输出示例:
- VMware →
VMware Virtual Platform
- KVM →
KVM
或Standard PC (i440FX + PIIX, 1996)
- Hyper-V →
Virtual Machine
- VirtualBox →
VirtualBox
- VMware →
原理:读取主板固件(SMBIOS)信息,虚拟化平台会注入特定标识。
查看CPU虚拟化特征
grep -E 'vmx|svm|hypervisor' /proc/cpuinfo
- 若输出
hypervisor
标志(如KVM环境),则处于虚拟机中。 - 物理机通常显示
vmx
(Intel)或svm
(AMD)硬件虚拟化支持,但无hypervisor
字样。
内核与设备驱动分析
检查磁盘/网卡驱动
# 查看磁盘控制器驱动 lspci -k | grep -i "storage controller" # 查看网卡驱动类型 lspci -nn | grep -i "network"
- 物理机驱动:
megaraid_sas
(戴尔阵列卡)、bnx2x
(Broadcom网卡) - 虚拟机驱动:
- VMware →
vmw_pvscsi
(磁盘)、vmxnet3
(网卡) - KVM →
virtio-pci
- Hyper-V →
hv_storvsc
(磁盘)、hv_netvsc
(网卡)
- VMware →
内核模块检测
lsmod | grep -iE 'kvm|vmw|vbox|hv'
- 加载模块如
kvm
、vmw_vmci
、vboxguest
等直接暴露虚拟化环境。
系统文件与进程追踪
检查/sys
虚拟化目录
# 查看Hyper-V标识 ls /sys/bus/vmbus/ # 检测VMware工具 ls /sys/class/dmi/id/product_* 2>/dev/null
- VMware虚拟机存在
/sys/class/dmi/id/product_name
文件。
系统服务与进程
# 检查虚拟化相关服务 systemctl list-units | grep -iE 'vbox|vmware|qemu|hv'
- 若存在
vmtoolsd
(VMware)、qemu-ga
(KVM)等服务,则为虚拟机。
容器环境特殊处理
注意:在Docker/LXC容器中,上述方法可能返回宿主机信息,需额外检查:
# 查看初始进程的cgroup信息 cat /proc/1/cgroup
- 若路径包含
/docker/
或/lxc/
,则为容器环境。
自动化工具推荐
-
virt-what
(官方推荐工具)
安装后直接运行:sudo apt install virt-what # Debian/Ubuntu sudo yum install virt-what # RHEL/CentOS sudo virt-what
- 输出结果示例:
kvm
、vmware
、hyperv
或空(物理机)。
- 输出结果示例:
-
systemd-detect-virt
systemd-detect-virt
- 直接返回虚拟化类型(
none
表示物理机)。
- 直接返回虚拟化类型(
总结与建议
场景 | 推荐命令 | 可靠性 |
---|---|---|
快速初步检测 | sudo dmidecode -s system-product-name |
|
精准虚拟化类型 | sudo virt-what |
|
容器环境判断 | cat /proc/1/cgroup |
关键提示:
- 物理机可能启用硬件虚拟化(如
vmx
/svm
),但不会显示hypervisor
标志。 - 云服务器(如AWS、阿里云)通常基于Xen/KVM,输出对应虚拟化标识。
- 结合2种以上方法验证结果更可靠,避免误判。
引用说明:
- Linux
dmidecode
手册页(man7.org) - Red Hat虚拟化检测指南(access.redhat.com)
virt-what
官方文档(libvirt.org)- Linux内核文档 –
/sys
文件系统(kernel.org)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/19441.html