Windows Server 虚拟磁盘缓存设置

wst*_*wst 7 performance hyper-v disk-cache virtual-disk azure

在 Azure 或 Hyper-V 下的 Windows 中,虚拟磁盘的磁盘策略写入缓存设置将始终显示为从服务器配置启用,而不管底层磁盘系统上的写入缓存设置的实际状态如何。但是,还有一个与第一个相关的第二个设置,在这种虚拟磁盘的情况下,其效果尚不清楚,其中第一个在设置中被选中/启用,但实际上在虚拟磁盘硬件中被禁用。磁盘设置如下所示:

[x] Enable Write Caching on the device
    [ ] Turn off Windows write-cache buffer flushing on the device 
Run Code Online (Sandbox Code Playgroud)

直观地说,我认为没有理由启用此功能,因为设备的写缓存实际上并未启用,如果它是物理磁盘,则此设置将被禁用。但是这篇文章建议启用它将使操作系统和硬件免于做无意义的工作,在保持相同数据完整性的同时提高性能,对于在设置中启用写入缓存但实际上在硬件中禁用的情况:

...由于虚拟硬盘根本不是真正的磁盘,因此就虚拟磁盘而言,该设置没有任何意义。但是第二个设置不同并且确实有意义,因为它控制磁盘的缓存刷新开/关设置。当您选择第二个设置时,缓存刷新基本上会假装成功 - 至少在软件堆栈级别。...当您在来宾操作系统中为虚拟机中的虚拟硬盘选择此设置时,您可能会看到虚拟机中运行的应用程序的性能有所提高。但请始终记住,就数据完整性而言,重要的是主机的磁盘缓存设置。

任何人都可以确认这种说法是否属实,并且是保证 WRT 数据完整性的安全措施吗?

bat*_*a09 6

如果您的数据磁盘最初配置为读取/无缓存,我认为这些设置没有任何意义。这规定更主机缓存的问题,可以通过服务管理API或PowerShell命令进行修改。


Mr.*_*rry 5

我建议仅在电源/UPS 或存储系统级别有冗余的情况下使用启用选项“关闭设备上的 Windows 写入缓存缓冲区刷新”的 VM。如果您启用该选项,您应该考虑在停电或硬件故障的情况下数据丢失。我建议使用 S2D、StarWind 或 HPE VSA 作为软件定义的存储,它可以为您提供节点级别的冗余,以便您可以使用本地 VM 的写入缓存功能。

对于这种情况,“关闭设备上的 Windows 写入缓存缓冲区刷新”选项将提高整体 VM 系统性能:RAM 用作热数据的来源,并且仅在 RAM 已满时才执行到设备的数据刷新。

我建议禁用写入缓存,以防您运行 Hyper-V 独立主机,并将 PSU 连接到单行。

这些假设仅对本地虚拟化主机可靠。云供应商有自己的功能来为其实例提供冗余,因此,我仅对我的 Amazon VM 使用写入缓存功能。

编辑:该功能的重点是减少执行 I/O 操作的延迟

  • 一旦禁用 WB 缓存,I/O 请求将直接转到底层存储,从而导致最大延迟。
  • 如果启用了“在设备上启用写入缓存”,I/O 首先进入 RAM,一旦数据变得“冷”,Windows 操作系统将它们刷新到存储中。对于这种情况,它减少了延迟。
  • 当两个 WB 选项都被标记时,由于热数据和冷数据位于 RAM 上,您可以面临最小的延迟。仅当 RAM 已满时,数据才会刷新到存储中。

  • 虚拟磁盘实际上将禁用写入缓存(它将托管一个数据库)。问题是关于当缓冲区刷新被禁用时会发生什么,写缓存也是如此。如果没有写缓存,禁用缓冲区刷新是什么意思?这专门用于 Azure VM 中的高级存储磁盘, (3认同)