我有一台运行 CentOS 6 的服务器,在 mdadm RAID1 中配置了两个 Crucial M500 SSD。该服务器也使用 Xen 进行虚拟化。
最近,我开始看到生产虚拟机的统计数据iowait
中百分比逐渐上升top -c
。我决定进行调查,并在 dom0 上运行 iostat,以便检查物理磁盘(例如 /dev/sda 和 /dev/sdb)上的活动。这是我使用的命令:iostat -d -x 3 3
这是我收到的输出示例(向右滚动查看%util
数字):
Device: rrqm/s wrqm/s r/s w/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
/dev/sda
令我感到震惊的是,我注意到和/dev/sdb
之间存在显著差异await
(2ms vs 27ms)和%util
(7% vs 92%)。这些驱动器是彼此的镜像,并且是相同的 Crucial M500 SSD,所以我不明白这是怎么回事。 上没有不/dev/sda
应该发生在 上的活动/dev/sdb
。
我定期检查这两个磁盘的 SMART 值,我注意到 表示Percent_Lifetime_Used
已/dev/sda
使用 66%,而/dev/sdb
报告的值却毫无意义(已使用 454%)。在此之前,我并没有太担心,因为 这Reallocated_Event_Count
两个驱动器的 一直保持相对较低,并且变化不大。
我们的磁盘可能存在硬件问题吗/dev/sdb
?还有其他可能的解释吗?
答案1
我最终发现,该系统没有被正确 TRIM,并且分区时也没有足够的过度配置(尽管 Crucial M500 有 7%2 级过度配置内置)。两者的结合导致了严重的写入放大。
此外,该系统的数据库具有非常高的写入活动,从而导致大量小的随机写入。这种 IO 活动具有结果很差具有写入放大功能。
我仍然不能 100% 地确定为什么它/dev/sda
比 iostat 表现更好/dev/sdb
——也许它类似于硅彩票首先,哪里比哪里/dev/sda
略胜一筹。/dev/sdb
/dev/sdb
对于我们来说,两个主要收获是:
- 为您的 SSD 超额配置 20%(考虑到您的 SSD 可能已经0%、7% 或 28%2 级过度配置)。
- 每周运行一次 TRIM。