Поиск по сайту:

Проверьте, является ли система Linux физической или виртуальной машиной

Как администратор Linux, вы иногда можете задаться вопросом, работаете ли вы на физической или виртуальной машине. Большую часть времени вы будете получать доступ к своим серверам и управлять ими удаленно. У вас не всегда может быть физический доступ к вашим серверам, и вы даже можете не знать, где находится сервер. Однако можно проверить, является ли ваша система Linux физической или виртуальной машиной, используя несколько утилит Linux.

В этом руководстве перечислены все возможные способы проверить, является ли система Linux, над которой вы работаете, физическим или виртуальным сервером.

Проверьте, является ли система Linux физической или виртуальной машиной.

Существует множество способов определить, является ли система физической или виртуальной. На данный момент мне известны следующие методы. Я сообщу, если в ближайшие дни найду какие-либо другие способы.

Способ 1 — использование утилиты Dmidecode

Самый простой способ узнать, работаем ли мы на виртуальной или физической машине, — использовать утилиту dmidecode. Dmidecode, декодер таблиц DMI, используется для поиска аппаратных компонентов вашей системы, а также другой полезной информации, такой как серийные номера и версия BIOS.

Dmidecode предустановлен в большинстве дистрибутивов Linux. На всякий случай, если он еще не установлен, вы можете установить его с помощью менеджера пакетов вашего дистрибутива. Скажем, например, следующая команда установит dmidecode в системах на базе DEB, таких как Ubuntu, Linux Mint.

sudo apt-get install dmidecode

После установки Dmidecode выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной машиной:

sudo dmidecode -s system-manufacturer

Если это физическая система, вы получите примерно такой результат:

Dell Inc.

Если это виртуальная система, созданная с помощью Virtualbox, вы получите следующий вывод:

innotek GmbH

Для тех, кому интересно: innotek – немецкая компания-разработчик программного обеспечения, которая разрабатывает программное обеспечение для виртуализации ПК под названием VirtualBox.

Если это виртуальная система, созданная с помощью KVM/QEMU, результат будет следующим:

QEMU

Как вы видите в приведенном выше выводе, если это физическая система, dmidecode отобразит имя производителя (т. е. Dell Inc.). Если это виртуальная система, то будет показано программное обеспечение/технология виртуализации (например, VirtualBox или QEMU).

Кроме того, вы можете использовать эту команду, чтобы проверить, физическая это или виртуальная система.

sudo dmidecode | grep Product

Пример вывода:

[Physical system]

Product Name: 01HXXJ
Product Name: Inspiron N5050

[Virtual system on VirtualBox]

Product Name: VirtualBox
Product Name: VirtualBox

[Virtual system on KVM/QEMU]

Product Name: Standard PC (Q35 + ICH9, 2009)

Другая команда, позволяющая узнать, физическая это или виртуальная система:

sudo dmidecode -s system-product-name

Пример вывода:

[Physical system]

Inspiron N5050

[Virtual system on VirtualBox]

VirtualBox

[Virtual system on KVM/QEMU]

Standard PC (Q35 + ICH9, 2009)

Еще одна команда dmidecode для определения типа удаленной системы:

sudo dmidecode | egrep -i 'manufacturer|product'

Пример вывода:

[Physical system]

 Manufacturer: Intel 
 Manufacturer: Sanyo 
 Manufacturer: Not Specified
 Manufacturer: Dell Inc.
 Product Name: 01HXXJ
 Manufacturer: Dell Inc.
 Manufacturer: Dell Inc.
 Product Name: Inspiron N5050
 Manufacturer: 014F

[Virtual system on VirtualBox]

 Manufacturer: innotek GmbH
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation
 Product Name: VirtualBox
 Manufacturer: Oracle Corporation

[Virtual system on KVM/QEMU]

Manufacturer: QEMU
Product Name: Standard PC (Q35 + ICH9, 2009)
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU
Manufacturer: QEMU

И еще одна команда dmidecode предназначена для достижения той же цели:

sudo dmidecode | egrep -i 'vendor'

Пример вывода:

[Physical system]

Vendor: Dell Inc.

[Virtual system on VirtualBox]

Vendor: innotek GmbH

