用 lsblk -f 或 lsblk -lf 可快速查看已挂载分区及文件系统类型,-f 显示挂载点与文件系统,-l 生成扁平列表便于筛选;df -h 显示活跃挂载,lsblk 显示设备拓扑,验证真挂载应优先用 findmnt。

怎么快速看当前挂载了哪些分区
直接用 lsblk 最省事,它默认只显示块设备树状结构,不含冗余信息,一眼就能看出哪些设备已挂载、挂到哪、用的什么文件系统。
常见错误是只输 lsblk 不加参数,结果看不到挂载点(MOUNTPOINT 列为空)——其实不是没挂载,而是默认不显示空挂载点或某些伪文件系统。真正想确认“是否挂载”,得加 -f(显示文件系统类型和挂载点)或 -l(扁平列表,更易扫读)。
-
lsblk -f:必加,否则MOUNTPOINT列可能不显示实际路径 -
lsblk -l:适合管道处理或快速 grep,比如lsblk -lf | grep ext4 - 注意
lsblk不显示 swap 分区的挂载状态,swap 要用swapon --show
为什么 df -h 和 lsblk 显示的挂载点不一致
因为 df 只统计已挂载且有文件系统统计信息的目录,而 lsblk 是从内核块设备层读取的原始拓扑,会列出所有设备节点(包括未格式化、未挂载、或挂载失败但残留的设备)。
典型场景:你用 mount /dev/sdb1 /mnt 挂载后又 umount /mnt,但忘了删掉 /mnt 目录;下次 lsblk 仍会显示 /mnt 在 MOUNTPOINT 列(其实是残留路径),而 df 完全不认它——因为它根本没被内核视为活跃挂载点。
-
df看的是 VFS 层的实时挂载视图,更“权威”但信息少 -
lsblk看的是 sysfs 下的设备关系,更“底层”但可能含误导性残留 - 验证是否真挂载,优先信
findmnt /path,它查的是内核 mountinfo,最准
lsblk 输出里 NAME、FSTYPE、MOUNTPOINT 各列怎么看
NAME 是设备名(如 sda、sda1、nvme0n1p2),注意带数字的是分区,不带的是整盘;FSTYPE 是文件系统类型(vfat、ext4、crypto_LUKS),为空说明没格式化或无法识别;MOUNTPOINT 是挂载路径,为空 ≠ 未挂载(可能是 bind mount 或 namespace 隔离导致不可见)。
容易踩的坑:看到 FSTYPE 是 crypto_LUKS 就以为不能挂载?其实它是加密容器,需先 cryptsetup open 解锁,才会在 lsblk 里多出一层 mapper 子设备(如 luks-xxx),那才是真正的文件系统载体。
-
lsblk -o NAME,FSTYPE,MOUNTPOINT,SIZE,RO:自定义列,加RO能一眼看出是否只读挂载 -
lsblk -d:只显示磁盘(不展开分区),适合查 NVMe 盘或 USB 设备总数 - 遇到 LVM 卷,
lsblk会显示vgname-lvname,但不会告诉你逻辑卷大小是否在线扩容过,得配合lvs
脚本里怎么安全解析 lsblk 输出
别用空格分割字段——MOUNTPOINT 可能含空格(比如挂到 /media/my disk),也别依赖列顺序硬切第3列。正确做法是用 -P 参数输出 key="value" 格式,再用 shell 解析或交给 jq 处理。
示例:lsblk -P -f | grep 'MOUNTPOINT="/"' | sed -n 's/.*SIZE="\(.*\)".*/\1/p' 取根分区大小;或者更稳一点:eval "$(lsblk -P -f | grep 'MOUNTPOINT="/")",之后直接用 $SIZE、$FSTYPE 变量。
-
-P输出是 shell-safe 的,但注意双引号内反斜杠会被转义,eval前最好先检查内容 - 生产脚本中,优先用
findmnt -n -o SOURCE,TARGET,FSTYPE /替代解析lsblk,更轻量、更可靠 -
lsblk在容器里可能只显示部分设备(取决于 cgroup 和 mount namespace),别假设它总能列出宿主机全貌
真正麻烦的不是看懂 lsblk,而是当它显示一个设备“已挂载”,但 ls /mnt 报 Input/output error——这时候得查 dmesg 里有没有硬盘掉线或文件系统只读标记,lsblk 不管这些底层异常。










