Как администратор Linux, иногда можно попасть в такую ситуацию, когда вы не знаете, работаете ли вы на физической или виртуальной машине. В большинстве случаев, вы будете работать на серверах и управлять ими удаленно. У вас не всегда может быть физический доступ к вашим серверам, и вы даже можете не знать, где находится сервер. Однако можно проверить, является ли ваша система Linux физической или виртуальной машиной, используя несколько полезных утилит.
В этой статье постарался собрать все возможные способы проверить, является ли система Linux, на которой вы работаете, физическим или виртуальным сервером.
Существует множество способов определить, является ли система физической или виртуальной. Постарался перечислить все способы, которые мне известны. Если в ближайшие дни найду какие-либо другие способы, обязательно дополню статью. Так же не забывайте оставлять свои способы в комментариях ниже.
Способ 1 — использование утилиты Dmidecode.
Самый простой способ узнать, работаем ли мы на виртуальной или физической машине, — использовать утилиту dmidecode. Dmidecode, декодер таблиц DMI, используется для поиска аппаратных компонентов вашей системы, а также другой полезной информации, такой как серийные номера и версия BIOS.
Dmidecode предустановлен в большинстве дистрибутивов Linux. Если же он у вас отсутствует, то можете установить его с помощью менеджера пакетов вашего дистрибутива. Скажем, например, следующая команда установит dmidecode в системах на базе DEB, таких как Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
После установки выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной машиной:
$ sudo dmidecode -s system-manufacturer
Если это физическая система, вы получите примерно такой результат:
HP
Если это виртуальная система, созданная с помощью Virtualbox, вы получите следующий вывод:
innotek GmbH
Для тех, кому интересно, innotek — это немецкая компания-разработчик программного обеспечения, которая разрабатывает программное обеспечение для виртуализации ПК под названием VirtualBox.
Если это виртуальная система, созданная с помощью KVM/QEMU, результат будет следующим:
QEMU
Как вы видите в приведенном выше выводе, если это физическая система, dmidecode отобразит имя производителя (т. е. HP, Dell Inc., Intel и т. д. ). Если это виртуальная система, то будет показано программное обеспечение/технология виртуализации (например, VirtualBox или QEMU).
Кроме того, вы можете использовать следующую команду, чтобы проверить, физическая это или виртуальная система.
$ sudo dmidecode | grep Product Product Name: HP 255 G7 Notebook PC Version: Type1ProductConfigId Product Name: 85EA
На физической машине или на виртуальной будет вывод примерно такой:
$ sudo dmidecode | grep Product Product Name: VirtualBox Product Name: VirtualBox
Еще одна команда dmidecode для определения типа удаленной системы:
$ sudo dmidecode | egrep -i 'manufacturer|product' #### Для физической машины #### egrep: warning: egrep is obsolescent; using grep -E Manufacturer: HP Product Name: HP 255 G7 Notebook PC Version: Type1ProductConfigId Manufacturer: HP Product Name: 85EA Manufacturer: HP Manufacturer: Advanced Micro Devices, Inc. Manufacturer: Hynix Manufacturer: 333-27-33-A #### Для виртуальной машины #### Manufacturer: innotek GmbH Product Name: VirtualBox Manufacturer: Oracle Corporation Product Name: VirtualBox Manufacturer: Oracle Corporation
Способ 2 — использование утилиты Factor.
Facter — это утилита командной строки для сбора и отображения информации о системе. В отличие от Dmidecode, Facter обычно не предустановлен по умолчанию. Возможно, вам придется установить его, как показано ниже, в зависимости от используемого вами дистрибутива Linux.
#### для Arch #### $ sudo pacman -S facter #### для Fedora #### $ sudo dnf install facter #### для CentOS, RHEL #### $ sudo yum install epel-release $ sudo yum install facter #### для openSUSE #### $ sudo zypper install facter
После установки facter выполните сле
дующую команду, чтобы проверить, является ли система физической или виртуальной машиной:
$ facter 2> /dev/null | grep virtual #### Для физической машины #### is_virtual => false virtual => physical #### Для виртуальной машины #### is_virtual => true virtual => kvm
Так же можно использовать следующую команду:
$ facter virtual ####Для физической машины#### physical ####Для виртуальной машины#### kvm
Если у вас не получится запустить команду от обычного, используйте sudo.
Способ 3. Использование утилиты lshw
Утилита lshw — это небольшая утилита командной строки, которая отображает подробную информацию об оборудовании Unix-подобной системы. Он отображает все сведения об оборудовании, включая конфигурацию памяти, версию прошивки, конфигурацию материнской платы, версию и скорость процессора, конфигурацию кэша, скорость шины и т. д.
В некоторых дистрибутивах Linux предустановлен lshw. Если он еще не установлен, вы можете установить его, используя следующие команды:
#### Для Arch #### $ sudo pacman -S lshw #### Для Fedora #### $ sudo dnf install lshw #### Для RHEL, CentOS и т.д. #### $ sudo yum install epel-release $ sudo yum install lshw #### Для Debian, Ubuntu, Mint и т.д. #### $ sudo apt-get install lshw #### для SUSE/openSUSE #### $ sudo zypper in lshw
После установки lshw выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной:
$ sudo lshw -class system #### Для физической машины #### fedora description: Notebook product: HP 255 G7 Notebook PC (1Q3H0ES#ACB) vendor: HP version: Type1ProductConfigId serial: CND0292NW5 width: 64 bits capabilities: smbios-3.1.1 dmi-3.1.1 smp vsyscall32 configuration: boot=normal chassis=notebook family=103C_5336AN HP 200 sku=1Q3H0ES#ACB uuid=4f684abf-d5a6-ea11-8104-bce92fbb8b64 #### Для виртуальной машины #### $ sudo lshw -class system #### Для физической машины #### fedora description: Notebook product: HP 255 G7 Notebook PC (1Q3H0ES#ACB) vendor: HP version: Type1ProductConfigId serial: CND0292NW5 width: 64 bits capabilities: smbios-3.1.1 dmi-3.1.1 smp vsyscall32 configuration: boot=normal chassis=notebook family=103C_5336AN HP 200 sku=1Q3H0ES#ACB uuid=4f684abf-d5a6-ea11-8104-bce92fbb8b64 #### Для виртуальной машины #### centos-host1 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=FF628DD1-8E85-FA4B-A285-292F7E423588
Способ 4. Использование утилиты dmesg.
Тип системы можно узнать с помощью утилиты dmesg.
Чтобы проверить, является ли ваша система Linux физической или виртуальной, используйте следующую команду:
$ sudo dmesg | grep "Hypervisor detected" [ 0.000000] Hypervisor detected: KVM
Если ваша система является физической, то вывод будет пустым. В случае использования виртуальной машины, вы увидите результат, подобный приведенному выше.
Способ 5 — использование команды hostnamectl.
Мы можем узнать, является ли наша система виртуальной или физической, используя команду hostnamectl. Не сработает в системах, которые не используют systemd.
$ hostnamectl или $ hostnamectl status
Вывод будет следующим:
#### для физических машин #### Static hostname: (unset) Transient hostname: fedora Icon name: computer-laptop Chassis: laptop 💻 Machine ID: 5fb6e2cc1f714921a60fc2dedad786b5 Boot ID: e0fa3fcb337a4daca906c9ba1c6a01a8 Operating System: Fedora Linux 38 (Workstation Edition) CPE OS Name: cpe:/o:fedoraproject:fedora:38 OS Support End: Tue 2024-05-14 OS Support Remaining: 4month 1w Kernel: Linux 6.6.4-100.fc38.x86_64 Architecture: x86-64 Hardware Vendor: HP Hardware Model: HP 255 G7 Notebook PC Firmware Version: F.31 Firmware Date: Wed 2020-07-01 #### Для виртуальных машин #### Static hostname: centos-host1 Icon name: computer-vm Chassis: vm Machine ID: ff628dd18e85fa4ba285292f7e423588 Boot ID: 9803652220ce49bb8dcb6949ad955a9d Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1127.el7.x86_64 Architecture: x86-64
Способ 6 — использование systemd-detect-virt.
Инструмент systemd-detect-virt обнаруживает технологию виртуализации и может отличить полную виртуализацию машины от аппаратной или контейнерной виртуализации.
$ systemd-detect-virt #### Для физической машины #### none #### Для виртуальной машины #### kvm
Способ 7 — Использование скрипта virt-what
Virt-what — это небольшой сценарий оболочки, разработанный в Red Hat, чтобы определить, работаем ли мы на виртуальной или физической машине. virt-what, присутствуют в большинстве репозиториев популярных дистрибутивов Linux, таких как RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).
Установить его можно следующими командами в зависимости от используемого дистрибутива.
#### Для Arch #### $ sudo yay -S virt-what #### Для RHEL, Fedora, CentOS #### $ sudo yum install virt-what #### Для Debian, Ubuntu, Mint и т.д. #### $ sudo apt-get install virt-what
После установки выполните следующую команду, чтобы проверить, является ли ваша система физической или виртуальной:
$ sudo virt-what virtualbox kvm
Если ничего не выводится и сценарий завершается с кодом 0 (нет ошибок), то это означает, что либо система является физической, либо представляет собой тип виртуальной машины, о которой приложение не знает или не может обнаружить.
Если ваша система виртуальная, вы увидите результат, как показано выше.
Способ 8 — Использование скрипта imvirt
Imvirt — это еще один небольшой Perl-скрипт, который поможет вам определить, работаем ли мы на виртуальной машине или нет.
Установить его можно следующими командами, в зависимости от вашего дистрибутива:
#### Arch Linux #### $ yay -S imvirt #### Debian, Ubuntu, Mint #### $ sudo apt-get install imvirt
После установки выполните следующую команду, чтобы отобразить, является ли ваша система физической или виртуальной:
$ sudo imvirt
Если ваша система является физической, результат будет таким:
Physical
если система виртуальная, вы увидите:
KVM
Заключение.
И это все на данный момент. Если вы знаете какие-либо другие способы узнать, является ли Linux-компьютер физическим или виртуальным, сообщите нам об этом в разделе комментариев. Проверю и дополню статью.
Was this helpful?
0 / 0