Server 我们可以在另一个虚拟机监控程序创建的操作系统中安装虚拟机监控程序吗?

Server 我们可以在另一个虚拟机监控程序创建的操作系统中安装虚拟机监控程序吗?,server,linux-kernel,vps,kvm,hypervisor,Server,Linux Kernel,Vps,Kvm,Hypervisor,我知道这个标题听起来有点疯狂,但我想知道,如果我们在服务器上安装KVM并创建一个具有Linux操作系统的VPS,那么我们可以在新创建的VPS中安装KVM模块,然后在VPS中再次创建一个VPS吗?您要求的是所谓的“嵌套虚拟化”,答案是:这取决于:) 据我所知,这在intel上是可能的,但是,例如在arm64上,这仍在开发中。无论如何,我认为尽管嵌套虚拟化从技术角度来看很有趣,但它并没有被广泛使用。嵌套虚拟化会产生各种各样的问题。一些虚拟化专家,如vmware,已经找到了答案;但基本上常见的问题是页

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

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

嵌套虚拟化会产生各种各样的问题。一些虚拟化专家,如vmware,已经找到了答案;但基本上常见的问题是页面表

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

但是,当您尝试嵌套监视器时,会出现问题。您无法说服处理器调用无休止的嵌套页表列表。嗯,你可以,也许有一天英特尔会,但他们以晶体管计数而闻名,而不是设计

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


对于其余部分,也是一样的,您必须(手动)虚拟化其他机制,从可怕的(英特尔)到有点可爱的(arm)。

尝试比要求简单。也许你能做到,但你失去了CPU的所有支持,所以速度会慢得多。AFAIK没有使虚拟机监控程序与内部虚拟机监控程序合作在内部虚拟机中,您可以运行VLC播放“初始”一些现代操作系统(windows、macos)在hv中运行,因此关键更新实际上不是由内核执行的,而是由hv中运行的微核执行的。因此,基于主机的虚拟机监控程序(virtualbox、fusion等)实际上需要运行嵌套的。