lsblk -f能直接显示设备名、文件系统类型、UUID和挂载点,天然可见逻辑分区(如/dev/sda1),而fdisk -l仅解析分区表结构、不反映挂载状态或文件系统,且对GPT磁盘无逻辑分区概念,识别不可靠。

直接看 lsblk -f,它能一次性列出设备名、大小、文件系统类型、UUID 和挂载点,逻辑分区(如 /dev/sda1、/dev/nvme0n1p2)在输出中天然可见,无需额外解析。
为什么不用 fdisk -l 查逻辑分区?
fdisk -l 显示的是底层分区表结构,包括主分区、扩展分区、逻辑分区(在 MBR 中),但它不区分“逻辑分区”和“主分区”的挂载状态或文件系统类型;更重要的是,它对 GPT 磁盘根本无“逻辑分区”概念——GPT 只有普通分区,fdisk 会误报或省略部分信息。如果你看到 fdisk -l 输出里有 /dev/sda5 这类编号 ≥5 的设备,那才可能是 MBR 下的逻辑分区,但仅靠编号不能确认,还得结合 Type 字段和分区起始位置判断。
- MBR 场景下,逻辑分区必须位于扩展分区内,
fdisk -l会显示Extended类型的分区(如/dev/sda2),其子项才是逻辑分区(/dev/sda5–/dev/sdaN) - GPT 场景下,
fdisk -l不识别逻辑/主之分,parted -l或lsblk更可靠 -
fdisk -l需要sudo权限,而lsblk -f普通用户即可运行
lsblk -f 怎么一眼识别逻辑分区?
逻辑分区本身没有特殊标记,但在实际使用中,它就是被内核识别为独立块设备的分区节点(TYPE="part"),且通常有文件系统和挂载点。关键不是“它是不是逻辑分区”,而是“它能不能当磁盘用”——lsblk -f 的 FSTYPE 和 MOUNTPOINT 列直接告诉你这个分区是否已格式化、是否已挂载。
- 输出中
NAME列带数字后缀的(如sda1、nvme0n1p3)都是分区,即逻辑上可独立使用的存储单元 -
FSTYPE非空(如ext4、xfs、vfat)说明已格式化,是有效逻辑分区 -
MOUNTPOINT非空说明已挂载,可立即访问;为空不代表无效,只是未挂载 - 对比
lsblk(无-f)和lsblk -f:前者只显示层级和大小,后者补全关键元数据,缺一不可
遇到 lsblk 不显示某分区怎么办?
常见于新创建但未通知内核的分区,或设备未正确扫描。这不是 lsblk 的问题,而是内核尚未加载该设备节点。
- 先确认设备是否存在:
ls /dev/sd* /dev/nvme*,看目标分区路径(如/dev/sdb1)是否在列 - 若存在但
lsblk不显示,尝试刷新内核分区表:sudo partprobe /dev/sdb(替换为对应磁盘) - 仍不显示?检查是否被 udev 规则屏蔽,或执行
sudo blockdev --rereadpt /dev/sdb - 注意:
partprobe对 NVMe 设备(/dev/nvme0n1)可能无效,应改用sudo nvme rescan(需安装nvme-cli)
真正容易被忽略的是:逻辑分区的有效性不取决于它的“出身”(主 or 逻辑),而取决于它是否有合法的文件系统签名和内核可识别的设备节点。别花时间猜编号含义,用 lsblk -f 看 FSTYPE,再用 sudo blkid /dev/xxx 做最终验证——这才是生产环境里最稳的路径。


















