不明白为什么 RAID5 中内置的 10xHDD SAS 写入速度太慢。读取缓存:已启用写入缓存:已禁用(服务器没有电池)条带大小:512k
-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 371.345 MB/s
Sequential Write : 22.066 MB/s
Random Read 512KB : 1710.567 MB/s
Random Write 512KB : 18.550 MB/s
Random Read 4KB (QD=1) : 78.245 MB/s [ 19102.9 IOPS]
Random Write 4KB (QD=1) : 0.654 MB/s [ 159.6 IOPS]
Random Read 4KB (QD=32) : 538.820 MB/s [131547.9 IOPS]
Random Write 4KB (QD=32) : 2.214 MB/s [ 540.5 IOPS]
Test : 50 MB [E: 0.0% (0.4/16740.0 GB)] (x2)
Date : 2016/09/28 12:35:44
OS : Windows NT 6.2 Server Standard Edition (full installation) [6.2 Build 9200] (x64)
--------
在 ESXi6U2 上的虚拟机中在同一操作系统中测试得到相同的结果。控制器:逻辑 SAS(创建虚拟机时的默认设置)。
使用硬件 RAID 控制器:Adpatec 8405。
为什么太慢了?谢谢大家提供解决办法。
答案1
无论是否使用写入缓存,您绝对不应该在没有电池的情况下使用 RAID-5。任何 RAID 在没有电池缓冲的情况下都容易出现写入漏洞。此外,使用电池缓冲会大大提高写入性能。
但是,如果您坚持不使用电池缓冲,请尝试降低条带大小。如果您主要进行随机、小 IO,那么 512k 似乎太大了。在 3x HDD 大小的阵列上,您需要写入 1 MB 的连续块以使 IO 路径饱和。执行较小的 IO 会导致由于读取-修改-写入循环而产生的写入放大。这意味着,您的阵列读取 1 MB 的网络数据,修改 4k,然后需要再次写入 1 MB。添加寻道开销解释了为什么即使是 512k 的性能也如此低(放大倍数为 2,重写数据需要等待盘片几乎转动一圈,每写入 1M 数据增加 8ms 的 IO 等待时间)。实际上,您只能通过这种方式每 16ms 传输 512k,这大约是您得到的结果:小于 32 MB/s(如果您的磁盘有 8ms 的访问时间)。我甚至认为平均访问时间是您在这里最大的问题。使用电池缓冲缓存,别无他法。并使用 SSD CacheCade 减少寻道开销。
您可以使用 UPS 和写回缓存来解决这个问题,但如果控制器上没有 BBU,缓存可能仍然会受到应用程序缓存刷新和写屏障的影响,这有时仍然会导致性能不佳。
如果您无法预测应用程序的写入模式,我会将条带大小调小很多,特别是当您要使用大量主轴时。
答案2
为什么禁用写入缓存?如果 RAID 控制器上有电池(未找到信息),您可以激活写回模式。
那么 RAID 50 怎么样?虽然会损失磁盘空间,但性能却确实提高了。
我认为 10 个磁盘上的 RAID 5 因奇偶校验计算而变慢,但我不是专家。
答案3
这是典型的 RAID5 问题。需要写入缓存来避免读取-修改-写入循环。这会降低性能,有时甚至会非常严重。 https://en.wikipedia.org/wiki/Read-modify-write 我有一些这种类型的 RAID,没有缓存,写入速度非常慢。
答案4
- 是的,完全正确。至少我需要启用“写入缓存”和“写回”选项来提高随机数据写入命令的性能。
写缓存的结果:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 1950.515 MB/s
Sequential Write : 3545.783 MB/s
Random Read 512KB : 2932.946 MB/s
Random Write 512KB : 2980.421 MB/s
Random Read 4KB (QD=1) : 79.481 MB/s [ 19404.4 IOPS]
Random Write 4KB (QD=1) : 78.543 MB/s [ 19175.5 IOPS]
Random Read 4KB (QD=32) : 551.817 MB/s [134721.0 IOPS]
Random Write 4KB (QD=32) : 519.086 MB/s [126729.9 IOPS]
Test : 50 MB [E: 0.0% (0.4/16740.0 GB)] (x2)
Date : 2016/09/28 14:25:09
OS : Windows NT 6.2 Server Standard Edition (full installation) [6.2 Build 9200] (x64)
两个结果都是使用 Adaptec 8405 在同一个 10xHHD RAID5 上获得的。扇区:大小 4k 条带大小:512k
- 我认为,有时 1 通道 SAS 控制器不足以满足 I/O 需求。请使用单通道或扩展。
- RAID50 是提高速度的选项。
同一硬件下RAID50的结果:
-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 1799.496 MB/s
Sequential Write : 3423.066 MB/s
Random Read 512KB : 2450.107 MB/s
Random Write 512KB : 2627.551 MB/s
Random Read 4KB (QD=1) : 77.889 MB/s [ 19016.0 IOPS]
Random Write 4KB (QD=1) : 76.530 MB/s [ 18684.0 IOPS]
Random Read 4KB (QD=32) : 519.356 MB/s [126796.0 IOPS]
Random Write 4KB (QD=32) : 522.408 MB/s [127541.0 IOPS]
Test : 50 MB [E: 0.0% (0.6/14879.9 GB)] (x2)
Date : 2016/09/29 6:41:13
OS : Windows NT 6.2 Server Standard Edition (full installation) [6.2 Build 9200] (x64)
无论如何,我仍在寻找解决方案,以尽可能加快写入访问速度。
关于条纹的深度信息(感谢hurikhan77):
“无论是否使用写入缓存,您绝对不应该在没有电池的情况下使用 RAID-5。任何 RAID 在没有电池缓冲的情况下都可能出现写入漏洞。此外,它将大大提高写入性能。
但是,如果您坚持不使用电池缓冲,请尝试降低条带大小。如果您主要进行随机、小 IO,那么 512k 似乎太大了。在 3x HDD 大小的阵列上,您需要写入 1 MB 的连续块以使 IO 路径饱和。执行较小的 IO 会导致由于读取-修改-写入循环而产生的写入放大。这意味着,您的阵列读取 1 MB 的网络数据,修改 4k,然后需要再次写入 1 MB。添加寻道开销解释了为什么即使是 512k 的性能也如此低(放大倍数为 2,重写数据需要等待盘片几乎转动一圈,每写入 1M 数据增加 8ms 的 IO 等待时间)。实际上,您只能通过这种方式每 16ms 传输 512k,这大约是您得到的结果:小于 32 MB/s(如果您的磁盘有 8ms 的访问时间)。我甚至认为平均访问时间是您在这里最大的问题。获得电池缓冲缓存,没有其他办法。并使用 SSD CacheCade 来减少寻道开销。'