【问题标题】:Type-1 Hypervisors non-volatile memory isolationType-1 Hypervisors 非易失性内存隔离
【发布时间】:2018-10-17 09:12:17
【问题描述】:

管理程序将运行在同一台物理机器上的不同操作系统相互隔离。在此定义中,也存在非易失性存储器(如硬盘驱动器或闪存)分离。

在考虑 Type-2 管理程序时,很容易理解它们如何分离非易失性内存,因为它们只是使用底层操作系统的文件系统实现来为每个 VM 分配不同的“硬盘驱动器文件”。

但是,当我开始考虑 Type-1 虚拟机管理程序时,问题变得更加困难。他们可以使用 IOMMU 隔离不同的硬件接口,但在系统中只有一个非易失性存储器接口的情况下,我看不出它有什么帮助。

因此实现它的一种方法是将一台设备分成 2 个“分区”,并让管理程序解释来自 VM 的调用并确定调用是否合法。我不热衷于非易失性接口的通信协议,但管理程序必须熟悉这些协议才能做出判断,这听起来(可能)有点矫枉过正。

还有其他方法可以实现这种隔离吗?

【问题讨论】:

  • Type 1 和 Type 2 管理程序之间的原始区别对于今天的计算机来说没有多大意义。如果您打算使用这些名称,则应说明它们的含义。此外,这不是主题;尝试在Super User 上提问。
  • 我去那里,谢谢。我将类型 2 称为在某些操作系统之上运行,因此将 VM 内核请求转换为底层操作系统内核,因此可以轻松地路由此类请求。在我的理解中,针对让 VM 可以直接访问硬件接口的类型 1,使得挂钩非易失性内存调用非常难以挂钩(因此难以保护)。

标签: qemu kvm xen hypervisor


【解决方案1】:

是的,您是对的,管理程序必须熟悉这些协议才能使隔离成为可能。 开销主要取决于协议。像基于 NVMe 的 SSD 基本上可以在 PCIe 上运行,并且一些 NVMe 设备支持SR-IOV,这大大减少了工作量,但有些不会给 hyperviosr 留下负担。

大多数情况下,这种支持是在构建时配置的,例如将为每个客户分配多少内存、每个客户的命令权限等,当客户发送命令时,管理程序会验证其边界并相应地转发它们。

那么为什么在这种情况下没有像 MMU 或 IOMMU 这样的支持呢? 有数百种类型的设备具有不同的协议,NVMe、AHCI 等,如果供应商支持这些以实现更好的虚拟化,他最终会得到一个不适合的巨大芯片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2018-01-18
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    相关资源
    最近更新 更多