Проверьте, является ли система 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-бокс физическим или виртуальным, сообщите нам об этом в разделе комментариев. Мы проверим и обновим руководство соответствующим образом.