lsblk -j 直接输出标准 json 格式,根键为 "blockdevices",结构清晰、字段规范,支持 python json.load() 等原生解析;推荐加 -f 保障 fstype 和 uuid 字段完整,避免 -l/-d 破坏树形结构。

直接运行 lsblk -J 即可输出标准 JSON 格式,结构清晰、字段规范,适合后端平台解析。
基础用法:生成可解析的JSON磁盘树
执行以下命令即可获得完整块设备的 JSON 描述:
-
lsblk -J—— 默认包含所有设备(含未挂载项),输出为合法 JSON 对象,根键为"blockdevices" - 若只需关键字段(如避免冗余信息),推荐组合
-o指定列,例如:lsblk -J -o NAME,SIZE,TYPE,FSTYPE,UUID,MOUNTPOINT - 输出直接符合 RFC 7159 标准,无需额外格式化,可被 Python
json.load()、Node.jsJSON.parse()等原生支持
适配运维平台的实用建议
为提升解析鲁棒性与字段可用性,建议:
- 始终添加
-f(即lsblk -Jf),确保FSTYPE和UUID字段不为空——这对识别文件系统类型和持久化挂载至关重要 - 避免使用
-l(列表模式)或-d(仅顶层设备),它们会破坏树形嵌套结构,导致 JSON 中丢失父子关系 - 如需过滤特定设备(如只采集
/dev/sdb),写成:lsblk -Jf /dev/sdb—— 输出仍是标准 JSON,且只含该设备及其子节点
常见解析场景示例
后端脚本常需提取:
- 所有已挂载 ext4 分区的 UUID 和路径:
遍历blockdevices数组,筛选"fstype": "ext4"且"mountpoint"非 null 的项 - 识别未挂载但有 UUID 的数据盘:
查找"mountpoint": null且"uuid"存在的"type": "part"节点 - 区分物理盘与 LVM 层级:
通过"type"值判断("disk"→ 物理设备,"lvm"或"crypt"→ 逻辑层)
注意事项
注意几个易错点:
- 非 root 用户也能执行
lsblk -J,但部分加密卷或 LVM 元数据可能显示不全;关键生产环境建议以 root 运行 - 输出中
"children"数组体现真实嵌套关系(如sda2_crypt是sda2的子节点),这是还原存储栈的关键依据 - 不要用
grep或sed处理原始 JSON 输出——会破坏结构;应先保存为临时文件,再用标准 JSON 工具处理










