服务器磁盘变慢了:openEuler上用iostat给IO把脉

业务卡了,第一反应往往是"服务器不行了"。但CPU不高、内存也够,问题就很可能落在磁盘 I/O 上:数据库写入排队、日志疯狂刷盘、备份任务和业务抢盘,这些都会把磁盘拖垮。openEuler 官方文档给了一组现成的 I/O 观测工具,学会读数,磁盘瓶颈一眼就能看出来。

源:openEuler 26.09 官方文档

iostat:按磁盘看统计

iostat 可以汇报所有在线磁盘的统计信息。详细显示磁盘信息,以KB为单位显示,以100秒为周期统计(命令本身不会主动停止,需要执行Ctrl+C手动停止):

iostat -d -k -x 100

也可以以1秒为周期统计,总共统计100s,观察负载变化更方便:

iostat -d -k -x 1 100

输出里最值得盯的几列:rKB/s 和 wKB/s 是每秒读写流量;r_await、w_await 是每次读写请求的平均耗时,机械盘平时应在几毫秒量级,持续几十毫秒以上说明盘已经忙不过来;aqu-sz 是请求队列长度,长期堆积就是瓶颈实锤;%util 是磁盘用于 I/O 操作的时间百分比,接近满载意味着这块盘没有余量了。

sar:按采样看趋势

sar 可用于查看系统磁盘的读写性能。显示系统所有硬盘设备在采样时间内的使用状态,每3秒统计一次,统计5次:

sar -d 3 5

它给出的 tps、rKB/s、wKB/s、await、%util 等指标与 iostat 口径相近,好处是可以放进定时任务周期采样,把"故障那一刻"的磁盘表现留成历史记录,事后复盘不用靠回忆。

vmstat:看盘也看整机

vmstat 也能报告磁盘相关统计信息:

vmstat -d

它按每块盘给出读写的总次数、合并次数、扇区数与耗时,还有正在进行的 I/O 数量。怀疑"是磁盘慢还是别的慢"时,把它和 CPU、内存指标放在一起看,能避免冤枉磁盘。

三步定位法

  1. 先看 %util 和队列:%util 长期接近满、aqu-sz 持续大于零,先确认瓶颈在盘上;
  2. 再看 await:读写耗时异常升高,结合当时谁在跑(备份、编译、日志),找出拖盘的进程;
  3. 最后留基线:业务正常时跑一次 iostat 存档,故障时对照,偏差多少一目了然。

观测只是第一步,盘真满了就得扩容或迁移冷数据。中小企业服务器的性能诊断与磁盘扩容,欢迎搜索关注贵州诚鑫致达科技,我们可以上门把整套监控和基线建起来。

企业存储选型参考|贵州诚鑫致达

做机架式部署与数据中心扩容,群晖机型参考:RS2423RP+ · RS1221+ · RS822+。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。

服务区域|贵州诚鑫致达

贵州群晖NAS、贵阳存储、数据备份、信创云盘或 IT 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。凯里(黔东南)、都匀(黔南):企业存储方案与 IT 运维。