内核相同页合并 (KSM)

Kernel Samepage Merging(KSM)是Linux内核提供的一个可选的内存去重功能,默认情况下在{pve}中启用。KSM通过扫描一系列物理内存页来搜索内容完全相同的页,并识别映射到这些页上的虚拟页。如果发现了内容相同的内存页,相应的虚拟页会被重新映射,使它们都指向同一物理页,而旧的物理页会被释放。这些虚拟页被标记为“写时复制”,这样任何对它们的写操作都会被写入到新的内存区域,保持共享的物理页不变。

KSM的含义

KSM能够在虚拟化环境中优化内存使用,因为运行相似操作系统或工作负载的多个虚拟机可能会共享很多相同的内存页面。

然而,虽然KSM能够降低内存使用量,但它也带来了一些安全风险,因为它可能会让虚拟机(VM)暴露于旁道攻击。研究表明,通过利用KSM的某些特性,可以通过同一主机上的第二个虚拟机推断出正在运行的虚拟机的信息。

因此,如果您使用{pve}来提供托管服务,您应该考虑禁用KSM,以便为您的用户提供额外的安全保障。此外,您应当检查您所在国家的法规,因为禁用KSM可能是一项法律要求。

禁用KSM

要检查KSM是否激活,你可以查看以下命令的输出:

# systemctl status ksmtuned

如果是这样,可以立即使用以下方式禁用:

# systemctl disable --now ksmtuned

最后,要取消所有当前合并的页面,请运行:

# echo 2 > /sys/kernel/mm/ksm/run