linux lsblk 命令

介绍

lsblk(List Block Devices)是 Linux 系统中用于列出所有块设备信息的核心命令,块设备指存储数据的硬件设备(如:硬盘、U盘、分区、逻辑卷、RAID 等),其输出直观展示设备的层级关系、大小、类型等关键信息,是系统运维、存储管理的必备工具。

替代 fdisk

部分功能替代传统的 fdisk 命令。该命令可以快速查看系统中所有块设备的拓扑结构(如:硬盘包含哪些分区、分区是否被挂载)、设备名称、大小、类型、挂载点等信息

与 fdisk -l 的区别?

  • lsblk:侧重设备拓扑结构、挂载点、文件系统信息,输出易读;
  • fdisk -l:侧重分区表详情(如 MBR/GPT 分区类型、分区起止扇区),适合分区操作时使用;
  • 建议:日常查看存储用 lsblk,分区操作时结合 fdisk -l。

基本语法

lsblk [选项] [设备名]
  • 无选项无参数:默认列出所有块设备(排除内存盘 loop 设备);
  • 设备名(可选):指定单个设备(如 /dev/sda),仅查看该设备信息。

常见选项详解

lsblk 支持丰富的选项,用于过滤和展示关键信息,常用选项如下:

选项 英文说明 中文功能描述 示例
-a all 显示所有块设备(包含内存盘 loop、光驱 rom 等默认隐藏设备) lsblk -a
-b bytes 以字节(Bytes)为单位显示设备大小(默认是易读单位如 GB/MB) lsblk -b
-d noheadings 仅显示设备本身,不显示其分区/子设备(如只看硬盘,不看分区) lsblk -d
-f filesystem 显示文件系统类型、UUID、挂载点(核心选项,运维常用) lsblk -f
-i inverse 反向显示设备层级(从子设备到父设备,如先显示分区再显示硬盘) lsblk -i
-l list 以列表形式显示(而非默认的树状结构),适合脚本解析 lsblk -l
-m permissions 显示设备的权限信息(所有者、组、权限位,如 root:disk) lsblk -m
-n noheadings 不显示表头(列名),适合脚本中提取数据 lsblk -n -o NAME,SIZE
-o output 自定义显示列(按需选择字段,避免冗余) lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
-p paths 显示设备的完整路径(如 /dev/sda1 而非 sda1) lsblk -p
-t topology 显示设备拓扑信息(如扇区大小、物理扇区、IO 调度器) lsblk -t
-x sort 按指定列排序(如按大小 SIZE、名称 NAME 排序) lsblk -x SIZE

常用组合选项

  • 查看关键信息(名称、大小、类型、挂载点):lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
  • 查看文件系统+权限+完整路径:lsblk -f -m -p
  • 脚本提取 UUID(无表头+列表形式):lsblk -n -l -o NAME,UUID

lsblk 输出结果详解

lsblk 默认以树状结构输出,清晰展示设备的父子关系(如硬盘 → 分区 → 逻辑卷)

执行下面命令:

lsblk

输出结果如下:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
├─sda1        8:1    0   512M  0 part /boot
├─sda2        8:2    0    16G  0 part [SWAP]
└─sda3        8:3    0 449.3G  0 part /
sr0          11:0    1  1024M  0 rom  
nvme0n1     259:0    0 931.5G  0 disk 
└─nvme0n1p1 259:1    0 931.5G  0 part /data

解释

  • sda:有一个 sata 硬盘,465.8G,该硬盘分为3个分区(相当于windows 3个盘符)

    • sda1分区:挂载到 /boot 目录(相当于windows的 C 盘),512M
    • sda2:分区,交换分区,16G
    • sda3:挂载到 / 目录,449.3G
  • sr0:一个光驱

  • nvme0n1:一个 NVMe 硬盘,即:固态硬盘,931.5G,只有一个分区:

    • nvme0n1p1:挂载到 /data 目录

列含义解释

列名 英文全称 中文含义 示例说明
NAME Name 设备名称 sda(SATA 硬盘)、nvme0n1(NVMe 硬盘)、sda1(sda 的第一个分区)
MAJ:MIN Major:Minor 主设备号:次设备号 内核识别设备的标识(如 8:0 代表 sda 硬盘,8:1 代表 sda1 分区)
RM Removable 是否可移动设备 0(不可移动,如本地硬盘)、1(可移动,如 U 盘、光驱)
SIZE Size 设备容量 默认以易读单位显示(GB/MB/KB),如 465.8G、512M
RO Read Only 是否只读 0(可读写)、1(只读,如光驱、光盘)
TYPE Type 设备类型 disk(物理硬盘)、part(分区)、rom(光驱)、loop(内存盘)、lvm(逻辑卷)、raid(RAID 设备)
MOUNTPOINT Mount Point 挂载点 设备挂载的目录(如 / 根分区、/boot 引导分区、[SWAP] 交换分区、空值表示未挂载)

lsblk -f 选项输出示例(文件系统信息)

NAME        FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                             
├─sda1      xfs                         7a9b-cdef-1234-5678-90ab-cdef01234567   /boot
├─sda2      swap                        89ab-cdef-1234-5678-90ab-cdef01234567   [SWAP]
└─sda3      xfs                         a1b2-cdef-1234-5678-90ab-cdef01234567   /
nvme0n1                                                                         
└─nvme0n1p1 ext4                        c3d4-cdef-1234-5678-90ab-cdef01234567   /data

新增列说明:

  • FSTYPE:文件系统类型(如 xfs、ext4、swap);
  • LABEL:设备标签(自定义名称,可为空);
  • UUID:设备唯一标识符(挂载时推荐用 UUID,避免设备名变动导致挂载失败)。

案例

查看系统所有存储设备(快速排查)

lsblk
  • 用途:快速了解服务器有哪些硬盘、分区,哪些已挂载,是否有未使用的存储设备。

查看 U 盘是否被识别(外接设备排查)

lsblk -a  # 显示所有设备,包含 U 盘
  • 识别特征:RM=1(可移动)、TYPE=disk(硬盘),子设备为 part(分区),如 sdb(U 盘)→ sdb1(U 盘分区)。

查看未挂载的分区(磁盘扩容/挂载准备)

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep -E 'part|MOUNTPOINT'
  • 筛选出所有分区,查看 MOUNTPOINT 为空的分区(未挂载),可用于扩容或新挂载。

总结

lsblk 是 Linux 存储管理的“瑞士军刀”,核心优势是输出直观、信息全面、选项灵活:

  • 新手:用 lsblk 快速了解系统存储布局;
  • 运维:用 lsblk -f 查看 UUID 用于永久挂载,用组合选项提取数据用于脚本;
  • 排障:用 lsblk -a 排查外接设备识别问题,用 lsblk -o 自定义字段定位存储异常。

原文出处:/show_1GW2KOsRvGAP.html