Linux blkid 命令:查询 UUID、文件系统类型与分区标识
blkid 查询块设备内容的文件系统类型、UUID 和标签等识别信息,适合核对挂载配置中的标识。它识别设备上记录的内容,不显示完整的磁盘依赖树,也不能单独证明设备可安全覆盖。
UUID 是 Universally Unique Identifier,即通用唯一标识符,常用于标识文件系统;TYPE 表示识别出的内容类型,LABEL 是已设置的标签。相比 /dev/sdX 设备名,UUID 较少受硬件检测顺序影响,但克隆可能产生重复值,重新创建文件系统也可能改变标识。
基本语法与查询权限
blkid [options] [device]
方括号中的词是说明性占位符,不应原样输入。本文以 util-linux 的 blkid 为范围;实现和选项可能不同,应先用 man blkid 核对本机手册。未指定设备时,可显示识别到的分区或未分区设备;指定设备时,只查询对应对象。
设备概览通常可先通过 lsblk 的设备结构与文件系统查询了解。blkid 在具备权限时可从设备读取内容;普通用户可能获得尚未验证的缓存信息。输出为空、缺少字段或设备未列出,都不能直接推断“没有文件系统”。
查询设备与提取 UUID
查看能够识别的设备。 具备相应管理员授权时:
sudo blkid
这会列出识别到的属性,结果不保证包括所有物理磁盘,也不是挂载状态清单。设备和属性的输出顺序不固定,脚本不应依赖某个设备总在第一行。
查询一个已确认的分区。
sudo blkid /dev/sdb1
/dev/sdb1 仅是示例,应替换为本机已核实的设备路径。先对照主机、设备容量与 lsblk 关系,再读取属性;不要把示例设备名直接用于后续写入或挂载操作。
只提取该设备的 UUID 标签值。
sudo blkid -s UUID -o value /dev/sdb1
-s UUID 选择标签,-o value 省略标签名,只输出其值。对于一个设备且存在该标签时,通常可得到一个值;空输出不能直接当作可用 UUID,更不能据此把空字符串写入配置。
尤其要注意:上游说明 -s 只过滤显示标签,不改变退出状态。因此即使命令返回成功,也仍须检查实际输出是否非空、是否符合预期设备的标识,不能只检查返回码就认为 UUID 已正确提取。
读懂 UUID、TYPE 和 PARTUUID
下面使用另一个示例设备,说明完整属性输出。它不是要求改查或修改系统根分区:
sudo blkid /dev/sda2
以下标识符仅用于演示,不是当前主机实测值,不能复制到实际配置:
/dev/sda2: UUID="11111111-2222-3333-4444-555555555555" TYPE="ext4"
冒号前是设备路径,UUID 后的引号中是内容的标识值,TYPE="ext4" 表示识别到 ext4 文件系统。实际结果还可能有 LABEL、PARTUUID 或其他属性;并非每个设备都会出现每个字段。TYPE 还可能表示交换空间等内容,不应与 lsblk 中 disk、part、lvm 这类设备类型混淆。
UUID 通常标识文件系统等内容;PARTUUID 标识分区表中的分区,两者不是同一个层次。只重新创建文件系统未必改变分区表标识;重建分区或克隆也可能影响其值。应读取实际字段,而不是根据“操作了什么”猜测新的标识。
fstab 的设备标识说明支持用 UUID=、LABEL= 等引用设备,也说明可使用 PARTUUID= 等分区标识。向 /etc/fstab 写入前须结合文件系统类型、目标挂载点和现有设置核对;这里提供的是查询方法,不是可直接粘贴的完整挂载配置。
主要选项与查找方式
| 选项 | 用途与条件 |
|---|---|
-s tag |
仅显示指定标签,如 UUID 或 TYPE;不改变退出状态。 |
-o format |
指定输出格式;value 只显示标签值。 |
-L label |
按文件系统标签查找并返回设备路径。 |
-U UUID |
按文件系统 UUID 查找并返回设备路径。 |
-p |
低级探测,绕过缓存;可能显示不同的属性名与额外状态。 |
例如 sudo blkid -L 'data volume' 中的标签应换为实际值,包含空格时加引号;sudo blkid -U '实际UUID' 中也须替换占位内容。两者用于定位路径,不能证明该标识在所有设备中唯一。若怀疑克隆造成重复,应结合 lsblk 和具体设备查询逐项排查。
旧的 e2fsprogs 实现对 -L 的含义可能不同,应先确认实现;可移植脚本需要按对应手册选择查询方式。不要把 util-linux 的示例直接套到所有同名程序上。
空结果、冲突与安全核对
普通查询可能忽略检测出多个冲突文件系统签名的设备。支持且具备读取权限时,可针对已核实设备使用低级模式,例如 sudo blkid -p /dev/sdb1,但不能把“低级探测”当作修复、检查文件系统完整性或擦除旧签名。
低级模式可能使用 PART_ENTRY_UUID 等属性名,而通常查询显示 PARTUUID;解析时不能假设两种模式的字段名完全相同。util-linux 手册给出的状态包括:0 表示取得可识别信息,2 表示指定标识未找到或无法取得识别信息,4 表示用法等错误,8 表示低级探测发现歧义。应把状态、错误信息和输出内容一起判断。
- 先核对目标主机和真实设备路径,区分整盘、分区与逻辑设备。
- 对照 lsblk 的容量和依赖关系,以及实际挂载状态,确认识别值属于预期对象。
- 怀疑重复 UUID 或缓存陈旧时,核对具体设备和权限;不要仅凭一次按标识查找的结果执行写入。
- 修改配置或进行存储操作前,另行确认备份和恢复方式;查询不到信息也不是格式化或擦除签名的依据。
blkid 用于识别内容,不会替你建立备份、验证应用可用性或证明设备闲置。遇到缓存、权限或签名冲突,应先查清原因,再按文件系统与存储方案处理;不要为了让查询结果“干净”而删除数据或标识。
常见问题
blkid 的 UUID 与 PARTUUID 相同吗?
不同。UUID 通常来自文件系统等内容,PARTUUID 来自分区表中的分区标识。两者可能同时存在,也可能只有其中一个;配置时必须使用对应前缀和实际查询到的值。
官方文档
util-linux 上游 blkid 手册说明标签选择、缓存、低级探测、输出格式和退出状态。最新手册可能包含旧版本没有的功能,应以本机支持的选项为准。




