怎样知道公有云上的 Linux 虚拟机硬件配置以及虚拟化类型

无论是哪一家云厂商去购买虚拟机,只要是 Linux 系统,你都可以安装一个叫做 virt-what 的软件,能自动检测当前虚拟机的虚拟类型。云厂商常见的虚拟类型其实就是 kvm,xen,但是你用 man virt-what,可以看到支持的其他类型,例如: aws, hyperv, docker, ldoms, lxc, ovirt, qemu, vmware, xen-hvm 等。

通过 lspci (pciutils 软件包) 命令可以看到虚拟化出来的PCI 总线上的设备类型(virtio)

其他常见的检测硬件的命令有:

# lscpu (util-linux 软件包)

lsusb (usbutils 软件包)用来查看虚拟机上映射的 USB 设备

dmidecode -t1 可以查看虚拟机的“主板”信息,我们可以看到如下是华为云一台虚拟机的信息,可以知道华为云采用了 OpenStack ,用 kvm 技术虚拟化。

dmidecode -t 后面的类型,支持的类型包括:bios system baseboard chassis processor memory cache connector slot

很多人对于用 /proc 文件系统查看 cpuinfo 和 meminfo 不会陌生。除了这两个文件以外,我们还可以查看 /proc/cmdline 来查看内核的启动命令,

其实最简单的检查虚拟化的命令是 # hostnamectl ,大部分厂商都会定义 Virtualization 字段。

我们可以自定义 Location 字段,可以更方便的管理公有云虚拟机。

当然, # dmesg 命令里面有很多关于以上虚拟设备初始化时的信息,也是很重要的可以参考的资源。

关于磁盘,一般就是 # fdisk -l 命令了, 如果是 LVM 管理的话, 那就是 pvs/vgs/lvs 命令查看。# blkid 命令可以用来查看磁盘的 UUID(参见以上 /proc/cmdline 的输出),如果安装了 lshw 软件包,可以直接查看磁盘对应的物理的 SCSI 路径(参见以上 lspci 输出)

# lshw -c disk,storage -short

当然最终极的杀手级武器就是 hwinfo 软件包,安装了该包后,直接用 hwinfo –类型就可以输出对应类型的硬件底层信息。例如:

# hwinfo --network
# hwinfo --disk
 --<HARDWARE_ITEM>
        This option can be given more than once. Probe for a 
particular HARDWARE_ITEM. Available hardware items are:
        all, arch, bios, block, bluetooth, braille, bridge, camera, 
cdrom, chipcard, cpu, disk, dsl, dvb, fingerprint, floppy, 
framebuffer, gfxcard, hub, ide, isapnp, isdn, joystick, keyboard, 
memory, mmc-ctrl, modem, monitor, mouse, netcard, network, partition, 
pci, pcmcia, pcmcia-ctrl, pppoe, printer, redasd, reallyall, scanner, 
scsi, smp, sound, storage-ctrl, sys, tape, tv, uml, usb, usb-ctrl, 
vbe, wlan, xen, zip

以下是华为云和腾讯云的 4c/8G 虚拟机的 CPU 配置,腾讯的 Cache 要小很多啊!

相比较而言,阿里的新服务器可以称得上是良心了: