使用三星 840 Pro SSD 构建的软件 raid1 阵列出现各种问题

使用三星 840 Pro SSD 构建的软件 raid1 阵列出现各种问题

我将一个困扰我 6 个多月的问题提交给 ServerFault。我有一台 CentOS 6(64 位)服务器,带有一个 md 软件 raid-1 阵列,其中有 2 个三星 840 Pro SSD(512GB)。

问题:

  • 严重的写入速度问题:
root [~]# time dd if=arch.tar.gz of=test4 bs=2M oflag=sync
146+1 条记录
146+1 条记录
已复制 307191761 字节(307 MB),耗时 23.6788 秒,13.0 MB/s

实际 0m23.680s
用户 0分0.000秒
系统 0分0.932秒
  • 当执行上述操作(或任何其他较大的复制)时,负载会从~1 上升到令人难以置信的值(甚至超过 100)。

  • 当执行上述操作时,我还注意到非常奇怪的 iostat 结果:

设备:rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
沙特阿美 0.00 1589.50 0.00 54.00 0.00 13148.00 243.48 0.60 11.17 0.46 2.50
常度存款 0.00 1627.50 0.00 16.50 0.00 9524.00 577.21 144.25 1439.33 60.61 100.00
md1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
md2 0.00 0.00 0.00 1602.00 0.00 12816.00 8.00 0.00 0.00 0.00 0.00
md0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

它会一直保持这种状态直到真正将文件写入设备(从交换/缓存/内存中)。

问题是阵列中的第二个 SSD 的 svctm 和 await 比第二个大约大 100 倍。

  • 由于某种原因,阵列中的两个成员的磨损程度不同
root [~]# smartctl --attributes /dev/sda | grep -i wear
177 Wear_Leveling_Count 0x0013 094% 094 000 始终预故障 - 180
root [~]# smartctl --attributes /dev/sdb | grep -i wear
177 Wear_Leveling_Count 0x0013 070% 070 000 始终预故障 - 1005

第一个SSD的磨损率为6%,而第二个SSD的磨损率为30%!!

这就像阵列中的第二个 SSD 的工作强度至少是第一个的 5 倍,这已由 iostat 的第一次迭代证明(自重启以来的平均值):

设备:rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
平均日均值 10.44 51.06 790.39 125.41 8803.98 1633.11 11.40 0.33 0.37 0.06 5.64
平均存款准备金率 9.53 58.35 322.37 118.11 4835.59 1633.11 14.69 0.33 0.76 0.29 12.97
md1 0.00 0.00 1.88 1.33 15.07 10.68 8.00 0.00 0.00 0.00 0.00
md2 0.00 0.00 1109.02 173.12 10881.59 1620.39 9.75 0.00 0.00 0.00 0.00
md0 0.00 0.00 0.41 0.01 3.10 0.02 7.42 0.00 0.00 0.00 0.00
  • 我尝试过的方法:我已将固件更新为 DXM05B0Q(根据报告,更新后 840Ps 的性能显著改善)。我在 dmesg 中查找了“硬重置链接”以检查电缆/背板问题,但一无所获。我检查了对齐,我相信它们对齐正确(1MB 边界,下面列出)我检查了 /proc/mdstat,阵列是最佳的(下面第二个列表)。
根 [~]# fdisk -ul /dev/sda
磁盘 /dev/sda:512.1 GB,512110190592 字节
255 个磁头,63 个扇区/磁道,62260 个磁柱,总共 1000215216 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x00026d59

设备启动开始结束块ID系统
/dev/sda1 2048 4196351 2097152 fd Linux raid 自动检测
分区 1 未在圆柱边界上结束。
/dev/sda2 * 4196352 4605951 204800 fd Linux raid 自动检测
分区 2 未在圆柱边界上结束。
/dev/sda3 4605952 814106623 404750336 fd Linux raid 自动检测


