必须用iostat -x -p组合才能查看分区级真实负载,因-p展开分区而-x提供%util、await、avgqu-sz等关键瓶颈指标;仅用-p只显示基础吞吐量,无法判断是否过载。

要查看各个独立磁盘分区的负载,关键不是“单独列出每个分区”,而是用 iostat -x -p 组合,让系统自动展开指定磁盘下的所有可见分区,并附带真正可判断瓶颈的扩展指标。
必须加 -x 才能看到有效负载指标
只用 iostat -p 会显示 sda、sda1、sda2 等设备,但只有 r/s、w/s、kB_read/s 这类基础吞吐量数据。这些值高≠有瓶颈——大块顺序读写时它们天然就高。真正反映压力的是:
- %util:若持续 ≥80%,说明该分区所在物理磁盘几乎无空闲窗口
- await:平均每次 I/O 请求耗时(毫秒)。HDD 超过 50ms、SSD 超过 10ms 就需关注
- avgqu-sz:平均队列长度。长期 >2(HDD)或 >1(SSD),代表请求开始排队
用 -p 限定范围,避免信息过载
-p 后可接具体设备名,让输出聚焦在目标磁盘及其分区上:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
iostat -x -p /dev/sda 2:每 2 秒刷新一次,仅显示 sda 及其所有分区(如 sda1、sda2) -
iostat -x -p /dev/nvme0n1 1:适用于 NVMe 盘,同样展开 nvme0n1p1、nvme0n1p2 等 - 不加设备名(
iostat -x -p 2)会列出所有块设备及各自分区,适合初筛,但容易淹没重点
快速定位异常分区的小技巧
当输出行数较多时,用管道过滤能直击问题:
- 查高 %util 分区:
iostat -x -p 2 | grep 'sda[0-9]\+.*[89][0-9]' - 按 await 降序排前 5:
iostat -x -p 1 | awk '$1 ~ /^sd[a-z][0-9]+$/ {print $1, $10}' | sort -k2 -nr | head -5 - 导出 10 次采样到文件(单位 MB/s,更直观):
iostat -x -p -m 2 10 > disk_part_report.txt
注意分区负载的本质来源
分区本身不产生 I/O,它的负载完全来自挂载点上的文件操作。如果发现 sda2 的 %util 异常高,下一步应运行 iotop -oP -d 1,看哪些进程正在大量读写挂载在 /var/log 或 /home 下的路径。脱离挂载点谈分区负载,容易误判根因。

















