lsblk -f 看不到挂载点是因为默认不强制显示 mountpoint 列,未挂载分区该列为空而非隐藏;加 -f 可强制显示文件系统类型与挂载点,-l 展平结构便于扫描,用 awk '$7 != ""' 过滤更可靠。

lsblk -f 为什么看不到挂载点?
因为 lsblk 默认只显示设备树和基础属性,MOUNTPOINT 列本身存在,但未挂载的分区该列为空——不是“没输出”,而是输出了空字段,容易被忽略。
实操建议:
- 加
-f强制显示文件系统类型和挂载点:lsblk -f - 加
-l展平结构,避免缩进干扰扫描:lsblk -fl - 过滤掉未挂载项更可靠:
lsblk -f | awk '$7 != ""'($7是MOUNTPOINT列,比grep -v "none$"更通用)
df -h 和 lsblk -f 显示不一致怎么办?
两者数据源不同:df 读 /proc/mounts,反映当前真实挂载状态;lsblk -f 通过 libblkid 探测设备元数据,会列出 /etc/fstab 里配置但尚未 mount 的条目(标为 none),也会残留刚 umount 后未刷新的旧挂载点。
典型差异场景:
-
/dev/sdb1在/etc/fstab中配了/data,但还没手动挂载 →lsblk -f显示MOUNTPOINT为none,df -h完全不出现它 - 执行
umount /mnt后立刻跑lsblk -f,可能仍看到/mnt;而df -h已消失 - LVM 逻辑卷如
/dev/mapper/vg0-lv_home在lsblk有挂载点,df显示的却是其底层物理路径,需对照NAME列识别层级
怎么精准查某个目录属于哪个设备?
不能靠肉眼比对,得让 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'→ 改用findmnt /path,它能识别 bind mount 和 overlayfs
TYPE=rom 或 part 是什么意思?影响挂载点判断吗?
TYPE 列标识设备性质,直接决定你是否该关注它的 MOUNTPOINT:
-
disk:物理磁盘(如sda),本身不可挂载,挂载点属于其子设备 -
part:主/逻辑分区(如sda1),通常有文件系统,是常规挂载目标 -
rom:光驱设备(如sr0),即使插入光盘也常显示MOUNTPOINT为空——需手动mount /dev/sr0 /mnt才生效 -
cryp:LUKS 加密层(如sda3),无 UUID、无挂载点,真正挂载的是其解密后的映射设备(如/dev/mapper/sda3_crypt)
真正容易被忽略的是 cryp 类型——它下面那一层才是实际挂载点,别在 lsblk -f 输出里盯着 UUID 为空的那行找根目录。











