blkid 命令详解
更新时间:2026-09-17。「一个命令一个文档」系列,属于磁盘与文件系统族。挂载、写
/etc/fstab、核对"这块分区到底是什么文件系统、UUID 是多少"时用它。
一、常用法
bash
sudo blkid # 列出所有已探测块设备:UUID、TYPE、LABEL、PARTUUID
sudo blkid /dev/sdb1 # 只看某个分区
sudo blkid -s UUID # 只输出 UUID 字段
sudo blkid -o export /dev/sdb1 # export 键值格式,脚本 source 方便
sudo blkid -o value -s UUID /dev/sdb1 # 直接打印 UUID 值
sudo blkid -U <uuid> # 反查某 UUID 对应哪个设备
sudo blkid -L <label> # 按卷标找设备典型输出:
bash
/dev/sdb1: UUID="1b6e9d4a-...." BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="..."字段:UUID(文件系统唯一标识)、TYPE(ext4/xfs/btrfs/swap/vfat…)、LABEL(卷标)、PARTUUID(分区表/GPT 分区标识,注意与文件系统 UUID 不同)。
二、为什么 fstab 用 UUID
/dev/sda1 这类名字由内核枚举顺序决定,加盘、换 SATA 口、重启后可能漂移,导致挂错盘。UUID 写在文件系统里、稳定不变,所以 fstab 推荐:
fstab
UUID=1b6e9d4a-.... /data ext4 defaults,noatime 0 2
# 或 GPT 场景用 PARTUUID=取 UUID 就用 blkid(或 lsblk -f),改完 findmnt --verify 校验再 mount -a。
三、常见问题
- 普通用户 blkid 看不到盘:探测原始块设备通常需要 root,加
sudo;也可读/dev/disk/by-uuid/软链接(普通用户可见目录项)。 - 新建文件系统后 blkid 不显示/显示旧值:blkid 默认用缓存(
/run/blkid/blkid.tab),刚 mkfs 后blkid未更新时用blkid -g清缓存或重新探测,必要时wipefs清旧签名(盘上残留多套文件系统签名会显示冲突)。 - swap 的 UUID:
mkswap后 blkid 能看到TYPE="swap",写 swap 的 fstab 条目用其 UUID(见 swapon)。
四、和 lsblk/findmnt 的分工
blkid:直接给某分区的 UUID/TYPE/LABEL,脚本取值最精确。- lsblk:给设备树与挂载点的结构视图,
lsblk -f也显示 UUID,适合先看全局。 findmnt:查"当前实际挂载关系/选项",fstab 是配置、findmnt 是现状。
相关命令
设备树用 lsblk,挂载校验用
findmnt/mount,空间用 df(见磁盘 FAQ),清残留签名用wipefs,swap 见 swapon。
总结
blkid 精确报告块设备的文件系统 UUID、TYPE、LABEL、PARTUUID:脚本用 -o export/-o value -s UUID 取值、-U/-L 反查;它解决"/dev/sda 名字会漂移"问题,让 fstab 稳定地用 UUID 挂载;新建/重格文件系统后注意 blkid 缓存(-g 或 wipefs 清旧签名),看设备结构配合 lsblk、看实际挂载配合 findmnt。