lsblk默认不显示挂载点因MOUNTPOINT列仅对已挂载设备非空,未挂载时为空而非隐藏;加-f强制显示文件系统及挂载点,-l展平结构,-m配合路径可精准定位目录所属设备。

lsblk 默认输出为什么看不到挂载点?
因为 lsblk 默认只显示设备树结构和基本属性(如大小、类型),MOUNTPOINT 列默认不强制展示——尤其当某个分区没被挂载时,该列直接为空,容易误以为“没显示”是命令失效。
实操建议:
- 加
-f参数强制显示文件系统类型和挂载点:lsblk -f - 加
-l(小写 L)可展平树形结构,避免缩进干扰阅读,适合管道处理或快速扫视:lsblk -fl - 若只想看已挂载的设备,用
lsblk -f | grep -v "none$"过滤掉MOUNTPOINT为none的行(注意:某些系统显示为空格而非字符串none,更稳妥的是lsblk -f | awk '$7 != ""')
为什么 df -h 和 lsblk -f 显示的挂载点不一致?
根本原因是两者数据来源不同:df 读取内核的挂载表(/proc/mounts),反映“当前实际挂载状态”;而 lsblk -f 通过 udev 和 libblkid 探测设备属性,会列出 /etc/fstab 中配置但尚未挂载的条目(标记为 none),也会显示已卸载但设备仍存在的分区。
典型场景:
-
/dev/sdb1在/etc/fstab里配了/data,但还没手动mount→lsblk -f显示MOUNTPOINT为none,df -h完全不出现它 - 执行过
umount /mnt后立即运行lsblk -f,可能仍看到旧挂载点(缓存未刷新),而df -h已消失 - 某些 LVM 或加密卷(如
/dev/mapper/vg0-lv_home)在lsblk中有挂载点,但df显示的是其底层物理设备路径,需对照NAME列识别逻辑关系
如何用 lsblk 精准定位某个目录属于哪个设备?
不能靠肉眼匹配,得让 lsblk 主动查——它支持 -m 模式(类 df 风格)并配合路径参数:
实操建议:
- 查
/home所在设备:lsblk -no SOURCE,MOUNTPOINT /home(-n去标题行,-o指定字段) - 查
/var/log对应的最底层物理设备(跳过 LVM/RAID 层):lsblk -no PKNAME,NAME,MOUNTPOINT /var/log,然后顺着PKNAME往上追 - 注意:路径必须存在且已挂载,否则报错
lsblk: cannot find device for path '/xxx';临时挂载的 bind mount 或 overlayfs 可能不被lsblk识别,此时应回退到findmnt /path
lsblk 输出中 TYPE=rom 或 part 是什么意思?
TYPE 列标识设备类型,直接影响你是否该关注它的挂载点:
-
disk:物理磁盘(如sda),本身不可挂载,挂载点属于其子设备 -
part:主/逻辑分区(如sda1),通常有文件系统,是常见挂载目标 -
rom:光驱设备(如sr0),即使插入光盘也常显示MOUNTPOINT为空——需手动mount /dev/sr0 /mnt才生效 -
crypt:LUKS 加密设备,挂载点实际属于其解密后的 mapper 设备(如/dev/mapper/sda2_crypt),lsblk会把它列为子节点,注意层级缩进 -
lvm:逻辑卷,挂载点直接写在其行上,但真实存储依赖上层disk或part
混淆点在于:有些设备(如 NVMe SSD 的 nvme0n1p1)TYPE 是 part,但挂载点为空——说明它被格式化过却未被 fstab 或手动挂载,别急着删分区。


















