刚在尝试重现一个bug时,好像在killed mysql一段时间之后,io一直很高,如下:
12:40:01 PM CPU %user %nice %system %iowait %steal %idle
12:50:01 PM all 12.86 0.00 14.40 1.58 0.00 71.16
01:00:01 PM all 13.38 0.00 15.34 1.50 0.00 69.79
01:10:01 PM all 34.34 0.00 21.24 2.13 0.00 42.29
01:20:01 PM all 36.03 0.00 22.13 3.45 0.00 38.40
01:30:01 PM all 36.80 0.00 21.43 2.53 0.00 39.24
01:40:01 PM all 36.86 0.00 20.56 2.26 0.00 40.32
01:50:01 PM all 38.22 0.00 19.26 2.10 0.00 40.41
02:00:01 PM all 36.12 0.00 20.52 1.80 0.00 41.56
02:10:02 PM all 43.75 0.00 20.05 1.97 0.00 34.23
02:20:01 PM all 39.93 0.00 19.16 2.10 0.00 38.81
02:30:01 PM all 43.93 0.00 19.38 5.43 0.00 31.26
02:40:01 PM all 40.27 0.00 21.20 2.21 0.00 36.32
02:50:01 PM all 39.17 0.00 21.56 2.10 0.00 37.16
03:00:01 PM all 48.89 0.00 19.51 4.21 0.00 27.38
03:10:01 PM all 25.04 0.00 16.64 13.96 0.00 44.37
03:20:01 PM all 13.49 0.00 18.75 15.09 0.00 52.67
03:30:01 PM all 12.69 0.00 17.68 15.35 0.00 54.27
03:40:01 PM all 17.22 0.00 13.42 15.50 0.00 53.86
03:50:01 PM all 19.16 0.00 10.48 14.86 0.00 55.49
04:00:01 PM all 11.95 0.00 14.80 15.52 0.00 57.73
iotop了一下,jbd2进程占用大量IO处理,搜索了下,关于jbd2,jbd2是ext4文件系统的一部分。ext4文件系统出现过此bug,bug原理大致是,文件的写和请求会导致其中一个int型的值不断增大,最后增大到超出了自身的范围 —— 变成负值 。就会触发该bug ,而想要达到该值并不容易,需要几个月后才会出现。
解决方法:
1、yum升级kernel ,重启查看是否有效。(在此之前先要做好备机使用的准备工作)
2、重装系统分区,完成后重新挂载数据分区。
3、验证临时补丁的可用性。并在现网修复。
参考:/ext4-jbd2-io-bug/2963.html