小易说IT 小易说IT

Linux系统blkid命令完整详解

blkid 属于 util-linux 工具集,读取块设备的超级块元信息,获取文件系统 UUID、LABEL、TYPE、PARTUUID 等,写 /etc/fstab 首选;需要 root 权限。 原理:默认读取 /etc/blkid.tab 缓存;-p 模式绕过缓存直接扫磁盘超级块。

语法

blkid [选项] [设备名...]

一、核心标签含义(重点区分)

标签

含义

fstab 挂载是否用它

UUID

文件系统 UUID,格式化文件系统时生成,ext4/xfs/swap/ntfs/vfat

✅ fstab 优先用这个

TYPE

文件系统类型:xfs /ext4 /swap/ntfs /vfat/ LVM2_member

用来确认类型

LABEL

文件系统卷标(自定义名字)

✅ 也可以 LABEL=xxx 挂载

PARTUUID

GPT 分区表的分区 ID(分区本身的标识)

一般不用;GPT 特殊场景才用

PARTLABEL

GPT 分区的分区名称

极少用

一句话:重新格式化分区 → UUID 变,PARTUUID 不变。

二、常用选项表

参数

说明

-s TAG

只输出指定标签,可多次 -s UUID -s TYPE

-o FORMAT

输出格式:full /value/device /export/udev

-t NAME=val

按标签值搜索设备,例如 -t UUID=xxx

-l

-t 配合,只返回匹配到的第一个设备

-U <uuid>

通过 UUID 反查设备路径(UUID → /dev/sda1)

-L <label>

通过 LABEL 反查设备路径(LABEL → /dev/sda1)

-p

底层探测,绕过缓存直接读磁盘,新分区没缓存时用

-c 文件

指定缓存文件;-c /dev/null 禁用缓存

-g

缓存 GC,清理已经拔掉、不存在的设备缓存

-i

查看设备 IO 对齐、块大小信息

-h

帮助;-V 版本

-o 输出格式说明:

  • full:默认格式,/dev/sda1: UUID="xxx" TYPE="xfs"

  • value:只输出值,脚本提取 UUID 神器

  • device:只输出设备名

  • export:KEY="VALUE" 环境变量格式,适合脚本 source

  • udev:udev 规则使用的 ID_FS_* 格式

三、高频实战命令(生产日常)

1. 列出所有块设备(最常用)

blkid

2. 只查看单个分区

blkid /dev/sdb1

3. 只提取 UUID(脚本自动化首选,写 fstab 复制)

# 只输出UUID值,不带引号
blkid -s UUID -o value /dev/sdb1

同理只看 LABEL / TYPE

blkid -s LABEL -o value /dev/sdb1
blkid -s TYPE -o value /dev/sdb1

4. 多标签同时输出

blkid -s UUID -s TYPE -s LABEL /dev/sdb1

5. 根据 UUID 反向查设备(排查 fstab)

blkid -U "0425f958-812c-4018-805d-9123456abcde"

6. 根据 LABEL 反向查设备

blkid -L "data-disk"

7. 搜索:查找 TYPE=xfs 的所有设备

blkid -t TYPE=xfs
# 只取第一个匹配
blkid -t TYPE=xfs -l

8. 绕过缓存直接扫描(刚 mkfs 格式化,缓存没更新时必用)

blkid -p /dev/sdb1
# 禁用缓存等价写法
blkid -c /dev/null /dev/sdb1

9. export 格式,脚本导入变量

blkid -o export /dev/sdb1
# 可以直接 source
eval $(blkid -o export /dev/sdb1)
echo $UUID

10. 查看 IO 参数(扇区、对齐)

blkid -i /dev/sdb

四、LVM 逻辑卷注意

LVM 的 /dev/mapper/vg-lv 也是块设备,blkid 直接读 LV 本身的 UUID:

blkid /dev/mapper/centos-root

✅ fstab 直接填这个 LV 的 UUID,不要写底层 PV 分区的 UUID

五、常见坑

  1. 未格式化裸分区:没有 UUID、TYPE 为空

  2. MBR 分区一般没有 PARTUUID,只有 GPT 才有

  3. 格式化后 blkid 看不到新 UUID:缓存没刷新 → 加 -p

  4. FAT32 的 UUID 是短格式,如 ABCD-1234,fstab 可以直接使用

  5. blkid 看不到挂载点,挂载点看 lsblk -f / df

  6. 不要把 PARTUUID 复制到 fstab 的 UUID= 字段,会挂载失败

六、配套对比

  • blkid:侧重文件系统元数据(UUID/TYPE/LABEL)

  • lsblk -f:侧重设备树拓扑 + 挂载点,可视化更好

  • /dev/disk/by-uuid/:udev 生成的软链接,本质和 blkid 一致

七、运维标准工作流(配置 fstab)

# 1. 理清磁盘结构
lsblk
# 2. 获取目标分区UUID
blkid -s UUID -o value /dev/sdb1
# 3. 备份fstab,写入UUID配置
cp /etc/fstab /etc/fstab.bak
# 4. 校验
mount -a

本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/linux-blkid-command-complete-guide

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/