SAS RAID5 的正常速度

SAS RAID5 的正常速度

不明白为什么 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

  1. 是的,完全正确。至少我需要启用“写入缓存”和“写回”选项来提高随机数据写入命令的性能。

写缓存的结果:

-----------------------------------------------------------------------
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. 我认为,有时 1 通道 SAS 控制器不足以满足 I/O 需求。请使用单通道或扩展。
  2. 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 来减少寻道开销。'

相关内容