Linux 머신 가상화 기술을 식별하는 쉬운 방법은 무엇입니까?

Linux 머신 가상화 기술을 식별하는 쉬운 방법은 무엇입니까?

가상화되거나 가상화되지 않을 수 있는 Linux 시스템에 대한 명령줄 액세스 권한이 있습니다. 어떤 가상화 기술(있는 경우)(VMWare, VirtualBox, KVM, OpenVZ, Xen)에서 실행되고 있는지 확인하고 싶습니다. 이것은 적대적인 환경이 아닙니다. 저는 자신을 위장하려는 가상 머신과 싸우려는 것이 아니라 제가 거의 알지 못하는 불안정한 서버를 진단하고 있습니다.

더 정확하게 말하면, 나는 배를 조종하는 것이 아니라 누군가가 문제를 진단하도록 돕고 있습니다. 그래서 " /proc어디서 놀아" 대신 "이 명령을 복사하여 붙여넣기"와 같은 지시를 전달해야 합니다 . 이상적으로는 lshw관련 정보를 검색하고 인쇄할 수 있는 설치하기 쉬운(사전 설치되지 않은 경우) 명령과 같습니다 .

이 시스템이 사용할 수 있는 가상화 기술을 결정하는 가장 쉬운 방법은 무엇입니까? 어떤 기술(베어 하드웨어 포함)이 결국 감지되고 어떤 기술이 결국 제거될 수 있는지 제안서에 언급해 주시면 감사하겠습니다. 저는 리눅스에 가장 관심이 많지만 다른 유니스에서도 작동하면 좋을 것 같습니다.

답변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

관련 정보