lsblk默认不显示挂载点是因为mountpoint列对未挂载分区为空而非隐藏;加-f强制显示、-l展平结构、awk '$7 != ""'过滤更可靠,df与lsblk数据源不同导致显示差异。

直接用 lsblk -f 就能看到分区结构和挂载点,但默认输出容易漏掉未挂载项或混淆层级——关键不是“能不能看”,而是“怎么看准”。
为什么 lsblk 默认不显示挂载点?
lsblk 默认只展示设备树和基础属性,MOUNTPOINT 列确实存在,但未挂载的分区该列为空(不是隐藏,是空字符串),肉眼扫过去很容易以为“没挂载=没显示”。
- 加
-f强制显示文件系统类型和MOUNTPOINT:运行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: cannot find device for path '/xxx'。
- 查
/home所在设备:lsblk -no SOURCE,MOUNTPOINT /home(-n去标题行,-o指定字段) - 查
/var/log对应的最底层物理设备(跳过 LVM/RAID):lsblk -no PKNAME,NAME,MOUNTPOINT /var/log,然后顺着PKNAME往上追 - 路径未挂载或含
bind mount/overlayfs时,改用findmnt /path,它能识别这些特殊挂载类型
TYPE=rom、part、cryp 这些值影响挂载点判断吗?
直接影响你是否该关注某行的 MOUNTPOINT:
-
disk(如sda):物理磁盘,本身不可挂载,挂载点属于其子设备 -
part(如sda1):主/逻辑分区,通常有文件系统,是常规挂载目标 -
rom(如sr0):光驱设备,即使插着光盘也常显示MOUNTPOINT为空——需手动mount /dev/sr0 /mnt才生效 -
cryp(如sda3):LUKS 加密层,无 UUID、无挂载点,真正挂载的是解密后的映射设备(如/dev/mapper/sda3_crypt);最容易被忽略的是这一层——别在lsblk -f输出里盯着 UUID 为空的那行找根目录
真正复杂的地方在于加密卷(cryp 类型)和 LVM 逻辑卷的嵌套关系:它们的挂载点出现在“中间层”,而实际数据写入的是最底层物理设备。一眼扫过去容易把 /dev/mapper/xxx 当成终点,其实它只是个映射入口。











