blkid查不到新分区是因为内核未刷新分区表,需执行partprobe或blockdev --rereadpt;其输出包含uuid、type、partuuid等字段,支持-s、-t、-c等参数过滤;uuid匹配但fstab挂载失败常因文件系统模块未加载、元数据被覆盖或运行环境缺失/dev绑定。

blkid 是 Linux 下查分区 UUID 和文件系统类型的最直接命令,不用挂载、不依赖 /etc/fstab,只要设备节点存在(比如 /dev/sda1)就能读出元数据。
为什么 blkid 查不到新创建的分区?
常见错误是:fdisk 或 parted 分完区立刻跑 blkid,但没通知内核刷新分区表。内核还“看不见”这个新分区,自然查不到。
- 执行
partprobe(推荐)或blockdev --rereadpt /dev/sda强制重读分区表 - 如果提示
BLKRRPART: Device or resource busy,说明分区正被占用(比如已挂载或有 LVM PV),先umount或停用相关服务 - 虚拟机环境下有时需重启 udev:运行
udevadm trigger --subsystem-match=block
blkid 输出字段含义和常用过滤方式
默认输出类似 /dev/sda1: UUID="..." TYPE="ext4" PARTUUID="...",其中 TYPE 是文件系统类型,UUID 是该文件系统的唯一标识,PARTUUID 是 GPT 分区本身的 ID(MBR 无此项)。
- 只看 UUID:
blkid -s UUID -o value /dev/sda1(-o value去掉键名和冒号) - 批量查所有块设备(含 LVM、RAID 成员盘):
blkid -c /dev/null(-c /dev/null跳过缓存,确保实时) - 过滤只显示 ext4 分区:
blkid -t TYPE=ext4;多个条件用逗号:-t "TYPE=ext4,UUID=abc..."
UUID 查出来但 /etc/fstab 挂载失败?注意这三点
UUID 对得上,但开机挂载报 mount: wrong fs type 或 No such device,大概率不是 blkid 的问题,而是上下文错位:
- 确认当前系统支持目标文件系统:比如
lsmod | grep xfs看是否加载了xfs模块;CentOS 7 默认不带btrfs支持 -
blkid查的是设备当前格式,但若该分区曾被mkswap、pvcreate或加密工具处理过,元数据可能被覆盖,blkid会返回空或错误类型 - 容器或 chroot 环境中运行
blkid时,若未绑定/dev,会漏掉真实设备——检查ls /dev/sd*是否有对应节点
真正麻烦的不是怎么查 UUID,而是查到之后发现它指向一个已被格式化、被 LVM 清除、或被加密层包裹的设备——这时候 blkid 没撒谎,只是你手里的“钥匙”已经打不开那扇门了。










