Hypervisor 和 VM 可以共享内存吗?

问题描述 投票:0回答:1

我想知道修改 KVM 是否允许虚拟机管理程序和 VM 共享内存。

我一直在研究SEV,AMD的内存加密技术,就出现了这个问题。 hypervisor和VM可以共享内存吗? 我对KVM没有详细的了解,所以只能猜测。

我可以想象以下几种方式。

  1. 修改KVM,让VM使用的部分内存是共享内存
  2. 在主机上预先分配共享内存并修改 KVM 以允许 VM 使用该内存

请问以上2种方法是否可行? 如果是的话,就可以使用 SEV-SNP 的 VMPL 功能来控制虚拟机管理程序对共享内存的访问。

virtual-machine kvm hypervisor
1个回答
0
投票

你的问题有点不清楚你指的是SEV还是SEV-SNP。它们是不同代 EYPC CPU 上可用的增量功能。

AMD 确实 将 SEV、SEV-ES、SEV-SNP 称为 SEV 技术。


是的,虚拟机管理程序和虚拟机可以共享 SEV、SEV-ES 以及 SEV-SNP 中的内存。对此的支持已融入硬件中。

查看白皮书第 12 页的“加密内存” - AMD 内存加密,作者:Kaplan、Powell 和 Woller(重点是我的):

SEV 的关键功能之一是来宾虚拟机能够选择它们想要私有的数据内存页面。此选择是使用标准 CPU 页表完成的,并且完全由来宾控制。私有内存使用客户特定密钥进行加密,而共享内存可以使用管理程序密钥进行加密。 此功能允许虚拟机标记他们想要保密(私有)的选定内存数据页面,而其他页面则用于与其他虚拟机或虚拟机管理程序进行通信。在典型的安排中,来宾将映射其所有代码和数据为私有,除了它选择公开的特定共享页面。

要实现 VM 和 Hypervisor 之间的共享页面,客户机必须将页面页表条目中的加密位(C 位;位 47)设置为 0。完成后,客户机和主机可以使用该页面进行通信。

SEV-SNP 白皮书AMD SEV-SNP:通过完整性保护等加强虚拟机隔离(特别是请参阅第 11 页的页面状态)。

既然你最后询问了 SEV-SNP:从 linux 6.9 开始就一直在研究这个问题 - 请参阅

rmp_make_shared
。从 linux 6.11-rc1 开始,
kvm_rmp_make_shared
存在。

© www.soinside.com 2019 - 2024. All rights reserved.