Linux 如何确定我的操作系统是在虚拟化环境还是非虚拟化环境中运行?

Linux 如何确定我的操作系统是在虚拟化环境还是非虚拟化环境中运行?,linux,virtualization,virtual-machine,paravirtualization,Linux,Virtualization,Virtual Machine,Paravirtualization,我可以访问一台可以使用ssh的机器。如何确定我的操作系统是在完全虚拟化(VMM进行二进制转换)、准虚拟化还是非虚拟化环境中运行?我对如何进行有些想法(在虚拟化环境中,访问内存页/磁盘等操作需要更长的时间),但不知道如何进行 这取决于您在其上运行的VMM。如果它是Xen或Microsoft VM,我相信CPUID的EAX值为0x40000000将在EAX中为您提供一个非零值。不确定这是否适用于VMWare、VirtualBox或KVM。我希望它也能在那里工作 测量访问时间不太可能总是告诉您真相,因

我可以访问一台可以使用ssh的机器。如何确定我的操作系统是在完全虚拟化(VMM进行二进制转换)、准虚拟化还是非虚拟化环境中运行?我对如何进行有些想法(在虚拟化环境中,访问内存页/磁盘等操作需要更长的时间),但不知道如何进行

这取决于您在其上运行的VMM。如果它是Xen或Microsoft VM,我相信
CPUID
EAX
值为0x40000000将在
EAX
中为您提供一个非零值。不确定这是否适用于VMWare、VirtualBox或KVM。我希望它也能在那里工作

测量访问时间不太可能总是告诉您真相,因为在非虚拟机系统中,访问时间也可能有很大的差异,并且没有真正的理由让您看到高效实现的巨大差异。当然,您不知道您的虚拟机是否使用通过PCI传递的真实硬盘控制器运行,或者您的NFS安装的磁盘是否通过传递到虚拟机的真实网卡连接,或者它们是否通过虚拟网卡访问


一个好的VMM应该不会给您带来太大的区别,只要应用程序能够自行运行

你怎么知道我们生活在一个真实的宇宙中还是一个奇特的计算机模拟中?如果它表现良好,这重要吗?:-)一个完美的(或足够好的)虚拟化环境不应该以这种方式被剥夺……为什么你可以问托管公司的提供商呢。试试free-m,有时候你会看到整个系统的内存。我偶然发现了我的虚拟机盒子。它显示了148GB硬件的全部内存