最权威方法是用 blkid 直接读取 superblock 元数据,支持所有主流文件系统;查全部用 sudo blkid,查单个用 sudo blkid /dev/xxx,提纯 uuid 用 -s uuid -o value;findfs 可反向定位设备,/dev/disk/by-uuid/ 仅验证映射关系。

Linux 中查看底层文件系统的 UUID,核心是读取文件系统元数据(superblock),而不是依赖挂载状态或系统缓存。UUID 是格式化时写入的固定标识,只要分区已创建文件系统,它就存在且不变。
直接用 blkid 读取文件系统元数据
这是最权威、最通用的方法。blkid 绕过 udev 和挂载层,直接解析设备块上的 superblock,支持 ext4、XFS、Btrfs、vfat、NTFS 等主流类型。
查所有已识别分区的 UUID:
sudo blkid只查某一分区(例如
/dev/nvme0n1p2):sudo blkid /dev/nvme0n1p2脚本中提取纯 UUID 字符串(无引号、无空格、无前缀):
sudo blkid /dev/sdb1 -s UUID -o value
注意:普通用户运行
blkid通常可行;若遇到Permission denied(常见于 LVM、LUKS 或某些加密卷),加sudo即可。输出中没有UUID=字段,基本说明该设备尚未格式化(可用file -s /dev/sdb1验证是否为data)。
用 /dev/disk/by-uuid/ 验证系统映射关系
这不是“查 UUID”,而是确认内核和 udev 是否已将 UUID 正确关联到设备路径:
列出所有已建立的 UUID 映射:
ls -l /dev/disk/by-uuid/示例输出:
a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 -> ../../nvme0n1p2
这个目录用于
/etc/fstab挂载和 initramfs 加载,链接存在 ≠ 设备可用——若目标设备节点权限异常或刚修改 UUID,链接可能暂时失效。
用 findfs 反向定位设备(已知 UUID 时)
当你只有 UUID 字符串(比如从 fstab 复制来的),想快速知道它对应哪个物理分区:
- 执行:
sudo findfs UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8
成功返回设备路径(如
/dev/nvme0n1p2),失败则退出码非零,适合自动化检查。它比blkid | grep更可靠,尤其在多路径或 LVM 场景下。
避免误用的命令
-
tune2fs -l /dev/sda1 | grep UUID:仅限 ext2/3/4,对 XFS、Btrfs、FAT 等无效; -
lsblk -f:UUID 列依赖 udev 缓存,未挂载且无 LABEL 的分区常为空; -
udevadm info --name=/dev/sdb1 | grep ID_FS_UUID:查的是缓存值,不是实时元数据,改 UUID 后可能滞后; -
cat /etc/fstab:只能看到已配置的 UUID,不能发现新分区或验证真实性。
不复杂但容易忽略











