命令详解 lsblk

lsblk 用于列出 Linux 块设备及其依赖关系,包括磁盘、分区、LVM、加密设备、RAID 和挂载点。它适合盘点和排障,但不会替代备份,也不会自动判断哪块磁盘可以格式化。

常用查询

# 默认树形视图
lsblk

# 文件系统、标签、UUID 与挂载点
lsblk -f

# 显示完整设备路径
lsblk -p

# 只看顶层设备,不显示分区/映射关系
lsblk -d

# 显示字节数,便于脚本计算
lsblk -b

# 查看丢弃/TRIM 能力
lsblk -D

-m 表示显示设备节点的属主、属组和权限,不是“以 MB 显示”。如需精确容量,使用 -b;给人阅读时默认的人类可读格式通常更合适。

明确指定输出列

默认列可能随 util-linux 版本变化,脚本中应固定 --output:

lsblk -o NAME,PATH,TYPE,SIZE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINTS,MODEL,SERIAL

常用列含义:

列 说明
NAME / PATH 设备名 / 完整路径
TYPE disk、part、lvm、crypt、raid 等
SIZE 设备容量,不等于可用空间
FSTYPE / FSVER 文件系统类型与版本
UUID / PARTUUID 文件系统与分区标识
MOUNTPOINTS 设备的全部挂载点,可能是多行
ROTA 是否旋转介质;虚拟化或阵列环境可能不准确
MODEL / SERIAL 型号和序列号,取决于设备是否提供

可用列以本机版本为准:

lsblk --list-columns

JSON 与脚本处理

lsblk --json --bytes -o NAME,PATH,TYPE,SIZE,FSTYPE,UUID,MOUNTPOINTS

需要解析父子关系时把 NAME 或其他 tree 列放入输出,且不要解析对齐后的纯文本。脚本还应处理字段为空、多挂载点以及设备在命令执行期间插拔的情况。

典型排障场景

新磁盘是否被识别

sudo udevadm settle
lsblk -o NAME,PATH,TYPE,SIZE,MODEL,SERIAL

如果设备刚添加,先等待 udev 完成事件处理。仍不显示时再查看内核日志、控制器和虚拟化平台。

找到某个挂载点对应的设备

findmnt /data
lsblk -f

核对文件系统标识

lsblk -f 的信息来自 udev 缓存;需要权威的文件系统元数据时结合 blkid:

sudo blkid /dev/sdb1

容易误解的地方

  • SIZE 是块设备容量,不是文件系统剩余空间;剩余空间看 df -hT。
  • 同一设备可有多个挂载点,应优先使用 MOUNTPOINTS。
  • RM=1 只表示内核认为设备可移除,不代表数据可以安全拔出。
  • ROTA=0 不一定就是物理 SSD,虚拟磁盘可能由宿主机伪装。
  • 修改磁盘前至少同时核对容量、型号、序列号、现有文件系统和业务挂载点。

官方参考

Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-10-17 14:18:58

results matching ""

    No results matching ""