En tant qu'administrateur Linux, vous vous demandez peut-être parfois si vous travaillez sur une machine physique ou virtuelle. La plupart du temps, vous accéderez et gérerez vos serveurs à distance. Vous n'avez peut-être pas toujours un accès physique à vos serveurs et vous ne savez peut-être même pas où se trouve le serveur. Cependant, il est possible de vérifier si votre système Linux est une machine physique ou virtuelle à l'aide de quelques utilitaires Linux. Ce guide répertorie toutes les manières possibles de vérifier si le système Linux sur lequel vous travaillez est un serveur physique ou un serveur virtuel.
Vérifiez si un système Linux est une machine physique ou virtuelle
Il peut y avoir plusieurs façons de déterminer si un système est physique ou virtuel. Je connais les méthodes suivantes à l'heure actuelle. Je mettrai à jour si je trouve d'autres moyens dans les jours à venir.
Méthode 1 - Utilisation de l'utilitaire Dmidecode
Le moyen le plus simple de savoir si nous travaillons sur une machine virtuelle ou physique consiste à utiliser dmidecode utilitaire. Dmidecode, décodeur de table DMI, est utilisé pour trouver les composants matériels de votre système, ainsi que d'autres informations utiles telles que les numéros de série et la révision du BIOS.
Dmidecode est préinstallé avec la plupart des distributions Linux. Au cas où, s'il n'est pas déjà installé, vous pouvez l'installer à l'aide du gestionnaire de packages de votre distribution. Supposons, par exemple, que la commande suivante installe dmidecode dans les systèmes basés sur DEB tels que Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
Après avoir installé Dmidecode, exécutez la commande suivante pour savoir si votre système est une machine physique ou virtuelle :
$ sudo dmidecode -s system-manufacturer
S'il s'agit d'un système physique, vous obtiendrez une sortie comme ci-dessous.
Dell Inc.
S'il s'agit d'un système virtuel créé avec Virtualbox, vous obtiendrez le résultat suivant :
innotek GmbH
Pour ceux qui se demandent,innotek est une société de logiciels basée en Allemagne qui développe un logiciel de virtualisation de PC appelé VirtualBox .
S'il s'agit d'un système virtuel créé avec KVM/QEMU, la sortie sera :
QEMU
Comme vous le voyez dans la sortie ci-dessus, s'il s'agit d'un système physique, dmidecode affichera le nom du fabricant (c'est-à-dire Dell Inc.). S'il s'agit d'un système virtuel, il affichera le logiciel/la technologie de virtualisation (c'est-à-dire VirtualBox ou QEMU).
Vous pouvez également utiliser cette commande pour vérifier s'il s'agit d'un système physique ou virtuel.
$ sudo dmidecode | grep Product
Exemple de résultat :
[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)
Une autre commande pour savoir s'il s'agit d'un système physique ou virtuel est :
$ sudo dmidecode -s system-product-name
Exemple de résultat :
[Physical system] Inspiron N5050 [Virtual system on VirtualBox] VirtualBox [Virtual system on KVM/QEMU] Standard PC (Q35 + ICH9, 2009)
Encore une autre commande dmidecode pour trouver le type du système distant est :
$ sudo dmidecode | egrep -i 'manufacturer|product'
Exemple de résultat :
[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
Et, une autre commande dmidecode est d'atteindre le même objectif :
$ sudo dmidecode | egrep -i 'vendor'
Exemple de résultat :
[Physical system] Vendor: Dell Inc. [Virtual system on VirtualBox] Vendor: innotek GmbH [Virtual system on KVM/QEMU] Vendor: EFI Development Kit II / OVMF
Méthode 2 - Utilisation de l'utilitaire Facter
Facteur est un utilitaire de ligne de commande pour collecter et afficher les informations d'un système. Contrairement à Dmidecode, Facter n'est pas pré-installé par défaut. Vous devrez peut-être l'installer comme indiqué ci-dessous en fonction de la distribution Linux que vous utilisez.
Sous Arch Linux, Manjaro Linux :
$ sudo pacman -S facter
Dans Fedora :
$ sudo dnf install facter
Dans CentOS, RHEL :
$ sudo yum install epel-release
$ sudo yum installl facter
Dans openSUSE :
$ sudo zypper install facter
Une fois le facteur installé, exécutez la commande suivante pour vérifier si le système est une machine physique ou virtuelle :
$ facter 2> /dev/null | grep virtual
Si cette commande ne fonctionne pas, essayez avec les privilèges sudo :
$ sudo facter 2> /dev/null | grep virtual
Exemple de résultat :
[Physical system] is_virtual => false virtual => physical [Virtual system on VirtualBox and KVM/QEMU] is_virtual => true virtual => kvm
Vous pouvez également utiliser la commande suivante :
$ facter virtual
Ou,
$ sudo facter virtual
S'il s'agit d'une machine physique, la sortie sera :
physical
S'il s'agit d'une machine virtuelle, vous verrez une sortie comme ci-dessous.
kvm
Méthode 3 - Utilisation de l'utilitaire lshw
Le lshw est un petit utilitaire de ligne de commande qui affiche les informations matérielles détaillées d'un système de type Unix. Il affiche tous les détails du matériel, y compris la configuration de la mémoire, la version du micrologiciel, la configuration de la carte mère, la version et la vitesse du processeur, la configuration du cache, la vitesse du bus, etc.
Certaines distributions Linux sont préinstallées avec lshw. S'il n'est pas déjà installé, vous pouvez l'installer comme indiqué ci-dessous.
Sous Arch Linux et dérivés :
$ sudo pacman -S lshw
Dans Fedora :
$ sudo dnf install lshw
Dans RHEL et dérivés tels que CentOS, Linux scientifique :
$ sudo yum install epel-release
$ sudo yum install lshw
Sous Debian, Ubuntu, Linux Mint :
$ sudo apt-get install lshw
Dans SUSE/openSUSE :
$ sudo zypper in lshw
Après avoir installé lshw, exécutez la commande suivante pour savoir si votre système est physique ou virtuel :
$ sudo lshw -class system
Exemple de résultat :
[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
Suggestion de lecture :
- Comment trouver les spécifications matérielles sous Linux
- Comment connaître la RAM maximale prise en charge sous Linux
Méthode 4 - Utilisation de l'utilitaire dmesg
Nous pouvons trouver le type du système en utilisant dmesg utilitaire. dmesg est utilisé pour examiner ou contrôler le tampon circulaire du noyau.
Pour vérifier si votre système Linux est physique ou virtuel, exécutez simplement :
$ sudo dmesg | grep "Hypervisor detected"
Si votre système est physique, vous ne verrez aucune sortie.
Si votre système est une machine virtuelle, vous verrez une sortie comme ci-dessous.
[ 0.000000] Hypervisor detected: KVM
Méthode 5 - Utilisation de la commande hostnamectl
Nous pouvons savoir si notre système est virtuel ou physique en utilisant hostnamectl commande. Il nécessite systemd travailler.
$ hostnamectl status
Ou,
$ hostnamectl
Exemple de résultat :
[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
Méthode 6 - Utilisation de systemd-detect-virt
Le systemd-detect-virt L'outil détecte la technologie de virtualisation et peut distinguer la virtualisation complète de la machine de la virtualisation du matériel ou des conteneurs.
Exécutez la commande suivante pour vérifier si le système est physique ou virtuel :
$ systemd-detect-virt
Exemple de résultat :
[Physical machine] none [Virtual machine on VirtualBox] oracle [Virtual machine on KVM/QEMU] KVM
Méthode 7 - Utilisation du script virt-what
Le virt-quoi est un petit script shell développé chez Red Hat pour savoir si nous sommes en cours d'exécution dans une machine virtuelle ou une machine physique. virt-what est fourni pour toutes les distributions Linux populaires, telles que RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).
Dans Arch Linux, vous pouvez l'installer à partir d'AUR en utilisant n'importe quel assistant AUR, par exemple Yay .
$ yay -S virt-what
Dans RHEL, Fedora, CentOS :
$ sudo yum install virt-what
Sur Debian, Ubuntu :
$ sudo apt-get install virt-what
Une fois installé, exécutez la commande suivante pour afficher si votre système est physique ou virtuel :
$ sudo virt-what
Si rien n'est imprimé et que le script se termine avec le code 0 (pas d'erreur), cela signifie que le système est physique ou un type de machine virtuelle que nous ne connaissons pas ou que nous ne pouvons pas détecter.
Si votre système est virtuel, vous verrez une sortie comme ci-dessous.
virtualbox kvm
Pour plus de détails, consultez la page d'accueil du projet.
- http://people.redhat.com/~rjones/virt-what/
Méthode 8 - Utilisation du script imvirt
L'imvirt est encore un autre petit perl script qui vous aide à détecter si nous fonctionnons sur une machine virtuelle.
Dans Arch Linux, vous pouvez l'installer à partir d'AUR en utilisant Yay programme d'assistance.
$ yay -S imvirt
Sur Debian, Ubuntu, Linux Mint :
$ sudo apt-get install imvirt
Une fois installé, exécutez la commande suivante pour afficher si votre système est physique ou virtuel :
$ sudo imvirt
Si votre système est physique, la sortie serait :
Physical
si le système est virtuel, vous verrez :
KVM
Pour plus de détails, consultez la page d'accueil du projet.
- http://micky.ibh.net/~liske/imvirt.html
Lire connexe :
- Comment vérifier si un système Linux est 32 bits ou 64 bits
- Comment savoir si un processeur prend en charge la technologie de virtualisation (VT)
Et, c'est tout pour le moment. Si vous connaissez d'autres moyens de savoir si la machine Linux est physique ou virtuelle, faites-le nous savoir dans la section des commentaires. Nous vérifierons et mettrons à jour le guide en conséquence.