blkid是最直接可靠的查看磁盘UUID命令,直接读取superblock获取真实UUID,不依赖挂载、udev缓存或文件系统类型;普通用户可运行,仅LVM或加密设备需sudo;未格式化分区无UUID输出;/dev/disk/by-uuid/为udev维护的符号链接目录,用于反查映射但非实时;findfs适用于已知UUID精准定位设备路径。

blkid 是最直接、最可靠的命令
不用挂载、不依赖 udev 缓存、不挑文件系统类型,blkid 直接读取设备 superblock,输出真实 UUID。普通用户就能跑,多数情况不需要 sudo;只有遇到 LVM 或加密设备权限受限时才需提权。
- 查所有分区:
blkid(输出含设备路径、UUID、TYPE、LABEL) - 只看 UUID 列:
blkid -s UUID,更干净 - 精准查某一分区:
blkid /dev/nvme0n1p2,适合脚本调用 - 要纯字符串(无引号无前缀):
blkid -s UUID -o value /dev/sdb1 - 如果某设备没输出 UUID,大概率是还没格式化——
blkid不会伪造值
/dev/disk/by-uuid/ 适合反查映射关系
这个目录里全是符号链接,文件名就是 UUID,指向实际设备路径,比如 a1b2c3d4-... -> ../../sda1。它不是实时读设备,而是 udev 缓存的结果,所以不能代替 blkid 做权威判断。
- 确认某个 UUID 对应哪个设备:
ls -l /dev/disk/by-uuid/ - 验证链接是否有效:
readlink -f /dev/disk/by-uuid/a1b2c3d4-...,若目标不存在,说明设备未识别或已拔出 - 刚用
tune2fs -U改完 UUID,这里可能滞后,需等 udev 重载或重启才更新 - 它不能用来生成或验证 UUID 是否合法,只反映“当前内核认为这个 UUID 指向哪”
findfs 专用于已知 UUID 反查设备路径
当你手上只有一个 UUID 字符串(比如从 /etc/fstab 里复制的),想快速定位它属于哪块盘,findfs 比 grep 扫 blkid 输出更稳、更准,尤其在多路径或 LVM 场景下。
- 执行:
findfs UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8,直接输出匹配的/dev/sdb1这类路径 - 失败时返回非零退出码,可直接用在 shell 脚本断言中
- 不支持 PARTUUID,只认文件系统级 UUID
- 必须加
sudo,否则部分设备可能查不到
别用 tune2fs 或 dumpe2fs 查非 ext 系列分区
tune2fs -l /dev/sda1 | grep UUID 看起来能出结果,但它只对 ext2/3/4 有效。xfs、btrfs、ntfs、swap 分区运行会报错或静默失败,容易误判为“没 UUID”。
- xfs 分区:改 UUID 必须重格式化(
mkfs.xfs -U generate /dev/sda1),tune2fs完全不识别 - swap 分区:可用
blkid查 UUID,但tune2fs会提示 “not an ext2 filesystem” -
dumpe2fs同样仅限 ext 系列,且输出格式不稳定,不适合解析 - 如果
blkid显示某分区有 UUID 但tune2fs报错,说明它根本不是 ext 文件系统——别硬套
blkid 能立刻看到,但 /dev/disk/by-uuid/ 可能要等几秒 udev 同步。


















