我正在给ServerFault带来一个折磨我6个多月的问题。 我有一台CentOS 6(64位)服务器,配有一个带有2个Samsung 840 Pro SSD(512GB)的md软件raid-1arrays。
问题:
root [〜]#time dd if = arch.tar.gz of = test4 bs = 2M oflag = sync 146 + 1的logging 146 + 1logging 307191761字节(307 MB)复制,23.6788秒,13.0 MB /秒 实际0m23.680s 用户0m0.000s sys 0m0.932s
当做上面的(或任何其他更大的副本)负载刺激到令人难以置信的价值(甚至超过100)从〜1上升。
当做上面的时候,我也注意到了很奇怪的iostat结果:
设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util sda 0.00 1589.50 0.00 54.00 0.00 13148.00 243.48 0.60 11.17 0.46 2.50 sdb 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
它保持这种方式,直到它实际上将文件写入设备(从swap / cache / memory中)。
问题是arrays中的第二个SSD有svctm,比第二个SSD要大100倍。
root [〜]#smartctl --attributes / dev / sda | grep -i穿 177 Wear_Leveling_Count 0x0013 094%094 000预失败总是 - 180 根[〜]#smartctl --attributes / dev / sdb | grep -i穿 177 Wear_Leveling_Count 0x0013 070%070 000预失败始终 - 1005
第一块固态硬盘的磨损为6%,而第二块固态硬盘的磨损为30%!
这就好像arrays中的第二个SSD的工作至less比第一个迭代的iostat(重启后的平均值)所certificate的第一个硬5倍:
设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util sda 10.44 51.06 790.39 125.41 8803.98 1633.11 11.40 0.33 0.37 0.06 5.64 sdb 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
根[〜]#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 autodetect 分区1不结束于柱面边界。 / dev / sda2 * 4196352 4605951 204800 fd Linux raid autodetect 分区2不结束于柱面边界。 / dev / sda3 4605952 814106623 404750336 fd Linux raid autodetect 根[〜]#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 autodetect 分区1不结束于柱面边界。 / dev / sdb2 * 4196352 4605951 204800 fd Linux raid autodetect 分区2不结束于柱面边界。 / dev / sdb3 4605952 814106623 404750336 fd Linux raid autodetect
的/ proc / mdstat root#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 -t / dev / sda / dev / sda上: 定时缓冲磁盘读取:3.00秒内的664 MB = 221.33 MB /秒 根[〜]#hdparm -t / dev / sdb 的/ dev / sdb的: 定时缓冲磁盘读取:3.01秒中的288 MB = 95.77 MB /秒
根[〜]#hdparm --direct -t / dev / sda / dev / sda上: 计时O_DIRECT磁盘读取:3.01秒中的788 MB = 262.08 MB /秒 根[〜]#hdparm --direct -t / dev / sdb 的/ dev / sdb的: 定时O_DIRECT磁盘读取:3.02秒中的534 MB = 176.90 MB /秒
两个testing都增加了,但是/ dev / sdb增加了两倍,而/ dev / sda增加了20%。 我只是不知道该怎么做。
root [/ home2]#dd if = / dev / sda of = / dev / null bs = 1G count = 10 10 + 0的logging 10 + 0logging 10737418240字节(11 GB)复制,38.0855 s,282 MB / s root [/ home2]#dd if = / dev / sdb of = / dev / null bs = 1G count = 10 10 + 0的logging 10 + 0logging 10737418240字节(11 GB)复制,115.24秒,93.2 MB /秒
所以sda比sdb快3倍。 或者也许sdb也做什么除了sda做什么之外。 有什么方法可以查明sdb是否比sda做得更多?
同样,正如瓦格纳先生所build议的那样,我换了2块固态硬盘。 正如他认为会发生的那样,问题从sdb移到了sda。 所以我想我会把RMA之一的SSD。 我想知道笼子是否有问题。
这个数组有什么问题? 请帮忙!
那么最后我想我至less发现了很大一部分问题:arrays中的一个SSD运行起来非常糟糕。 我已经阅读了关于三星840 Pro SSD可靠mdraid性能的报告,但是这个驱动器即使在自己使用时function也很差。 目前我已经通过使用hdparm对SSD进行安全擦除来修复它。 性能没有什么可夸耀的,但它比以前更接近体面:读取大约210-220MB / s,写入大约130-150MB / s(与之前的5-10MB / s相比)。 请注意这是SATA2,最高速度约为240MB / s。
最后,我要感谢瓦格纳先生的build议,交换驱动器certificate照亮。
总之,当你遇到SSD的性能问题时,请考虑安全的擦除! 请注意,安全擦除与格式化不一样。