我有一台运行CentOS 6的服务器,在mdadm RAID1中configuration了两个Crucial M500固态硬盘。 这台服务器也是用Xen虚拟化的。
最近,我开始看到iowait百分比在我们的生产虚拟机的top -c数据中不断攀升。 我决定调查并在dom0上运行iostat,以便检查物理磁盘上的活动(例如/ dev / sda和/ dev / sdb)。 这是我用的命令: iostat -d -x 3 3
以下是我收到的输出示例(滚动到%util数字的右侧):
Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.33 0.00 38.67 0.00 337.33 8.72 0.09 2.22 0.00 2.22 1.90 7.33 sdb 0.00 0.33 0.00 38.67 0.00 338.00 8.74 1.08 27.27 0.00 27.27 23.96 92.63 md2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 md1 0.00 0.00 0.00 1.00 0.00 8.00 8.00 0.00 0.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 0.00 0.00 md127 0.00 0.00 0.00 29.33 0.00 312.00 10.64 0.00 0.00 0.00 0.00 0.00 0.00 drbd5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 drbd3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 drbd4 0.00 0.00 0.00 8.67 0.00 77.33 8.92 2.03 230.96 0.00 230.96 26.12 22.63 dm-0 0.00 0.00 0.00 29.67 0.00 317.33 10.70 5.11 171.56 0.00 171.56 23.91 70.93 dm-1 0.00 0.00 0.00 8.67 0.00 77.33 8.92 2.03 230.96 0.00 230.96 26.12 22.63 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-6 0.00 0.00 0.00 20.00 0.00 240.00 12.00 3.03 151.55 0.00 151.55 31.33 62.67 dm-7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-11 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
对于我的警报,我注意到在await (2ms vs 27ms)和%util (7%vs 92%) /dev/sda和/dev/sdb之间存在显着差异。 这些驱动器是彼此镜像,是相同的Crucial M500固态硬盘,所以我不明白这可能是如何。 /dev/sda上没有活动,不应该在/dev/sdb上发生。
我经常检查这两个磁盘的SMART值,我注意到/dev/sda的Percent_Lifetime_Used表示使用了66%,而/dev/sdb报告了一个非感性的值(使用了454%)。 在此之前,我一直没有太在意,因为Reallocated_Event_Count对于两个驱动器都保持相对较低的状态,并且没有很快改变。
/ dev / sda的SMART值
/ dev / sdb的SMART值
我们的/dev/sdb磁盘可能会有硬件问题吗? 任何其他可能的解释?
我最终发现这个系统并没有被正确的裁剪,也没有被过度configuration(尽pipeCrucial M500内置了7%的二级过度configuration)。 两者的结合导致写入放大的严重情况。
而且,这个系统内有一个非常高的写入活动的数据库,导致大量的小随机写入。 这种IO活动的写作放大效果很差 。
我仍然不能100%确定为什么/dev/sda比iostat中的/dev/sdb执行得更好 – 或许它类似于硅片抽签 ,其中/dev/sda比/dev/sdb稍微优越so /dev/sdb首先/dev/sdb瓶颈。
对我们来说,两大要点是: