Linux 软件 raid10,相同的机器,结果却大不相同

Linux 软件 raid10,相同的机器,结果却大不相同

我在两台其他方面完全相同的机器上发现了截然不同的软件 raid10 性能和行为。

我有两台硬件相同的机器,同时购买,具有相同的软件版本、硬件版本和固件版本。每台机器都有一个 SAS 控制器,带有 8 x 6 Gb/s 通道,可连接到一个可容纳 12 个 SAS 磁盘的 SAS 机箱。

在机器 1 上,它运行稳定,似乎运行完美,RAID 阵列中的每个磁盘的行为或多或少相同:繁忙时间相等(在生产负载级别中所有磁盘的繁忙时间约为 33%),并且在每周软件 RAID 检查运行时,写入和读取性能不会降低。完整的 RAID 检查大约需要一天时间才能完成,使用所有可用的备用带宽尽快完成。在检查完成时,这相当于大约 200 MB/秒的读取速度。

机器 2 是个问题机器。尽管配置为使用所有可用磁盘带宽,但完整的 raid 检查基本上永远无法完成。在尝试检查时,它以 5 MB/秒的速度缓慢运行,在此期间写入性能下降到大约 30 MB/秒。此外,四个磁盘的繁忙度为 35%,而其余磁盘的繁忙度平均为 22%。

在机器2上取消raid检查后,写入速度恢复到160MB/秒左右。

如果我用dd它来测试每个单独的mpath设备,在机器 1 上,我得到的大多数速度是每个驱动器 145 MB/秒左右的读取速度,最低速度为 119 MB/秒,其次是 127 MB。其余的都在 145 MB/秒范围内。

在机器 2 上,我获得的速度在 107 MB(x 3 个磁盘)之间,其余的速度都高于 135 MB/秒,其中一个磁盘的峰值为 191 MB/秒(!)。

我承认我在这方面做得很不尽如人意,但我找不到任何证据来得出结论。我还检查了两台机器上每个磁盘的 SMART 统计数据,虽然所有磁盘上都有相当数量的“读取更正”错误,但这些值与读取性能之间似乎没有关联,忙闲百分比差异之间也没有关联。

我找不到任何可以解释为什么在一个盒子上执行 RAID 检查时性能不佳的原因,而在另一个盒子上执行时性能不佳。如果能提供下一步该如何调试的建议,我将不胜感激。

答案1

我找到了问题所在。软件阵列中的 12 个磁盘中有 4 个禁用了写入缓存。

以下是我为缩小范围所采取的措施:

我将阵列拆开,使用 dd 和 oflag=direct 测试每个磁盘的写入速度。我发现繁忙百分比较高的磁盘也只能写入大约 75 MB/秒,而其他所有磁盘在持续写入 1 GB 和 10 GB 数据大小时都可以达到 180 MB/秒。

但是,由于 4 个慢速磁盘彼此都非常一致,我开始深入研究并安装,sdparm以便我摆弄 SCSI 参数页面。

当我看到 WCE(写入缓存启用)默认处于开启状态,但这四个磁盘已将其关闭时,我将其打开。写入速度上升到 180 MB/秒,阵列现在以 1 GB/秒的速度重建(这大约是这组磁盘使用此控制器可以达到的最大速度。)

检查命令是sdparm --get=WCE /dev/mapper/mpatha并进行设置,sdparm --set=WCE --save /dev/mapper/mpatha以供将来的用户使用。

此外,还开启了省电功能 - 这可以防止操作系统级别缓存来保持速度,尽管 oflag=direct 仍然可以做到。

相关内容