当前位置: 首页 > news >正文

Ubuntu 磁盘 I/O 监控完全指南

Ubuntu 磁盘 I/O 监控完全指南

在 Ubuntu 中监控磁盘 I/O 性能有多种工具和方法,下面是最全面的解决方案:

🔧 1. 使用 iostat(实时监控)

安装 sysstat 包

sudo apt update
sudo apt install sysstat

基本用法

# 显示所有磁盘的 I/O 统计
iostat -dx 1# 每2秒刷新,显示5次
iostat -dx 2 5

输出解释

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00   16.00     0.00     0.00     0.00     0.00    0.25    0.00    0.25   0.25   0.40
vdb               0.00    17.00   79.00  101.00 14416.00  3908.00   203.60    10.98   66.12   73.04   60.70   5.52  99.30
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-2              0.00     0.00   79.00  108.00 14416.00  3716.00   193.93    11.39   65.81   73.04   60.52   5.31  99.30
  • %util:磁盘利用率(接近100%表示饱和)
  • await:平均 I/O 响应时间(ms)
  • rkB/s, wkB/s:读写速度(KB/s)
  • avgqu-sz:平均队列长度
1. ​vdb 设备分析(主要问题设备)

关键问题点:

  1. %util = 99.30%​​:磁盘利用率接近100%,表明磁盘已完全饱和
  2. ​avgqu-sz = 10.98​:平均队列长度超过10,表示大量 I/O 请求在排队
  3. ​await = 66.12ms​:平均 I/O 响应时间过高(理想值应 < 10ms)
  4. ​r_await = 73.04ms​:读操作延迟特别高
  5. ​svctm = 5.52ms​:实际服务时间较长(SSD 应 < 1ms,HDD < 10ms)
dm-2 设备分析(LVM/设备映射层)​

与 vdb 几乎相同的指标,表明 dm-2 是 vdb 的映射设备
同样显示 99.3% 的利用率和高延迟

🔍 问题诊断
  1. 磁盘饱和​:vdb 和 dm-2 的 %util 持续在 99.3%,表明磁盘已成为系统瓶颈
  2. ​读操作问题​:读延迟 (73ms) 显著高于写延迟 (60ms),读操作是主要瓶颈
  3. ​高队列深度​:平均队列长度 >10,表明 I/O 请求积压严重
  4. ​可能的硬件问题​:
    如果是 SSD:svctm 5.52ms 过高,可能磁盘磨损或配置问题
    如果是 HDD:属于正常范围,但性能不足
🚀 优化建议
# 检查磁盘类型
sudo hdparm -I /dev/vdb | grep "Model"# 如果是HDD:
sudo apt install ioping
sudo ioping -c 10 /dev/vdb  # 测试延迟# 建议方案:
#   - 升级为SSD(NVMe最佳)
#   - 增加磁盘数量,使用RAID 0/10
#   - 添加更多内存作为缓存

📊 2. 使用 iotop(进程级监控)

安装

sudo apt install iotop

使用

# 实时监控进程 I/O
sudo iotop# 只显示有 I/O 的进程
sudo iotop -o# 按 I/O 排序
sudo iotop -o -P

输出示例

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND1234 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u8:2]

📈 3. 使用 vmstat(系统级监控)

# 每1秒刷新,显示10次
vmstat 1 10# 带磁盘统计
vmstat -d 1

关键指标

  • bi:块设备接收的块数(读)
  • bo:块设备发送的块数(写)

🛠 4. 使用 dstat(多功能监控)

安装

sudo apt install dstat

使用

# 综合监控(CPU、磁盘、网络等)
dstat -cdlmnpsy# 只监控磁盘
dstat -d# 按进程监控
dstat --top-bio

📋 5. 查看 /proc 文件系统

实时 I/O 统计

cat /proc/diskstats

每个设备的详细统计

cat /sys/block/sda/stat

📉 6. 使用 sar(历史数据分析)

配置数据收集

sudo nano /etc/default/sysstat
# 修改 ENABLED="true"
sudo systemctl enable sysstat
sudo systemctl start sysstat

查看历史数据

# 查看今天的磁盘报告
sar -d# 查看特定日期(2025年10月10日)
sar -d -f /var/log/sysstat/sa10

📊 7. 图形化工具

1. GNOME 系统监视器

gnome-system-monitor
  • 在"资源"选项卡查看磁盘活动

2. KSysGuard (KDE)

ksysguard

