当前位置:首页>Linux>被大部分运维忽略的Linux冷门命令:ionice,专治服务器磁盘IO卡顿

被大部分运维忽略的Linux冷门命令:ionice,专治服务器磁盘IO卡顿

  • 2026-09-10 13:08:22
被大部分运维忽略的Linux冷门命令:ionice,专治服务器磁盘IO卡顿

做linux运维,排查卡顿我们都有固定套路:top看cpu、free看内存、iostat看磁盘。但很多人都遇到过无解的线上故障:cpu、内存空闲充足,负载正常,网站、数据库却莫名卡顿,ssh操作延迟严重。

这类问题90%的根源不是资源不足,而是后台低优先级任务抢占了磁盘io。文件备份、日志清理、数据同步等进程跑满磁盘读写,直接阻塞数据库、业务接口的核心io请求。一般排查io问题我们都是按照以下步骤进程处理:

#1.查看磁盘io使用率iostat -x 1#重点关注:%util(使用率)、await(平均等待时间)#2.查看哪个进程在疯狂读写iotop#或pidstat -d 1#3.查看进程的io优先级ionice -p 进程pid

当上述指标出现以下情况,可以考虑使用ionice。

#如果同时满足以下条件,就需要 ionice:#1.iostat 显示 %util > 70%#2.await > 20ms#3.但cpu和内存都很空闲

ionice是linux内置io实战神器。它专门管控进程磁盘io优先级,冷门但高效,能彻底解决无征兆io抢占卡顿。

一、ionice核心功能

简单来说:nice 管cpu,ionice管磁盘io。

磁盘io是服务器核心瓶颈,属于单通道资源,一旦被非核心任务占满,核心业务必然受阻。ionice的核心价值就是给进程划分io权限等级,强制保障业务进程优先读写,限制后台任务抢占资源。

二、ionice的三种调度等级

ionice将进程io分为三个等级,优先级从高到低,日常只用懂后两种即可:

1. 实时优先级 -c 1

系统最高io权限,会抢占所有磁盘资源,极易导致系统卡死、业务雪崩。生产环境非紧急故障修复,一般禁止使用。

2. 最佳努力 -c 2(系统默认)

所有进程默认等级,支持0-7级精细化权重(0最高、7最低),适合微调普通业务进程的io优先级。BE=best-effort(尽力服务调度,linux 默认io调度分类)。

3. 空闲优先级 -c 3

最安全的低优先级模式,进程仅在磁盘完全空闲、无核心业务读写时运行。能够适配备份、迁移、日志清理等后台任务,零影响线上业务,这个是我们日常运维使用最多的。

三、ionice的实战命令

1、查看进程io优先级

#查看单个进程io优先级ionice -p 进程pidionice -p 5152

2、新建任务,直接限制低io优先级

执行后台任务时提前降级,从根源避免io抢占:

#低优先级打包备份ionice -c 3 tar -zcvf data_backup.tar.gz /data/ceshi#低优先级本地目录同步ionice -c 3 rsync -av /data /backup#低优先级跨机器远程同步ionice -c 3 rsync -av /data root@xxx.xxx.xxx.xxx:/backup#低优先级过期日志删除,大量小文件删除耗ioionice -c 3 rm -rf /var/log/old/*

3、动态调整运行中进程io优先级

无需重启进程,在线修复卡顿进程,适配线上紧急调优:

#将指定pid进程改为空闲io优先级ionice -c 3 -p 6757#将进程设为默认模式最低权重,彻底让步资源ionice -c 2 -n 7 -p 6757#核心业务进程拉高io优先级,优先抢占资源ionice -c 2 -n 0 -p 6757
  • -c 2:best-effort默认io调度类别(绝大多数业务默认类别);
  • -n 7:BE分级范围0(最高)~7(最低),n7是BE模式下io权重底线;
  • -c2 -n7(BE最低)有业务io时优先业务;系统轻微空闲就可以跑自己,不会卡死,适合日常备份、同步;
  • -c3 idle(空闲级):必须整机磁盘完全无其他 BE/RT IO 才允许读写,io打满时进程长期停滞,适合非紧急离线任务。

四、3个高频生产落地场景

场景1:定时备份不影响早高峰业务

做运维的都知道,我们很多备份任务在凌晨跑,如果备份任务比较大,有时候凌晨备份任务未跑完,会和早高峰业务抢io,导致早高峰接口卡顿。在定时任务中加入ionice,全程静默运行:

0 1 * * * ionice -c 3 /usr/bin/backup.sh
  • 运行逻辑:让任务在凌晨空闲全速备份;到早高峰业务io上来,备份任务直接暂停io,等业务闲了继续跑,完美规避早高峰io冲突。
  • 适用场景:定时备份、全库dump、大文件打包。

场景2:全天候数据迁移、文件同步

常规数据迁移必须避开业务高峰期,限制io优先级后,可7×24小时随时迁移,不影响线上服务。

#后台长驻同步nohup nice -n19 ionice -c2 -n7 rsync -av 源 目标 &
  • 业务逻辑:业务高峰优先业务占用io,同步吃剩余闲置带宽、缓慢跑;业务低峰空闲时全速同步,不用等到凌晨窗口期,支持全天候迁移。
  • 适用场景:存量数据迁移、实时目录同步。
  • -n 19:cpu最低优先级,有别的进程要用cpu,它就让资源。

场景3:日志批量清理、压缩

日志批量操作易产生io峰值,拖慢数据库读写。统一配置空闲优先级,避免突发卡顿。

临时定时清理ionice -c3

30 2 * * * ionice -c3 find /var/log -name "*.old" -delete

五、日常注意事项

1. 严禁滥用实时模式:-c 1优先级过高,极易造成业务雪崩,日常运维禁用;

2. 适用范围有限:仅对普通文件io生效,对数据库裸设备直写、绕过系统调度的操作无明显效果;

3. 优先级临时生效:进程、服务器重启后配置失效,长期使用需写入脚本或定时任务;

4. 最佳调优组合:nice限制cpu+ionice限制io,双重管控后台任务,服务器稳定性大幅提升。

大多数运维只会用常规命令排查问题,而ionice 是解决隐性io卡顿的最优解。它没有复杂配置,却能精准解决线上高频疑难问题,是资深运维的必备细节技巧。如果觉得文章对你的运维工作有帮助,记得点赞加收藏。

#运维#linux运维#ionice命令
这个Linux命令,能从内核层面保护你的文件不被误删
Linux运维7大高危操作!90%线上事故都栽在这些低级错误上
告别繁琐排查:pidstat全维度排障指南,效率翻倍!

最新文章

随机文章