转载请注明转载自:忆雨林枫

jbd2/dm-0-8消耗IO解决方法

问题
操作系统jbd2/dm-0-N进程占用过多的IO资源,导致数据库性能降低

jbd2/dm-0-N是文件系统的一个日志功能,ext4具备有日志的功能,如果开启了这个日志功能的话,它占用的资源,会随着系统IO压力的增大而增多。尤其是数据库服务器。

解决方案:
关闭ext4文件系统的日志功能。

操作如下:
这里以MySQL数据库服务器,且只有一个系统盘为例。
1.检查是否开启了日志功能

tune2fs -l /dev/mapper/VolGroup-lv_root | grep ‘has_journal’
如果出现has_journal,则表示已经开启了日志功能

2.备份MySQL
3.关闭MySQL,关闭服务器操作系统
4.以单用户模式启动服务器
5.只读方式挂载文件系统:

mount -o remount -o ro /dev/mapper/VolGroup-lv_root

6.去掉文件系统的has_journal属性:

tune2fs -O ^has_journal /dev/mapper/VolGroup-lv_root

7.以读写方式挂载文件系统:

mount -o remount -o rw /dev/mapper/VolGroup-lv_root

8.动态关闭和打开日志功能后可能需要对文件系统进行fsck检查,避免出错

fsck.ext4 -f /dev/sdd1

操作中,当以读写方式挂在文件系统时,可能会与服务器是去连接,同时屏幕可能会停留在

[] ? system_call_fastpath+0x16/0x1b

需等待几分钟,如果还是停留在这个地方,可以强制断开电源,重启。
9.正常开启服务器,并登陆验证日志功能是否已经被关闭。
通过测试对比,关闭改日志功能后,数据库性能可以提升1/4左右。