3. Netdata(实时仪表盘)

# 安装
bash <(curl -Ss https://my-netdata.io/kickstart.sh)# 访问
http://localhost:19999

🔍 8. 高级诊断工具

1. blktrace(块级跟踪)

sudo apt install blktrace
sudo blktrace -d /dev/sda -o - | blkparse -i -

2. ioping(延迟测试)

sudo apt install ioping
sudo ioping -c 10 /dev/sda

3. fio(压力测试)

sudo apt install fio
fio --name=test --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4

📌 常用命令速查表

命令功能示例
iostat -dx 1实时磁盘统计iostat -dx 1
iotop -o实时进程 I/Osudo iotop -o
vmstat 1系统资源概览vmstat 1
dstat -d磁盘活动监控dstat -d
sar -d历史磁盘报告sar -d
hdparm -tT磁盘速度测试sudo hdparm -tT /dev/sda

💡 性能分析技巧

  1. 识别瓶颈

    • 如果 %util > 80%,磁盘是瓶颈
    • 如果 await > 10ms,可能存在 I/O 延迟问题
  2. 优化建议

    # 使用 noatime 挂载选项
    sudo nano /etc/fstab
    # 修改为: /dev/sda1 / ext4 defaults,noatime 0 1# 调整 I/O 调度器
    echo deadline | sudo tee /sys/block/sda/queue/scheduler# 增加预读
    echo 1024 | sudo tee /sys/block/sda/queue/read_ahead_kb
    
  3. 监控脚本示例

    #!/bin/bash
    # 监控磁盘 I/O 并记录到文件
    while true; doecho "===== $(date) =====" >> disk_io.logiostat -dx 1 1 >> disk_io.logiotop -botqq -n 1 >> disk_io.logsleep 5
    done
    

📊 性能指标解读指南

指标正常范围警告阈值危险阈值含义
%util< 60%60-80%> 80%磁盘利用率
await< 10ms10-20ms> 20ms平均 I/O 响应时间
avgqu-sz< 11-2> 2平均队列长度
rkB/s + wkB/s---总吞吐量
svctm< 5ms5-10ms> 10ms平均服务时间

📝 总结

  1. 实时监控:使用 iostatiotop
  2. 历史分析:使用 sar 查看历史数据
  3. 进程级诊断iotopdstat --top-bio
  4. 深度分析:使用 blktrace 进行块级跟踪
  5. 图形界面:GNOME 系统监视器或 Netdata

通过这些工具的组合使用,您可以全面了解 Ubuntu 系统的磁盘 I/O 性能,及时发现并解决性能瓶颈问题。

http://www.dtcms.com/a/471355.html

相关文章:

  • wordpress完美迁站教程代理网络工具
  • XR + 文旅:虚实共生,重塑时空,XR技术如何开启文旅产业的新纪元
  • 为网站做一则广告dedecms网站地图模板怎么
  • 前端常用框架及优缺点
  • 使用php做的网站mvc net跳转到另一网站
  • TCP/MQTT简单介绍
  • wordpress加载单页面内容seo如何去做优化
  • 网站建设制作公司都选万维科技做SEO用dede还是wordpress
  • 中山做网站优化赣州网上房地产官网
  • 庐江网站制作手机自媒体网站模板
  • 建网页网站广东推广网络
  • 黑龙江建设集团网站阿里云 cdn wordpress
  • csdn| MySQL
  • 用shopify 做网站空白的网站怎么建设
  • 在直播网站做前端注意营销型网站建设设计服务
  • 一个空间可以做几个网站seo网站排名优化工具
  • 高端网站建设与发展wordpress建站博客园
  • 如何做自己的播报网站初二信息课网站怎么做
  • 构建AI智能体:六十、特征工程行业实践录:金融、电商、医疗的智能化转型
  • 网站建设源码导入福州网站开发cms
  • 软件安装管理
  • 创意产品网站重庆网站
  • 外包做的网站可以直接去收录吗做网站公众号要多少钱
  • 大兴企业官网网站建设咨询python免费看电影的应用
  • Koa.js 完全指南:下一代 Node.js Web 框架
  • PK10如何自己做网站个人网站建立 学生
  • 为什么网站之有首页被收录常见的网站名称有哪些
  • wordpress 设置常规站点地址官方网站建设报价表
  • 找一款手机上使用比较简约的备忘录工具
  • 企业网站建设怎么策划兰州网站建设和维护工作