When renting a dedicated server, how can one be certain than he/she is not getting a VPS or some other virtual machine variant instead of a true dedicated hardware box?

Which checks can be run (assuming it is a linux box) to detect such case?

  • Is the provider untrustworthy? Do you feel that you need to check on this? What is your motivation for this question? – Frank V Oct 26 '09 at 19:30
  • This is not regarding a specific provider, but just in general. I see cheaper and cheaper options available that I sometimes wonder if it is really a dedicated server those companies are offering. – mr-euro Oct 27 '09 at 10:27

First of all, physical machines tend to have more memory than VPSs. Question 512MB or less. Secondly you can check several things to find a VPS. You'll commonly find virtual machines have surprisingly basic looking hardware in them. Like KVM has a "Cirrus Logic GD 5446" graphics card. VMWare used to have an RTL8129 network card in. This is so most OS installation media has drivers for the virtual devices.

The facter (part of Puppet) virtual.rb script has several useful techniques for finding out what type of machine you're running.


Look for /proc/vz/veinfo


Look for one of /proc/sys/xen, /sys/bus/xen or /proc/xen


Look for s_context or VxID in /proc/self/status

VMWare or Parallels

  • Run lspci and look for VMWare VGA adapter
  • Run dmidecode and look for mention of VMWare or Parallels


Run lspci and look for RAM memory: Qumranet, Inc. Virtio memory balloon

  • Have a vote yourself, for the KVM test which I haven't used before. – womble Oct 26 '09 at 15:13
  • It's only cos I've got a kvm host to hand :) – David Pashley Oct 26 '09 at 15:17
  • Thx for the specific type of devices/hardware hints. – mr-euro Nov 3 '09 at 17:50

There's no 100% reliable way for you to detect that you're in a VM, just like there's no way to detect whether you're actually in the Matrix, or if you're actually a computer simulation.

However, if the provider is an idiot, you can tell that you're in a VM from the following handy list:

  • Xen: /proc/sys/xen exists
  • OpenVZ/Virtuozzo: /proc/vz exists
  • VMWare: Look for a VMWare video card in the output of lspci
  • Linux VServer: /proc/self/status has an s_context or VxID field
  • Solaris Zone: /sbin/zonename exists

These aren't 100% reliable, because the provider controls the environment and can modify the system to not show these. However, anyone who is cheap enough to sell you a dedicated server and give you a VM probably isn't smart enough to be able to pull this off.

  • Damn, you got there just before I did. Have a vote :) – David Pashley Oct 26 '09 at 15:10
  • 1
    You too? I was certain that those green characters scrolling down the walls were only visible to me... – mr-euro Oct 26 '09 at 15:25

Take a look at your machine's MAC address(es). Do you see any VM-specific OUIs?


If you want to take a more hands-on approach, you can try this answer from elsewhere. Unfortunately, it does require a functional compiler on the "guest" system.


Try and set up a VM environment. It should fail if it is inside a VM.

  • 2
    I do not think this is correct. In the past I have seen guests being hosts for other guests, even across different virtualization platforms. – mr-euro Oct 26 '09 at 15:22
  • 1
    Depending on the VM environment you're in and what you're trying to do, it might not fail -- and, ultimately, the provider could have emulated everything that the VM system needs to work anyway. – womble Oct 26 '09 at 15:22
  • 5
    It's also an awful lot of work. – womble Oct 26 '09 at 15:24
  • I've run three VMWare ESXi hosts inside a VMWare Workstation, and then ran 5 VMWare ESXi guests inside those for doing a proof of concept. Definately not a good test. – Mark Henderson Mar 16 '10 at 22:57

Not the answer you're looking for? Browse other questions tagged or ask your own question.