介绍
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
- sda1分区:挂载到
sr0:一个光驱
nvme0n1:一个 NVMe 硬盘,即:固态硬盘,931.5G,只有一个分区:
- nvme0n1p1:挂载到
/data目录
- nvme0n1p1:挂载到
列含义解释
| 列名 | 英文全称 | 中文含义 | 示例说明 |
|---|---|---|---|
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自定义字段定位存储异常。