[Virtual system on KVM/QEMU]

Vendor: EFI Development Kit II / OVMF

Способ 2 — использование утилиты Factor

Facter — это утилита командной строки для сбора и отображения информации о системе. В отличие от Dmidecode, Facter не предустановлен по умолчанию. Возможно, вам придется установить его, как показано ниже, в зависимости от используемого вами дистрибутива Linux.

В Arch Linux, Manjaro Linux:

sudo pacman -S facter

В Федоре:

sudo dnf install facter

В CentOS RHEL:

sudo yum install epel-release
sudo yum installl facter

В openSUSE:

sudo zypper install facter

После установки facter выполните следующую команду, чтобы проверить, является ли система физической или виртуальной машиной:

facter 2> /dev/null | grep virtual

Если эта команда не работает, попробуйте использовать привилегии sudo:

sudo facter 2> /dev/null | grep virtual

Пример вывода:

[Physical system]

is_virtual => false
virtual => physical

[Virtual system on VirtualBox and KVM/QEMU]

is_virtual => true
virtual => kvm

Альтернативно используйте следующую команду:

facter virtual

Или,

sudo facter virtual

Если это физическая машина, результат будет:

physical

Если это виртуальная машина, вы увидите вывод, подобный приведенному ниже.

kvm

Способ 3. Использование утилиты lshw

Утилита lshw — это небольшая утилита командной строки, которая отображает подробную информацию об оборудовании Unix-подобной системы. Он отображает все сведения об оборудовании, включая конфигурацию памяти, версию прошивки, конфигурацию материнской платы, версию и скорость процессора, конфигурацию кэша, скорость шины и т. д.

В некоторых дистрибутивах Linux предустановлен lshw. Если он еще не установлен, вы можете установить его, как показано ниже.

В Arch Linux и производных:

sudo pacman -S lshw

В Федоре:

sudo dnf install lshw

В RHEL и его производных, таких как CentOS, научный Linux:

sudo yum install epel-release
sudo yum install lshw

В Debian, Ubuntu, Linux Mint:

sudo apt-get install lshw

В SUSE/openSUSE:

sudo zypper in lshw

После установки lshw выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной:

sudo lshw -class system

Пример вывода:

[Physical system]

sk 
 description: Portable Computer
 product: Inspiron N5050 (To be filled by O.E.M.)
 vendor: Dell Inc.
 version: Not Specified
 serial: JSQ9PR1
 width: 4294967295 bits
 capabilities: smbios-2.6 dmi-2.6 smp vsyscall32
 configuration: boot=normal chassis=portable sku=To be filled by O.E.M. uuid=44454C4C-5300-1051-8039-CAC04F505231

[Virtual system on VirtualBox]

ubuntuserver 
 description: Computer
 product: VirtualBox
 vendor: innotek GmbH
 version: 1.2
 serial: 0
 width: 64 bits
 capabilities: smbios-2.5 dmi-2.5 vsyscall32
 configuration: family=Virtual Machine uuid=78B58916-4074-42E2-860F-7CAF39B5E6F5

[Virtual system on KVM/QEMU]

centos8uefi.ostechnix.lan   
    description: Computer
    product: Standard PC (Q35 + ICH9, 2009)
    vendor: QEMU
    version: pc-q35-4.2
    width: 64 bits
    capabilities: smbios-2.8 dmi-2.8 smp vsyscall32
    configuration: boot=normal uuid=C40041DE-2E63-094C-8DCF-BBDE29170268
  *-pnp00:00
       product: PnP device PNP0b00
       physical id: 1
       capabilities: pnp
       configuration: driver=rtc_cmos

Рекомендуем прочитать:

  • Как найти характеристики оборудования в Linux
  • Как узнать максимальный поддерживаемый объем оперативной памяти в Linux

Способ 4. Использование утилиты dmesg

Тип системы можно узнать с помощью утилиты dmesg. dmesg используется для проверки или управления кольцевым буфером ядра.

Чтобы проверить, является ли ваша система Linux физической или виртуальной, просто запустите:

sudo dmesg | grep "Hypervisor detected"

Если ваша система является физической, вы не увидите никаких результатов.

