CentOS6 和 jbd2/dm-0-8 上的长等待 IO 时间

CentOS6 和 jbd2/dm-0-8 上的长等待 IO 时间

运行 CentOS 6.5 和 2.6.32-431.3.1.el6.i686 内核的 Linux 机器最近由于等待 IO 导致 CPU 峰值高达 99%。

执行

while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done

给我关于那些 CPU 峰值的信息:

root       300  0.0  0.0      0     0 ?        D    10:05   0:00  \_ [jbd2/dm-0-8]

因此我认为这些峰值的来源是 Journal Disk。

我发现这个话题很相似IO 等待导致 Mysql 提交期间速度严重下降(EXT4 JDB2 IO 为 99%)但我不知道在哪里可以找到我的分区是否有日志数据。我的 fstab 看起来像

/dev/mapper/vg_ns01-lv_root /                       ext4    defaults        1 1
UUID=bc042a99-90a1-4d0a-a7b6-4122e9b2a201 /boot                   ext4    defaults        1 2
/dev/mapper/vg_ns01-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_ns01-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

谢谢

答案1

要检查分区是否启用了日志:

tune2fs -l /dev/mapper/vg_ns01-lv_root | grep has_journal

由于我无法禁用根分区上的日志,因此我添加了

noatime,nodiratime,barrier=1,data=ordered

到 fstab 并启用日志写回功能并启用日志数据写回功能

tune2fs -o journal_data_writeback /dev/mapper/vg_ns01-lv_root

因此,到目前为止,我还没有在该分区上等待很长时间的 IO。

相关内容