lsblk -J 是获取结构化磁盘拓扑 JSON 的最简洁可靠方式,自 util-linux 2.24+ 支持,输出含 name/type/fstype/mountpoint/children 等字段,适配前端可视化,需注意老系统兼容性及增强参数使用。

lsblk -J 是 Linux 下直接获取结构化磁盘拓扑 JSON 数据最简洁可靠的方式,无需额外解析或拼接,输出即为标准 JSON,天然适配前端可视化监控面板(如 Grafana、Vue/React 自研面板)。
确保系统支持 -J 选项
该功能自 util-linux 2.24+ 版本起引入。较老发行版(如 CentOS 7 默认 util-linux 2.23)不支持 -J,需升级或改用替代方案:
- 检查版本:lsblk --version,确认 ≥ 2.24
- CentOS 7 可启用 EPEL 并升级:yum install epel-release && yum update util-linux
- Ubuntu 16.04+、RHEL 8+、Debian 9+ 均原生支持
基础用法与字段说明
执行 lsblk -J 即可输出完整设备树 JSON,包含块设备层级关系(如磁盘 → 分区 → LVM 逻辑卷 → 加密层 → 挂载点):
- “name”:设备名(如 sda、nvme0n1p1)
- “type”:device / part / lvm / crypt / rom 等类型标识
- “fstype”:文件系统类型(ext4、xfs、btrfs、crypto_LUKS)
- “mountpoint”:挂载路径(null 表示未挂载)
- “children”:嵌套子设备数组,体现物理/逻辑层级
示例片段:{"name":"sda","type":"disk","children":[{"name":"sda1","type":"part","fstype":"ext4","mountpoint":"/"}]}
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
立即学习“前端免费学习笔记(深入)”;
生产环境实用增强参数
为提升监控数据准确性与可读性,建议组合使用以下参数:
- lsblk -J -o NAME,TYPE,FSTYPE,MOUNTPOINT,SIZE,MODEL,ROTA,LOG-SEC,PHY-SEC:扩展关键硬件与性能字段(如旋转盘 ROTA=1、逻辑/物理扇区大小)
- lsblk -J -d:仅显示顶层设备(磁盘),忽略分区和子设备,适合做设备概览
- lsblk -J -I 8,16,259:限制主设备号(如 8=sata/scsi、16=ata、259=nvme),过滤掉 ramdisk、loop 等非物理存储
- lsblk -J -P 不推荐——它输出 KEY="VALUE" 格式,非 JSON,无法直连前端
对接前端的典型处理方式
后端服务(如 Python Flask、Node.js)可直接调用并透传 JSON,无需清洗:
- Shell 脚本中捕获:data=$(lsblk -J -o NAME,TYPE,FSTYPE,MOUNTPOINT,SIZE)
- Python 中安全调用:subprocess.run(['lsblk', '-J', '-o', 'NAME,TYPE,FSTYPE,MOUNTPOINT,SIZE'], capture_output=True, text=True).stdout
- 前端可直接 JSON.parse(),遍历 blockdevices 数组渲染树形拓扑图
- 注意:mountpoint 字段值为 null(非字符串 "null"),前端需正确判断空值

















