iostat -n 仅显示逻辑卷名称而非绘图,需配合 sar+ksar、脚本+python/gnuplot 或 prometheus+grafana 实现 io 负载分布可视化。

iostat -N 并不能直接生成“IO负载分布图”,它只是让 iostat 在输出中显示逻辑卷(LVM Logical Volume)的名称(如 /dev/vg01/lv_root),而不是默认只显示底层物理设备(如 /dev/sda)。Linux 原生命令 iostat 本身不支持绘图功能,也没有“分布图”这一输出形式——所谓“图”需借助外部工具(如 gnuplot、grafana、sar + ksar 或脚本+可视化)实现。
不过,你可以分两步达成目标:
✅ 第一步:用 iostat -N 查看按逻辑卷维度的实时/历史 IO 统计
# 安装 sysstat(如未安装) sudo apt install sysstat # Debian/Ubuntu sudo yum install sysstat # RHEL/CentOS
# 显示逻辑卷名称 + 每秒 IO 统计(每2秒刷新,共3次) iostat -N -x 2 3
-
-N:启用 LVM 逻辑卷名称映射(需内核支持且/proc/diskstats中有对应条目) -
-x:显示扩展统计(%util、await、r_await、w_await、svctm 等关键指标) - 输出中设备列会显示类似
vg01-lv_root或/dev/vg01/lv_root(取决于系统配置和iostat版本)
⚠️ 注意:
- 并非所有发行版默认启用 LVM 设备名解析;若
-N无效果,可检查/proc/diskstats是否包含 LV 主次设备号,或尝试升级sysstat >= 12.0.0。 - 部分系统需确保
lvm2工具已安装且dm-mod内核模块已加载。
✅ 第二步:采集数据并生成可视化“分布图”
iostat 本身不绘图,但可配合以下方式生成图表:
▪ 方式一:用 iostat -N -x + sar + ksar(GUI 图形)
# 启用 sysstat 日志收集(编辑 /etc/default/sysstat,设 ENABLED=true) sudo systemctl enable sysstat sudo systemctl start sysstat # sar 默认每10分钟记录一次,也可手动采集: iostat -N -x 1 60 > lv_io.log # 采样60秒,每秒一行(适合短时分析)
然后将 lv_io.log 导入 ksar(Java GUI 工具),它能自动解析 iostat 输出并生成带时间轴的折线图(如 %util、r/s、w/s 按 LV 分组)。
▪ 方式二:用脚本导出 CSV + Python/gnuplot 绘图
# 示例:提取关键字段(设备、读写IOPS、利用率)到 CSV
iostat -N -x 1 10 | awk '/^/dev// {print $1 "," $4 "," $5 "," $14}' > lv_iops.csv
再用 Python(pandas + matplotlib)或 gnuplot 绘制柱状图/热力图,对比各 LV 的 r/s、w/s、%util。
▪ 方式三:对接 Prometheus + Grafana(生产推荐)
- 使用
node_exporter(开启--collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p\d+)$"并确保 LV 被识别) - 查询
node_disk_io_time_seconds_total{device=~".*lv.*"}等指标,在 Grafana 中按device标签分组绘制 IO 负载热力图或 TopN 排行。
? 补充:确认逻辑卷是否被 iostat -N 正确识别
# 查看当前 LV 列表及其主次设备号
sudo lvs -o +maj_min
# 对照 /proc/diskstats 中的设备号
awk '$1 ~ /^[0-9]+$/ && $3 ~ /lv/ {print $3, $4, $5}' /proc/diskstats
若 iostat -N 仍不显示 LV 名,可能是内核未导出符号链接(如 /dev/mapper/vg01-lv_root → /dev/dm-2),此时可临时用 ln -s /dev/dm-2 /dev/vg01-lv_root 并重试(仅测试有效,勿用于生产)。
不复杂但容易忽略的是:iostat -N 是“显示维度”,不是“分析工具”。真正要看清 IO 分布,得结合时间序列采集 + 分组聚合 + 可视化呈现。











