未挂载分区用 blkid 或 lsblk -f;已挂载的用 df -T 或 findmnt;怀疑格式损坏或内核没识别,才上 file -s。

直接看结果,别猜:未挂载分区用 blkid 或 lsblk -f;已挂载的用 df -T 或 findmnt;怀疑格式损坏或内核没识别,才上 file -s。
查未挂载分区的真实文件系统类型
blkid 是最可靠的命令,它绕过内核、直读设备超级块,不依赖挂载状态,也不管你有没有加载 xfs 模块。对 LUKS 加密卷、LVM 逻辑卷、甚至 mkfs 执行一半中断的分区都有效。
- 运行
sudo blkid列出所有块设备,关注TYPE="ext4"、TYPE="xfs"这类字段 - 只查某一分区时加路径:
sudo blkid /dev/sdb1,避免被 USB 设备干扰 - 如果输出里压根没出现该设备,或
TYPE字段为空,说明它可能还没格式化、是 swap、LVM PV,或者写入失败 - 刚执行完
mkfs就跑blkid有时会缓存旧结果,加-p强制重读:sudo blkid -p /dev/sdb1
快速概览所有分区及其挂载关系
lsblk -f 适合一眼看清整机存储结构:哪块盘、分了几个区、哪个挂了、用的什么格式、UUID 是多少。它不需要 root 权限就能跑(部分设备因权限限制可能显示为空),但不显示 LABEL。
-
FSTYPE列就是文件系统类型,空值代表未格式化或内核无法识别 - 如果某行
FSTYPE为空但MOUNTPOINT有值,说明已挂载但内核没认出格式——大概率是损坏或缺驱动 - 想过滤特定磁盘:
lsblk -f /dev/nvme0n1,比全量输出干净得多 - 注意:
lsblk -f依赖 udev 缓存,偶尔滞后;若和blkid结果不一致,优先信后者
确认某个挂载点实际用的什么格式
df -T 和 findmnt 都只查已挂载项,本质是问内核“你现在挂的是啥”。它们不适用于未挂载设备,但胜在快、准、无权限要求。
-
df -T /home输出中Type列即为该路径所在分区的真实文件系统类型 -
findmnt /var/log更简洁,直接返回一行:源设备、挂载点、FSTYPE、选项,不含空间数据 - 如果
df -T某行Type是rootfs或nsfs,说明不是真实块设备,不能用blkid查 - 遇到容器或 overlayfs 场景,
df -T显示底层块设备类型(如ext4),而mount显示上层类型(如overlay),别混淆
当所有命令都返回空时怎么救急
file -s 是最后手段:它不读超级块,而是硬解析设备开头几个扇区的二进制签名,哪怕文件系统损坏、覆盖一半、或根本没写完,也可能给出线索。但它慢、不准、不支持加密卷。
- 必须加
sudo:sudo file -s /dev/sdb1 - 典型输出:
/dev/sdb1: Linux rev 1.0 ext4 filesystem data或SGI XFS filesystem data - 如果输出是
data或empty,不代表不是 ext4/xfs,可能是签名区损坏,或你用的file版本太老 - 别用它查 LUKS 卷——
file -s会告诉你这是加密数据,而不是里面包着的 ext4
真正容易被忽略的是:parted -l 显示的 “File system” 字段只是分区表里记的预期类型(比如 ID=83),不是真实写入的文件系统;一块标着 “Linux”的分区,实际可能是 NTFS 或 FAT32。要信硬件层面的证据,而不是元数据记录。


















