How to find out the virtualization type of an linux VPS?
Solution 1:
hostnamectl
is your friend (requires systemd
).
A few examples:
Laptop without any virtualization
$ 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
Xen
$ 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
OpenVZ
$ 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
KVM
$ 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
Solution 2:
Unless the VM host is lying to you it can generally be figured out by inspecting the "hardware" the VM guest is seeing.
Easiest is probably to use a program like virt-what, which will do the parsing for you. Here I'm blindly assuming that you are running some kind of Linux based distribution by the way.
Might also be worth taking a look at puppet's facter, which too uses similar techniques to determine in what kind of VM environment it's running.
Or you could you ask whoever you happen to be renting the VPS from? :-)
Solution 3:
Use the virt-what
command to determine the type of virtualization technology the system is using.
See: http://people.redhat.com/~rjones/virt-what/
Solution 4:
Systemd includes systemd-detect-virt
Solution 5:
Debian comes with this small package for detecting virtualisation type:
$ sudo apt-get install virt-what
$ virt-what
and little bigger because of Perl dependencies:
$ sudo apt-get install imvirt
$ imvirt