【问题标题】:can we install a hypervisor inside a OS created by another hypervisor?我们可以在由另一个管理程序创建的操作系统中安装管理程序吗?
【发布时间】:2021-05-06 12:02:26
【问题描述】:

我知道标题听起来有点疯狂,但我想知道,如果我们在服务器上安装 KVM 并创建一个具有 Linux 操作系统的 VPS,那么我们可以在新创建的 VPS 中安装 KVM 模块并再次在 VPS 中创建 VPS 吗?

【问题讨论】:

  • 尝试比问简单。也许你可以做到,但是你失去了对 CPU 的所有支持,所以它会慢得多。 AFAIK 没有管理程序与内部管理程序合作
  • 在虚拟机内部可以运行 VLC 播放“盗梦空间”

标签: server linux-kernel vps kvm hypervisor


【解决方案1】:

嵌套虚拟化会产生各种问题。一些虚拟化专家,比如 vmware,已经弄清楚了。但基本上常见的问题是页表。

客户端有一组页表。通过这些生成的地址成为 monitors 页表的输入;这是由 cpu 强制执行的。这是一项重要的优化,即使一个简单的内存访问可能会导致多达 24 次翻译,因此可能会导致内存访问。

但是,当您尝试嵌套监视器时,事情就会出错。您无法说服处理器调用无穷无尽的嵌套页表列表。嗯,你可以,有朝一日英特尔可能会,但它们以晶体管数量而不是设计而闻名。

要处理这个问题,监视器必须让自己对客户端页表敏感。这可能看起来很困难,但类似于虚拟化设备。客户端为基本页表提供一小组地址。作为监视器,您只需创建一个影子集,并验证每个页表条目,并让自己对集体页表的任何内部节点中的修改敏感。从那时起,同步就是陷阱 -> 更新。

其余部分都是一样的,你必须(手动)虚拟化其他机制,从可怕(intel)到有点可爱(arm)。

【讨论】:

    【解决方案2】:

    您所要求的称为“嵌套虚拟化”,答案是:这取决于 :) 据我了解,这在英特尔上是可能的,但例如在 arm64 中,这仍在开发中。无论如何,我认为尽管从技术角度来看,嵌套虚拟化很有趣,但它并没有被广泛使用。

    【讨论】:

    • 一些现代操作系统(windows、macos)在 hv 中运行,因此关键更新实际上不是由内核执行,而是在 hv 中运行的微内核。因此,基于主机的管理程序(virtualbox、fusion,...)实际上需要嵌套运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2014-05-22
    • 2011-08-11
    • 2021-12-06
    • 2010-09-09
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多