【问题标题】:How to find if my OS is running on a virtualized or non-virtualized environment?如何确定我的操作系统是在虚拟化环境还是非虚拟化环境中运行?
【发布时间】:2013-01-03 21:06:02
【问题描述】:

我可以访问一台可以通过 ssh 访问的机器。如何确定我的操作系统是在完全虚拟化(VMM 进行二进制翻译)、半虚拟化还是非虚拟化环境中运行?我对如何进行有一些想法(在虚拟化环境中访问内存页面/磁盘等一些操作将花费更长的时间)但不知道如何进行。

【问题讨论】:

  • 你怎么知道我们是生活在一个真实的宇宙中还是一个花哨的计算机模拟中?如果它表现良好,这重要吗? :-)
  • 一个完美(或足够好)的虚拟化环境不应该以这种方式被检测到......
  • 你为什么只能问托管公司提供商。试试 free -m ,有时你会看到系统的整个内存。我碰巧有我的 vm 盒子。它显示了硬件148GB的整个内存

标签: linux virtualization virtual-machine paravirtualization


【解决方案1】:

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

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

只要应用程序自己运行,一个好的 VMM 就不会显示出太大的差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多