如何查找我的操作系统是运行在虚拟化环境还是非虚拟化环境中



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

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

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

只要应用程序正常运行,一个好的VMM应该不会显示太多的差异。

最新更新