Linux lsblk命令详解

1. 概述

lsblk命令用于显示系统中所有可用的块设备信息。相比于blkid命令,lsblk提供了更多的信息和输出格式控制。它从udev读取信息,因此非root用户也可以使用。lsblk命令显示设备名、主次设备号、设备是否可以删除、设备文件大小、设备是否为只读、设备类型和挂载路径等信息。

2. 语法

lsblk [选项]

常用选项包括:

  • -a, --all:显示所有设备,包括空设备。
  • -b, --bytes:以字节为单位显示大小。
  • -d, --nodeps:仅列出块设备,不显示它们的依赖关系(例如分区)。
  • -e, --exclude <列表>:排除指定的设备。
  • -f, --fs:显示文件系统信息。
  • -h, --help:显示帮助信息并退出。
  • -i, --ascii:以ASCII字符显示树形结构。
  • -J, --json:以JSON格式输出。
  • -l, --list:以列表格式输出设备信息。
  • -n, --noheadings:不显示标题。
  • -o, --output <列>:指定显示的列,用逗号分隔。
  • -P, --pairs:以键值对格式输出。
  • -r, --raw:以原始格式显示。
  • -t, --topology:显示设备拓扑信息。
  • -V, --version:显示版本信息并退出。

3. 示例

3.1 显示所有设备的信息

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0    20G  0 disk
├─sda1        8:1    0   500M  0 part /boot
├─sda2        8:2    0    1G   0 part
│ └─lvm-root 253:0  0    15G  0 lvm  /
└─sda3        8:3    0 18.5G  0 part
  └─lvm-root 253:0  0    15G  0 lvm  /
sr0          11:0    1 1024M  0 rom
  • NAME:设备名称。
  • MAJ:MIN:主次设备号。
  • RM:设备是否为可移动设备(1表示是,0表示否)。
  • SIZE:设备大小。
  • RO:设备是否为只读设备(1表示是,0表示否)。
  • TYPE:设备类型,如disk(磁盘)、part(分区)、lvm(逻辑卷)等。
  • MOUNTPOINT:设备的挂载点。

3.2 以列表格式显示设备信息

# lsblk -l
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0    20G  0 disk
sda1          8:1    0   500M  0 part /boot
sda2          8:2    0     1G  0 part
lvm-root    253:0    0    15G  0 lvm  /
sda3          8:3    0  18.5G  0 part
sr0          11:0    1  1024M  0 rom

以列表形式显示块设备信息。

3.3 显示文件系统信息

# lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1      ext4         e2f8b2f8-2c0b-4e7a-8fb7-7e85a8e8c8e8 /boot
├─sda2      LVM2_member 9u43g2-0g93-4d49-8df4-f7e6a7e7e6a7
│ └─lvm-root
│           ext4         3f6e3f6e-2d4f-4d69-8df4-f7e6a7e7e6a7 /
└─sda3      LVM2_member 8f47h2-0h74-4g84-8fg5-h6e5a8e7e6a7
  └─lvm-root
            ext4         3f6e3f6e-2d4f-4d69-8df4-f7e6a7e7e6a7 /
sr0
  • FSTYPE:文件系统类型。
  • LABEL:文件系统标签。
  • UUID:文件系统的UUID。
  • MOUNTPOINT:文件系统的挂载点。

3.4 仅列出块设备,不显示分区

# lsblk -d
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0    20G  0 disk
sr0     11:0    1 1024M  0 rom

仅显示块设备,不显示其分区信息。

3.5 以JSON格式输出

# lsblk -J
{
   "blockdevices": [
      {"name":"sda", "maj:min":"8:0", "rm":false, "size":"20G", "ro":false, "type":"disk", "mountpoint":null,
         "children":[
            {"name":"sda1", "maj:min":"8:1", "rm":false, "size":"500M", "ro":false, "type":"part", "mountpoint":"/boot"},
            {"name":"sda2", "maj:min":"8:2", "rm":false, "size":"1G", "ro":false, "type":"part", "mountpoint":null,
               "children":[
                  {"name":"lvm-root", "maj:min":"253:0", "rm":false, "size":"15G", "ro":false, "type":"lvm", "mountpoint":"/"}
               ]
            },
            {"name":"sda3", "maj:min":"8:3", "rm":false, "size":"18.5G", "ro":false, "type":"part", "mountpoint":null,
               "children":[
                  {"name":"lvm-root", "maj:min":"253:0", "rm":false, "size":"15G", "ro":false, "type":"lvm", "mountpoint":"/"}
               ]
            }
         ]
      },
      {"name":"sr0", "maj:min":"11:0", "rm":true, "size":"1024M", "ro":false, "type":"rom", "mountpoint":null}
   ]
}

以JSON格式输出块设备信息,适合进一步的自动化处理。

4. 详细示例

示例1:显示所有设备的信息,并包含文件系统类型

# lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1      ext4         e2f8b2f8-2c0b-4e7a-8fb7-7e85a8e8c8e8 /boot
├─sda2      LVM2_member 9u43g2-0g93-4d49-8df4-f7e6a7e7e6a7
│ └─lvm-root
│           ext4         3f6e3f6e-2d4f-4d69-8df4-f7e6a7e7e6a7 /
└─sda3      LVM2_member 8f47h2-0h74-4g84-8fg5-h6e5a8e7e6a7
  └─lvm-root
            ext4         3f6e3f6e-2d4f-4d69-8df4-f7e6a7e7e6a7 /
sr0

显示设备及其文件系统类型、标签、UUID和挂载点。

示例2:以键值对格式输出设备信息

# lsblk -P
NAME="sda"

逼格高的汤圆
7 声望2 粉丝