Solución 1:
hostnamectl
es tu amigo (requiere systemd
).
Algunos ejemplos:
Portátil sin ningún tipo de virtualización
$ 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
Solución 2:
A menos que el host de la VM le esté mintiendo, generalmente se puede averiguar inspeccionando el "hardware" que está viendo el huésped de la VM.
Lo más fácil es probablemente usar un programa como virt-what, que hará el análisis por usted. Por cierto, asumo ciegamente que está ejecutando algún tipo de distribución basada en Linux.
También podría valer la pena echarle un vistazo al facter de puppet, que también usa técnicas similares para determinar en qué tipo de entorno de VM se está ejecutando.
¿O podrías preguntarle a quienquiera que estés alquilando el VPS? :-)
Solución 3:
Usa el virt-what
para determinar el tipo de tecnología de virtualización que utiliza el sistema.
Ver:http://people.redhat.com/~rjones/virt-what/
Solución 4:
Systemd incluye systemd-detect-virt
Solución 5:
Debian viene con este pequeño paquete para detectar el tipo de virtualización:
$ sudo apt-get install virt-what
$ virt-what
y un poco más grande debido a las dependencias de Perl:
$ sudo apt-get install imvirt
$ imvirt