存储空间写缓存和写速度

Hun*_*ord 7 hard-drive file-transfer storage-spaces

我一直在使用带有存储空间的服务器 2012r2 的 NAS。

  • 驱动器是现成的 7200 rpm 驱动器
  • 驱动器是 bitlocker 加密的
  • 驱动器采用 8 磁盘奇偶校验布局

我的问题是这个。使用 SMB 多通道,我已经能够在大约 2.5 秒内以大约 200MB 的速度将 500 MB 的文件传输到我的 NAS,但我看到 NAS 在接下来的 10 秒内将该文件复制到磁盘。为什么复制到磁盘需要那么长时间?当然,存储空间中的 8 个磁盘每秒可以写入超过 20-40MB...

顶部的网络利用率,底部的磁盘利用率

当我尝试将 3 GB 以上的大文件写入服务器时,问题就出现了,因为在将所有已缓存的内容写入磁盘时,传输速度将从 200MB/s 降至几乎为 0。

Bar*_*958 8

这种延迟写入的发生是因为 aa) 文件系统级回写 RAM 缓存,以及 b) 奇偶校验空间设计,它最初吸收了对内部日志的所有写入,以避免“关键路径”上的“读-修改-写”戏剧性慢一点。当您的写入完成时,文件系统会不断刷新“惰性写入器”工作线程中的数据,而 Spaces 会继续读取内部日志并在后台进行实际写入。

您可以通过 a) 为 Spaces 日志提供专用闪存设备来加快进程,以及 b) 避免奇偶校验并使用镜像条带(日志闪存在这里也有帮助)。看:

https://mrickert.com/2016/04/25/adding-journal-drives-to-windows-storage-spaces-2012/

另一种选择是至少升级到 2016 年的 Windows Server(推荐 2019 年,因为那里修复了大量与 Spaces 相关的错误)并使用新代表(重新命名?代码存在多年......)镜像加速奇偶校验设计。看:

http://knowledgebase.45drives.com/kb/kb450193-creating-mirror-accelerated-parity-volumes-and-storage-tiers-in-storage-spaces-windows-server-2019/

顺便说一句,使用文件复制来衡量您的存储性能是个坏主意,请看这里为什么:

https://blogs.technet.microsoft.com/josebda/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and- smb 文件共享/

祝你好运!:)

  • WS2016 和 WS2019 都不会改变这种行为 https://serverfault.com/questions/757693/storage-space-write-cache-and-write-speed/1011850#comment1314608_757693。这是预期的。并且正如 Microsoft 文档所确认的那样,奇偶校验布局应该仅用于那些速度正常的存档(什么?!)。镜像加速奇偶校验在一定程度上解决了这个问题,但也有它的主要问题,即需要存储空间直通和 ReFS。至少可以说,目前这两种技术都不可靠。 (3认同)

Dan*_*rub 0

存储空间确保具有一致的状态。一般来说,奇偶校验是所有选项中最慢的 - 您不会获得任何性能改进。

如果您愿意容忍在断电(或其他奇怪的崩溃)情况下丢失数据,您可以在空间上启用电源保护模式

设置存储池-NameOfPool - IsPowerProtected $true

编辑:当您深入研究存储空间如何处理元数据刷新时,您可能会发现更多有关底层概念的信息(除非您处于电源保护模式,否则这是同步完成的)

如果我没记错的话,您可以使用 SSD(至少两个)作为奇偶校验布局的日志磁盘。这里有一个很好的介绍:http://social.technet.microsoft.com/wiki/contents/articles/15200.storage-spaces-designing-for-performance.aspx

  • 电源保护模式已启用。我知道在奇偶校验模式下没有任何额外的缓存或任何东西,但驱动器仍然应该能够无限期地进行至少 20-50MB 的持续写入,对吗?因此,8 个驱动器乘以 20-50 是我期望的维持写入吞吐量...... (2认同)