Если ваша система является виртуальной машиной, вы увидите результат, подобный приведенному ниже.

[ 0.000000] Hypervisor detected: KVM

Способ 5 — использование команды hostnamectl

Мы можем узнать, является ли наша система виртуальной или физической, с помощью команды hostnamectl. Для работы требуется systemd.

hostnamectl status

Или,

hostnamectl

Пример вывода:

[Physical system]

Static hostname: sk
 Icon name: computer-laptop
 Chassis: laptop
 Machine ID: 84e3c8e37e114ac9bc9f69689b49cfaa
 Boot ID: 19cf3572e1634e778b5d494d9c1af6e9
 Operating System: Arch Linux
 Kernel: Linux 4.10.13-1-ARCH
 Architecture: x86-64

[Virtual system on VirtualBox]

Static hostname: ubuntuserver
 Icon name: computer-vm
 Chassis: vm
 Machine ID: 2befe86cf8887ba098b509e457554beb
 Boot ID: 8021c02d65dc46a1885afb25dddcf18c
 Virtualization: oracle
 Operating System: Ubuntu 16.04.1 LTS
 Kernel: Linux 4.4.0-78-generic
 Architecture: x86-64

[Virtual system on KVM/QEMU]

Static hostname: centos8uefi.ostechnix.lan
Icon name: computer-vm
Chassis: vm
Machine ID: de4100c4632e4c098dcfbbde29170268
Boot ID: 6136783bb9c241d08c8901aeecc7c30d
Virtualization: kvm
Operating System: CentOS Linux 8 (Core)
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64

Способ 6 — использование systemd-detect-virt

Инструмент systemd-detect-virt обнаруживает технологию виртуализации и может отличить полную виртуализацию машины от виртуализации оборудования или контейнеров.

Запустите следующую команду, чтобы проверить, является ли система физической или виртуальной:

systemd-detect-virt

Пример вывода:

[Physical machine]

none

[Virtual machine on VirtualBox]

oracle

[Virtual machine on KVM/QEMU]

KVM

Способ 7 — Использование скрипта virt-what

virt-what — это небольшой сценарий оболочки, разработанный в Red Hat, чтобы определить, работаем ли мы на виртуальной или физической машине. virt-то, что упаковано для всех популярных дистрибутивов Linux, таких как RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).

В Arch Linux вы можете установить его из AUR, используя любые помощники AUR, например Yay.

yay -S virt-what

В RHEL, Fedora, CentOS:

sudo yum install virt-what

В Дебиане, Убунту:

sudo apt-get install virt-what

После установки выполните следующую команду, чтобы отобразить, является ли ваша система физической или виртуальной:

sudo virt-what

Если ничего не выводится и сценарий завершается с кодом 0 (нет ошибок), это означает, что либо система является физической, либо тип виртуальной машины, о которой мы не знаем или не можем обнаружить.

Если ваша система виртуальная, вы увидите результат, как показано ниже.

virtualbox
kvm

Более подробную информацию можно найти на домашней странице проекта.

  • http://people.redhat.com/~rjones/virt-what/

Способ 8 — Использование скрипта imvirt

imvirt — это еще один небольшой perl скрипт, который поможет вам определить, работаем ли мы на виртуальной машине.

В Arch Linux вы можете установить его из AUR с помощью вспомогательной программы Yay.

yay -S imvirt

В Debian, Ubuntu, Linux Mint:

sudo apt-get install imvirt

После установки выполните следующую команду, чтобы отобразить, является ли ваша система физической или виртуальной:

sudo imvirt

Если ваша система физическая, результат будет таким:

Physical

если система виртуальная, вы увидите:

KVM

Более подробную информацию можно найти на домашней странице проекта.

  • http://micky.ibh.net/~liske/imvirt.html

Связанное чтение:

  • Как проверить, является ли система Linux 32-битной или 64-битной
  • Как узнать, поддерживает ли процессор технологию виртуализации (VT)

И это все на данный момент. Если вы знаете какие-либо другие способы узнать, является ли Linux-бокс физическим или виртуальным, сообщите нам об этом в разделе комментариев. Мы проверим и обновим руководство соответствующим образом.

Статьи по данной тематике