Linuxマシンの仮想化技術を識別する簡単な方法は何ですか?

Linuxマシンの仮想化技術を識別する簡単な方法は何ですか?

仮想化または仮想化されない可能性があるLinuxシステムへのコマンドラインアクセス権があります。どの仮想化テクノロジ(存在する場合)(VMWare、VirtualBox、KVM、OpenVZ、Xen)で実行されていることを確認したいと思います。これは敵対的な環境ではありません。私は自分を偽装したい仮想マシンと戦うつもりではなく、私がほとんど知らない不安定なサーバーを診断しています。

より正確に言えば、私は船を操縦するのではなく、誰かが問題を診断するのを助けています。したがって、「/procどこで遊ぶ」のかわりに「このコマンドをコピーして貼り付ける」などの指示を渡す必要があります。理想的には、lshw関連情報を検索して印刷できるインストールが簡単な(プレインストールされていない場合)コマンドと同じです。

このシステムが使用できる仮想化技術を決定する最も簡単な方法は何ですか?どのスキル(ベアハードウェアを含む)が最終的に検出され、どのスキルが最終的に取り除かれるかを提案書に記載していただきありがとうございます。私はLinuxに最も興味を持っていますが、他のUnixでも動作することをお勧めします。

答え1

dmidecode -s system-product-name

Vmware Workstation、VirtualBox、KVMのあるQEMU、UbuntuをゲストOSとして使用するスタンドアロンQEMUでテストしました。他の人は自分に慣れている別のプラットフォームを追加しました。

仮想化技術

  • VMwareワークステーション

    root@router:~# dmidecode -s system-product-name
    VMware Virtual Platform
    
  • 仮想ボックス

    root@router:~# dmidecode -s system-product-name
    VirtualBox
    
  • KVMを搭載したQemu

    root@router:~# dmidecode -s system-product-name
    KVM
    
  • Qemu(エミュレーション)

    root@router:~# dmidecode -s system-product-name
    Bochs
    
  • マイクロソフト仮想マシン

    root@router:~# dmidecode | egrep -i 'manufacturer|product'
    Manufacturer: Microsoft Corporation
    Product Name: Virtual Machine
    
  • ヴィツオチョ

    root@router:~# dmidecode
    /dev/mem: Permission denied
    
  • root@router:~# dmidecode | grep -i domU
    Product Name: HVM domU
    

ベアメタルは、コンピュータまたはマザーボードモデルのIDを返します。

/dev/disk/by-id

実行する権限がない場合は、dmidecode次を使用できます。

仮想化技術:QEMU

ls -1 /dev/disk/by-id/

出力

[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1

引用する

答え2

コンテナが実行中の場合systemd

$ systemd-detect-virt
lxc

KVM を例にすると、次のものが返されます。

kvm

仮想化されていないホストでは:

none

また見なさい:

答え3

理想的な方法

長沙

このコマンドは、さまざまなVMテクノロジーゲストから次の出力を生成します。

$ sudo lshw -class system

出力

  • キーボード仮想マシン

    mungr                     
        description: Computer
        product: KVM
        vendor: Red Hat
        width: 64 bits
        capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
    
  • 仮想ボックス

    fedora17                  
        description: Computer
        product: VirtualBox ()
        vendor: innotek GmbH
        version: 1.2
        serial: 0
        width: 64 bits
        capabilities: smbios-2.5 dmi-2.5 vsyscall32
    
  • 仮想マシンソフトウェア

    partedmagic
        description: Computer
        product: VMware Virtual Platform ()
        vendor: VMware, Inc.
        version: None
        serial: VMware-56 4d 94 a0 53 e3 f3 c6-f9 a6 eb 1a 89 70 04 57
        width: 32 bits
        capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp
    

スクリプト

open-vm-toolsUbuntu / Debianを使用している場合は、このパッケージをインストールできます。それは提供するvmware-checkvm。ただ数を返します。は0仮想マシンを意味し、1物理マシンを意味します。

理想的なアプローチではありません。

KVMの場合/proc/scsi/scsiethtoolオプションは次のように表示されます。

小型コンピュータシステムインタフェース

$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: QEMU     Model: QEMU DVD-ROM     Rev: 0.9.
  Type:   CD-ROM                           ANSI  SCSI revision: 05

イーサネットツール

$ ethtool -i eth0
driver: virtio_net
version: 
firmware-version: 
bus-info: virtio0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

virtio_net は KVM の一部です。これは、/proc/scsi/scsiあなたがVM上にあり、KVMである可能性が最も高いことを示します。

情報

ログをgrep確認するには、次のコマンドを使用します。dmesg

$ sudo 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
    
  • QEmuまたはKVM

    "-cpu host"このオプションを使用しないと、QEmuとKVMは自分自身を次のように識別します。

    CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
    

    それ以外の場合は、ホストのCPU情報がdmesgまたはで使用されます/proc/cpuinfo。ただし、次のような内容が表示されます。

    [    0.000000] Booting paravirtualized kernel on KVM
    

    最新のカーネルでは、半仮想化の下で実行されていることがわかっています。

  • マイクロソフト仮想マシン

    hda: Virtual HD, ATA DISK drive
    hdc: Virtual CD, ATAPI CD/DVD-ROM drive
    
  • $ sudo dmesg | grep -i xen
    Xen virtual console successfully installed as tty1
    
  • ヴィツオチョ

    # method #1
    $ sudo dmesg
    (returns no output)
    
    # method #2
    $ sudo cat /var/log/dmesg
    (returns no output)
    
    # method #3
    $ sudo ls -al /proc/vz
    veinfo  veinfo_redir  veredir  vestat  vzaquota  vzdata
    

引用する

答え4

hostnamectlあなたの友人ですか?systemd)。

いくつかの例:

仮想化のないノートパソコン

$ hostnamectl status
   Static hostname: earth.gangs.net
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
           Boot ID: beefdc99969e4a4a8525ff842b383c62
  Operating System: Ubuntu 16.04.2 LTS
            Kernel: Linux 4.4.0-66-generic
      Architecture: x86-64

$ hostnamectl status
   Static hostname: pluto.gangs.net
         Icon name: computer-vm
           Chassis: vm
        Machine ID: beef39aebbf8ba220ed0438b54497609
           Boot ID: beefc71e97ed48dbb436a470fe1920e1
    Virtualization: xen
  Operating System: Ubuntu 16.04.2 LTS
            Kernel: Linux 3.13.0-37-generic
      Architecture: x86-64

オープンVZ

$ hostnamectl status
   Static hostname: mars.gangs.net
         Icon name: computer-container
           Chassis: container
        Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
           Boot ID: 1bb259b0eb064d9eb8a22d112211beef
    Virtualization: openvz
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 2.6.32-042stab120.16
      Architecture: x86-64

キーボード仮想マシン

$ hostnamectl status
   Static hostname: mercury.gangs.net
         Icon name: computer-vm
           Chassis: vm
        Machine ID: beeffefc50ae499881b024c25895ec86
           Boot ID: beef9c7662a240b3b3b04cef3d1518f0
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-514.10.2.el7.x86_64
      Architecture: x86-64

関連情報