根 [~]# fdisk -ul /dev/sdb
磁盘 /dev/sdb:512.1 GB,512110190592 字节
255 个磁头,63 个扇区/磁道,62260 个磁柱,总共 1000215216 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x0003dede

设备启动开始结束块ID系统
/dev/sdb1 2048 4196351 2097152 fd Linux raid 自动检测
分区 1 未在圆柱边界上结束。
/dev/sdb2 * 4196352 4605951 204800 fd Linux raid 自动检测
分区 2 未在圆柱边界上结束。
/dev/sdb3 4605952 814106623 404750336 fd Linux raid 自动检测
/proc/mdstat
根# cat /proc/mdstat
人物 : [raid1]
md0 :活动 raid1 sdb2[1] sda2[0]
204736 块超级 1.0 [2/2] [UU]

md2 :活动 raid1 sdb3[1] sda3[0]
404750144 块超级 1.0 [2/2] [UU]

md1 :活动 raid1 sdb1[1] sda1[0]
2096064 块超级 1.1 [2/2] [UU]

未使用的设备:
  • 使用 hdparm 运行读取测试
root [~]# hdparm -t /dev/sda
/dev/sda:
 缓冲磁盘读取时间:3.00 秒内 664 MB = 221.33 MB/秒

root [~]# hdparm -t /dev/sdb
/dev/sdb:
 缓冲磁盘读取时间:3.01 秒内读取 288 MB = 95.77 MB/秒
  • 但是看看如果我添加--direct 会发生什么
root [~]# hdparm --direct -t /dev/sda

/dev/sda:
 计时 O_DIRECT 磁盘读取:3.01 秒内读取 788 MB = 262.08 MB/秒
root [~]# hdparm --direct -t /dev/sdb

/dev/sdb:
 计时 O_DIRECT 磁盘读取:3.02 秒内读取 534 MB = 176.90 MB/秒

两次测试都增加了,但 /dev/sdb 增加了一倍,而 /dev/sda 增加了大约 20%。我真不知道该怎么解释。

  • 正如瓦格纳先生所建议的,我这次用 dd 做了另一次读取测试,并证实了 hdparm 测试:
root [/home2]# dd if=/dev/sda of=/dev/null bs=1G count=10
10+0 条记录
10+0 条记录
复制了 10737418240 字节 (11 GB),耗时 38.0855 秒,282 MB/s

root [/home2]# dd if=/dev/sdb of=/dev/null bs=1G count=10
10+0 条记录
10+0 条记录
复制了 10737418240 字节 (11 GB),耗时 115.24 秒,93.2 MB/s

所以 sda 比 sdb 快 3 倍。或者 sdb 除了 sda 所做的之外还做了其他事情。有没有办法找出 sdb 所做的是否比 sda 做的更多?

  • 更新

再次,按照 Wagner 先生的建议,我交换了 2 个 SSD。正如他所想的那样,问题从 sdb 转移到了 sda。所以我想我会将其中一个 SSD 退回。我想知道笼子是否有问题。

这个数组有什么问题?请帮忙!

答案1

最后,我想我至少发现了问题的很大一部分:阵列中的一个 SSD 运行非常糟糕。我已经阅读了足够多的有关三星 840 Pro SSD 的 mdraid 性能不佳的报告,但即使单独使用,这个驱动器的运行也非常糟糕。目前,我通过使用 hdparm 对有问题的 SSD 执行安全擦除来修复它。性能没有什么可吹嘘的,但它比以前更接近体面:读取速度约为 210-220MB/s,写入速度约为 130-150MB/s(而之前写入速度为 5-10MB/s)。请注意,这是在 SATA2 上,最高速度约为 240MB/s。

最后,我要感谢瓦格纳先生,他提出的更换驱动器的建议非常有启发性。

总之,当您的 SSD 出现性能问题时,请考虑安全擦除!请注意,安全擦除与格式化不同。

相关内容