深入理解Ubuntu磁盘性能(/proc/diskstats磁盘统计详解)

来源:这里教程网 时间:2026-03-28 22:20:31 作者:

在Linux系统中,尤其是Ubuntu操作系统,了解磁盘I/O性能对于系统管理员和开发者至关重要。本文将带你从零开始,深入浅出地讲解 /proc/diskstats 文件的作用、结构以及如何利用它进行Ubuntu磁盘性能监控系统性能分析

什么是 /proc/diskstats?

/proc/diskstats 是Linux内核提供的一个虚拟文件,位于

/proc
文件系统中。它实时记录了系统中每个块设备(如硬盘、SSD、分区等)的I/O统计信息。这些数据由内核自动收集,无需额外工具即可读取,是进行Linux磁盘统计的重要来源。

/proc/diskstats 的字段含义

执行以下命令可以查看当前系统的磁盘统计信息:

cat /proc/diskstats

输出通常如下所示(以sda为例):

   8       0 sda 12345 100 200000 5000 6789 200 150000 3000 0 4000 8000

每行包含14个字段(较新内核版本),具体含义如下:

主设备号(major):设备的主设备号,如8代表SCSI/SATA设备。 次设备号(minor):设备的次设备号。 设备名称(device name):如 sda、sdb、nvme0n1 等。 读完成次数(reads completed successfully):成功完成的读操作次数。 合并读操作次数(reads merged):被合并的读请求数(提高效率)。 读扇区数(sectors read):总共读取的扇区数(每个扇区通常512字节)。 读耗时(ms spent reading):读操作花费的总时间(毫秒)。 写完成次数(writes completed):成功完成的写操作次数。 合并写操作次数(writes merged):被合并的写请求数。 写扇区数(sectors written):总共写入的扇区数。 写耗时(ms spent writing):写操作花费的总时间(毫秒)。 正在进行的I/O数(I/Os currently in progress):当前正在处理的I/O请求数。 I/O总耗时(ms spent doing I/Os):所有I/O操作累计耗时(毫秒)。 加权I/O耗时(weighted ms spent doing I/Os):考虑队列深度的加权时间,用于计算I/O延迟。

实战:用脚本监控磁盘I/O

我们可以编写一个简单的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磁盘统计 的核心方法。如果你有任何问题,欢迎在评论区留言交流!

相关推荐

热文推荐