blkid是最直接可靠的uuid查询命令,它读取文件系统superblock真实元数据,不依赖挂载或udev缓存,普通用户可运行,支持全设备扫描、指定设备查询、纯uuid提取及反查,未格式化分区无uuid。

blkid 是最直接、最可靠的命令
查 UUID 就用 blkid,它读的是文件系统 superblock 里的真实元数据,不依赖挂载、不靠 udev 缓存,多数情况连 root 都不需要。输出格式统一,UUID= 字段可直接复制进 /etc/fstab。
- 查全部设备:
blkid(普通用户即可运行;若某些 LVM 或加密设备报Permission denied,加sudo) - 只看 UUID 字段(人工核对更清爽):
blkid -s UUID - 提取纯字符串(脚本友好,无引号无空格):
blkid /dev/nvme0n1p2 -s UUID -o value - 某设备没出现在输出里?大概率是还没格式化,用
file -s /dev/sdc1看返回是不是data而不是具体文件系统类型
已知 UUID 反查设备路径用 findfs
当你只有 UUID 字符串(比如从 /etc/fstab 里抄来的),想确认它到底对应哪块盘,findfs 比 grep 扫 blkid 输出更准,尤其在多路径或 LVM 场景下。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 执行:
findfs UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8(需sudo,失败时返回非零码) - 它会直接输出匹配的设备路径,如
/dev/mapper/vg0-lv_root - 注意:如果刚用
tune2fs -U改过 UUID,findfs可能短暂滞后,等 udev 刷新或重启后才生效
/dev/disk/by-uuid/ 目录只适合验证映射,不能当权威来源
这个目录本质是一堆符号链接,名字是 UUID,指向设备节点。它反映的是 udev 上次扫描的结果,不是实时读取文件系统——链接存在 ≠ 设备可读,也不代表 UUID 没被覆盖或损坏。
- 查看映射:
ls -l /dev/disk/by-uuid/,看到类似a1b2c3d4-... -> ../../nvme0n1p1 - 检查链接是否有效:
readlink -f /dev/disk/by-uuid/a1b2c3d4-...,目标设备节点必须存在且可访问 - 新格式化的分区可能不会立刻出现在这里,需触发 udev:
sudo udevadm trigger --subsystem-match=block或sudo partprobe - swap、LVM PV、未格式化分区不会生成链接,但
blkid仍可能显示 PARTUUID 或其他标识
别用 tune2fs/dumpe2fs 查所有文件系统
tune2fs -l /dev/sda1 | grep UUID 看起来简洁,但它只对 ext2/3/4 有效。xfs、btrfs、vfat、zfs 分区跑这个命令要么报错,要么静默无输出,容易误判为“没 UUID”。
- ext 系列可用:
tune2fs -l /dev/sda1 | grep "Filesystem UUID"(输出干净,适合脚本) - 避免用
dumpe2fs:输出冗长含调试信息,仅建议人工核对时用 - 执行报
Bad magic number in super-block?说明根本不是 ext 系,立刻停手 - CentOS 7.9 这类老系统默认不加载 btrfs/xfs 模块,
blkid可能也识别不了——先modprobe xfs再试
fdisk 分完没 mkfs)压根没有 UUID;而一次 dd 克隆或 mkswap 操作,就可能把原有 UUID 覆盖掉。










