跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.5

16 磁盘缓存模式 编辑源文件

16.1 什么是磁盘缓存? 编辑源文件

磁盘缓存是一种用于加速从硬盘存储和访问数据的过程的内存。物理硬盘将其缓存作为标准功能集成。对于虚拟磁盘,缓存使用 VM 主机服务器的内存,您可以微调其行为,例如通过设置其类型。

16.2 磁盘缓存如何工作? 编辑源文件

通常,磁盘缓存存储最近和最常用的程序和数据。当用户或程序请求数据时,操作系统首先检查磁盘缓存。如果数据在那里,操作系统会快速将数据传递给程序,而不是从磁盘重新读取数据。

Caching mechanism
图 16.1: 缓存机制

16.3 磁盘缓存的好处 编辑源文件

虚拟磁盘设备缓存会影响访客机器的整体性能。您可以优化缓存模式、磁盘镜像格式和存储子系统的组合来提高性能。

16.4 虚拟磁盘缓存模式 编辑源文件

如果您没有指定缓存模式,则默认使用 writeback。每个访客磁盘可以使用以下缓存模式之一

writeback

writeback 使用主机页面缓存。写入操作在放置在主机缓存中时,会向访客报告已完成。缓存管理处理提交到存储设备的事务。访客的虚拟存储适配器会收到有关 writeback 缓存的通知,因此预计会根据需要发送刷新命令以管理数据完整性。

writethrough

写入操作仅在数据已提交到存储设备时才报告为已完成。访客的虚拟存储适配器会收到通知,没有 writeback 缓存,因此访客不需要发送刷新命令来管理数据完整性。

none

绕过主机缓存,读写操作直接在虚拟机管理程序和存储设备之间进行。由于实际的存储设备可能仅在数据仍放置在其写入队列中时才报告写入操作已完成,因此访客的虚拟存储适配器会收到通知,存在 writeback 缓存。此模式等效于直接访问主机的磁盘。

unsafe

类似于 writeback 模式,只是忽略访客的所有刷新命令。使用此模式意味着用户优先考虑性能提升,而不是主机发生故障时数据丢失的风险。此模式在访客安装期间很有用,但不适用于生产工作负载。

directsync

写入操作仅在数据已提交到存储设备并且绕过了主机缓存时才报告为已完成。类似于 writethrough,此模式对于不需要发送刷新的访客来说很有用。

16.5 缓存模式和数据完整性 编辑源文件

writethrough, none, directsync

当访客操作系统根据需要使用刷新时,这些模式被认为是安全的。对于不安全或不稳定的访客,请使用 writethoughdirectsync

writeback

此模式告知访客存在写入缓存,并依赖于访客根据需要发送刷新命令以维护其磁盘镜像中的数据完整性。如果主机发生故障,此模式会使访客面临数据丢失的风险。原因是写入操作报告为已完成的时刻与写入操作提交到存储设备的时间之间存在差距。

unsafe

此模式类似于 writeback 缓存,只是访客刷新命令会被忽略。这意味着主机发生故障导致数据丢失的风险更高。

16.6 缓存模式和实时迁移 编辑源文件

存储数据的缓存限制了支持实时迁移的配置。目前,只有 rawqcow2 镜像格式可用于实时迁移。如果使用集群文件系统,则所有缓存模式都支持实时迁移。否则,唯一支持在读/写共享存储上进行实时迁移的缓存模式是 none

libvirt 管理层包括基于几个因素的迁移兼容性检查。如果访客存储托管在集群文件系统上、是只读的或标记为可共享,则在确定是否允许迁移时会忽略缓存模式。否则,libvirt 不允许迁移,除非将缓存模式设置为 none。但是,可以使用迁移 API 的 --unsafe 选项来覆盖此限制,该选项也受 virsh 支持。例如

> virsh migrate --live --unsafe
Tip
提示

缓存模式 none 是 AIO 模式设置 native 所必需的。如果使用其他缓存模式,则 AIO 模式将静默切换回默认的 threads

打印此页面