前言

lsblk 列出所有块设备信息(除了 RAM 类型的块设备)。lsblk 是通过读取/sys/fs 文件系统信息和 udev db 来收集信息。

如果 udev db 不可用或者 lsblk 编译的没有添加 udev 的支持,就会尝试通过/sys/下的块设备信息中,提取块设备的标签、UUID、文件系统等。

安装

lsblk 命令包含在 util-linux 包中,现在该包改名为 util-linux。

yum  -y install   util-linux

查看帮助

lsblk

用法: lsblk [选项][<设备> …]

列出块设备的信息。

选项:
 -a, --all            打印所有设备
 -b, --bytes          以字节为单位而非易读的格式来打印 SIZE
 -d, --nodeps         不打印从属设备(slave)或占位设备(holder)
 -D, --discard        打印时丢弃能力
 -z, --zoned          print zone model
 -e, --exclude <列表> 根据主设备号排除设备(默认:内存盘)
 -f, --fs             输出文件系统信息
 -i, --ascii          只使用 ascii 字符
 -I, --include <列表> 只显示有指定主设备号的设备
 -J, --json           使用 JSON 输出格式
 -l, --list           使用列表格式的输出
 -T, --tree           use tree format output
 -m, --perms          输出权限信息
 -n, --noheadings     不打印标题
 -o, --output <列表>  输出列
 -O, --output-all     输出所有列
 -p, --paths          打印完整设备路径
 -P, --pairs          使用 key=“value” 输出格式
 -r, --raw            使用原生输出格式
 -s, --inverse        反向依赖
 -S, --scsi           输出有关 SCSI 设备的信息
 -t, --topology       输出拓扑信息
 -x, --sort <列>      按<列>对输出排序
     --sysroot <dir>  use specified directory as system root

 -h, --help           display this help
 -V, --version        display version

Available output columns:
        NAME  设备名
       KNAME  内部内核设备名称
        PATH  path to the device node
     MAJ:MIN  主:次 设备号
     FSAVAIL  文件系统可用大小
      FSSIZE  文件系统大小
      FSTYPE  文件系统类型
      FSUSED  文件系统已用大小
      FSUSE%  文件系统使用百分比
  MOUNTPOINT  设备挂载位置
       LABEL  文件系统标签
        UUID  文件系统 UUID
      PTUUID  partition table identifier (usually UUID)
      PTTYPE  partition table type
    PARTTYPE  分区类型 UUID
   PARTLABEL  分区 LABEL
    PARTUUID  分区 UUID
   PARTFLAGS  分区标志
          RA  该设备的预读(read-ahead)
          RO  只读设备
          RM  可移动设备
     HOTPLUG  可移动或热插拔设备(usb, pcmcia, ...)
       MODEL  设备标识符
      SERIAL  磁盘序列号
        SIZE  磁盘容量
       STATE  设备的状态
       OWNER  用户名
       GROUP  组名
        MODE  设备节点权限
   ALIGNMENT  对齐偏移量
      MIN-IO  最小 I/O 大小
      OPT-IO  最优 I/O 大小
     PHY-SEC  物理扇区大小
     LOG-SEC  逻辑扇区大小
        ROTA  转动设备
       SCHED  I/O 调度器名称
     RQ-SIZE  请求队列大小
        TYPE  设备类型
    DISC-ALN  忽略对齐偏移量
   DISC-GRAN  忽略粒度
    DISC-MAX  忽略最大字节数
   DISC-ZERO  忽略零数据
       WSAME  写相同的最大字节数
         WWN  惟一存储标识符
        RAND  添加随机性
      PKNAME  内部上级内核设备名称
        HCTL  SCSI 的 Host:Channel:Target:Lun
        TRAN  设备传输类型
  SUBSYSTEMS  对成链的子系统去重
         REV  设备修订版本
      VENDOR  设备制造商
       ZONED  zone model

例子

lsblk 命令默认是以树状列出所有块设备,可以查看块设备之间的关系。

lsblk

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0   477G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part /boot
├─nvme0n1p2 259:2    0    50G  0 part /
├─nvme0n1p3 259:3    0   120G  0 part /home
└─nvme0n1p4 259:4    0 306.4G  0 part /data

NAME :这是块设备名。

MAJ:MIN :显示主要和次要设备号。

RM :显示设备是否可移动设备。

SIZE :列出设备的容量大小信息。

RO :该项表明设备是否为只读。所有设备的 RO 值为 0,表明他们不是只读的。

TYPE :显示块设备的类型。

MOUNTPOINT :指出设备挂载的挂载点。

如果需要查询指定的的字段信息,可以使用-o 进行定制显示。

总结

lsblk 可以让我们查询到 linux 系统上面块设备的分布情况。