在Linux系统中,尤其是Ubuntu操作系统,了解磁盘I/O性能对于系统管理员和开发者至关重要。本文将带你从零开始,深入浅出地讲解 /proc/diskstats 文件的作用、结构以及如何利用它进行Ubuntu磁盘性能监控和系统性能分析。
/proc/diskstats 是Linux内核提供的一个虚拟文件,位于 /proc 文件系统中。它实时记录了系统中每个块设备(如硬盘、SSD、分区等)的I/O统计信息。这些数据由内核自动收集,无需额外工具即可读取,是进行Linux磁盘统计的重要来源。

执行以下命令可以查看当前系统的磁盘统计信息:
cat /proc/diskstats输出通常如下所示(以sda为例):
8 0 sda 12345 100 200000 5000 6789 200 150000 3000 0 4000 8000每行包含14个字段(较新内核版本),具体含义如下:
我们可以编写一个简单的Bash脚本来实时监控某个磁盘的读写速度。以下是一个示例脚本:
#!/bin/bashDEVICE="sda"INTERVAL=1while true; do # 读取两次数据,间隔1秒 LINE1=$(grep "$DEVICE " /proc/diskstats) sleep $INTERVAL LINE2=$(grep "$DEVICE " /proc/diskstats) # 提取第6列(读扇区数)和第10列(写扇区数) READ1=$(echo $LINE1 | awk '{print $6}') WRITE1=$(echo $LINE1 | awk '{print $10}') READ2=$(echo $LINE2 | awk '{print $6}') WRITE2=$(echo $LINE2 | awk '{print $10}') # 计算每秒读写字节数(扇区 * 512 / 秒) READ_BYTES=$(( (READ2 - READ1) * 512 / INTERVAL )) WRITE_BYTES=$(( (WRITE2 - WRITE1) * 512 / INTERVAL )) echo "$(date): Read: $READ_BYTES B/s, Write: $WRITE_BYTES B/s"done保存为 diskmon.sh,赋予执行权限后运行:
chmod +x diskmon.sh./diskmon.sh虽然 iostat、iotop 等工具更直观,但它们底层也依赖 /proc/diskstats。直接读取该文件的优势在于:
/proc/diskstats 是进行 Ubuntu磁盘性能监控 和 系统性能分析 的基础数据源。通过理解其字段含义并结合简单脚本,你可以轻松掌握磁盘I/O动态。无论是排查性能瓶颈,还是构建自动化监控系统,这项技能都不可或缺。
希望这篇教程能帮助你掌握 Linux磁盘统计 的核心方法。如果你有任何问题,欢迎在评论区留言交流!
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251211078.html