広告 Infrastructure Linux

仮想マシンかどうかをチェックする

ansibleで対象のホストが仮想マシンの場合にtaskを実行するってのを実現したくて、shellで仮想マシンかどうかをチェックする方法を調べた。

dmesgを活用する

VMWare

# dmesg | grep -i virtual
VMware vmxnet virtual NIC driver
  Vendor: VMware    Model: Virtual disk      Rev: 1.0
hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive

KVM

# dmesg | grep -i virtual
[    0.000000] Booting paravirtualized kernel on KVM
[    0.040002] smpboot: CPU0: Intel QEMU Virtual CPU version (cpu64-rhel6) (fam: 06, model: 0d, stepping: 03)
[    0.477272] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input2
[    0.478855] input: VirtualPS/2 VMware VMMouse as /devices/platform/i8042/serio1/input/input3
[    0.503611] systemd[1]: Detected virtualization kvm.
[    0.546002] systemd[1]: Starting Setup Virtual Console...

Xen

# dmesg | grep -i xen
Xen virtual console successfully installed as tty1

実行時間の長いシステムでは、代わりに /var/log/dmesg を grep する必要があります。

dmidecodeを活用する

dmesgが微妙な場合は、dmidecodeを使ってBIOS情報を調べてみてください。

(dmesgを漁るよりよっぽどいいと思う。)

VMWare

# dmidecode -s system-product-name
VMware Virtual Platform

KVM

# dmidecode -s system-product-name
KVM

Xen

# dmidecode -s system-product-name
Xen

雑感

dmidecode のポテンシャルすごい気がする!

Hyper-V?んなもんは知らん。

Sponsor Link

-Infrastructure, Linux