it-swarm.cn

VMware Linux Server-如何确定您是VM还是真实的硬件?

一个有趣的问题。我已经登录到Linux(最有可能是SuSE)主机。有什么办法可以通过编程方式告诉我我是VM主机吗?

还假定未安装vmtools。

46
mdpc

使用标准的Linux工具检查系统上的硬件。

cat /proc/scsi/scsi

要么

ethtool -i eth0

要么

dmidecode | grep -i vmware

如果这些命令的输出显示制造商名称为“ VMWare”的硬件,则说明您使用的是VMWare VM。由于系统配置和工具不同,此处提供了多个命令。

29
Greg Cain
facter virtual 
xenu

表示它是VM。如果返回“物理”,则相反(不是VM),例如:

facter virtual
Physical
13
user155575

有一个方便的应用程序可能会帮助 virt-what 。我还没有在VMWare中使用它,但是它在Qemu上确实可以很好地工作。

11
Raynet

您可能可以通过在/sys下浏览来获得想法。例如/sys/class/dmi/id/sys_vendor的值为VMware, Inc.

如果已安装,则可以使用 lshw 。命令lshw -class system在我的系统上返回此命令:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
10
Zoredache

某些虚拟环境使用有点讲故事的名称来命名其某些虚拟设备,例如,VirtualBox提供了一个称为“ VirtualBox Display Adapter”的图形卡。但是,要查找与特定VM)以及可能范围很窄的版本的关系)。

您的代码可能会看到可以设置什么样的虚拟化。如果完全失败,则可能是在VM中。但是就像您可能很容易地在没有任何VM)硬件的盒子上一样。

6
staticsan

有很多代码可以检测您是否在VM。)中。从 红色药丸 开始,然后从那里搜索 这篇在进攻计算 上的论文也是不错的读物。

那就是上面那些简单的方法都不起作用的时候:)

4
Bill Weiss

对于Linux,您输入dmesg |grep DMI

虚拟主机输出

 [root @ myhost〜]#dmesg | grep DMI 
存在DMI 2.3。
 DMI:Microsoft Corporation虚拟机/虚拟机,BIOS 090006 2012年5月23日
 
 [root @ myhost〜]#dmesg | grep -i virtual 
 DMI:Microsoft Corporation虚拟机/虚拟机,BIOS 090006 05/23/2012 
引导超虚拟化内核在裸机上
输入:Macintosh鼠标按钮仿真为/devices/virtual/input/input1
scsi 0:0:0:0:Direct-Access Msft虚拟磁盘1.0 PQ:0 ANSI:4 
 input:Microsoft Vmbus HID兼容鼠标,作为/devices/virtual/input/input4

对于物理主机示例

 [root @ backdev1〜]#dmesg | grep DMI 
 DMI 2.5存在。
 DMI:IBM System x3650 M3-[7945AC1]-/ 90Y4784,BIOS-[D6E153AUS-1.12 ]-2011年6月30日
4
gabo34

您还可以搜索Mac地址的第一部分 此处 ,并查看是否已将其列为分配给任何虚拟化公司的地址。

3
Zypher

/ proc中的lspci和/或磁盘设备信息也将显示虚拟设备:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model
3
Heath

在Linux中,系统信息显示在/ sys/devices/virtual/dmi/id /中。请参阅我的答案 此处 以获取方便的脚本,以向您显示所有可用信息。

不需要root。

2
Mike S

这对我来说效果更好,因为它为我提供了有关制造商和产品名称的特定信息。

dmidecode -t system|grep 'Manufacturer\|Product'

Dell服务器上的输出:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

在Virtualbox VM上的输出:

Manufacturer: innotek GmbH
Product Name: VirtualBox

在KVM/QEMU上的输出:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

这对于可以解析这些脚本以更好地识别服务器的脚本非常有用...但是,如果您在基础架构中使用Chef,则可以检查节点属性Virtualization -> system在厨师服务器中。

1
user751528

我不喜欢这些解决方案,因为通常会安装VMware CDROM驱动程序或内存驱动程序,因此dmesg会迅速为我确认或拒绝它。

 [server @ user〜] $ dmesg | grep VMware 
 hda:VMware虚拟IDE CDROM驱动器,ATAPI CD/DVD-ROM驱动器
。供应商:VMware模型:虚拟磁盘修订版:1.0 
供应商:VMware模型:虚拟磁盘修订版:1.0 
供应商:VMware模型:虚拟磁盘修订版:1.0 
供应商:VMware模型:虚拟磁盘版本:1.0 
供应商:VMware模型:虚拟磁盘版本:1.0 
供应商:VMware模型:虚拟磁盘版本:1.0 
供应商:VMware模型:虚拟磁盘版本:1.0 
 VMware内存控制驱动程序已初始化
1
Greg

我非常喜欢:

hostnamectl status 

或具体:

hostnamectl status | grep "Chassis:"

如何检查Linux系统是物理机还是虚拟机

检查Linux系统是物理机还是虚拟机的16种方法

0