blkid 是什么
blkid 直接读取块设备上的超级块元数据,输出 UUID、TYPE、LABEL 等标识它不需要挂载文件系统,属于 util-linux 套件。它的核心价值是给 /etc/fstab 提供不漂移的设备标识:/dev/sdX 的命名取决于内核探测顺序,加一块盘、换一次盘位、改一次 BIOS 启动顺序都可能让盘符变化,用设备名写 fstab 轻则挂错分区,重则系统起不来。UUID 在 mkfs 时写入文件系统内部,与设备路径无关,是持久化挂载的正确选择;分区表层面还有 PARTUUID 可用。
基本信息
| 适用平台 | Linux(util-linux 套件,主流发行版默认安装) |
|---|---|
| 命令语法 | blkid [选项] [设备...] |
| 常用选项 | -s 只输出指定标签 -o value 只输出值 -o list 列表模式 -U 按 UUID 反查设备 -L 按 LABEL 查设备 -c /dev/null 跳过缓存 |
| 所属 | util-linux |
| 权限说明 | 读块设备需要 root;普通用户通常只能看到缓存中的结果,直接 blkid 可能无输出 |
典型使用场景
- 写 fstab:取 UUID 与文件系统类型,避免用盘符导致开机挂载错盘
- 识别设备:新加的数据盘先确认 TYPE 是 xfs 还是 ext4,再决定用什么工具处理
- 反查设备:运维手册只留了 UUID,用 blkid -U 找回当前对应的设备路径
- 排查挂载失败:确认 LABEL 是否重名、UUID 与 fstab 记录是否一致
- 换盘核对:替换硬盘后核对新盘的标识,确认恢复流程指向正确的卷
常用示例
常用示例
sudo blkid # 列出全部已识别块设备
sudo blkid /dev/sdb1 # 只看单个设备
sudo blkid -s UUID -s TYPE -o value /dev/sdb1 # 只输出取值,便于脚本
sudo blkid -U <uuid> # UUID 反查设备路径
sudo blkid -L data1 # 按 LABEL 查设备
sudo blkid -o list # 列表模式,人读友好
sudo blkid -c /dev/null # 跳过缓存重新探测fstab 标识写法对比
| 写法 | 指向什么 | 风险 |
|---|---|---|
| /dev/sdb1 | 内核枚举顺序决定的设备名 | 加盘或改启动顺序后可能指向别的分区,严重时无法开机 |
| UUID=... | 文件系统内记录的 UUID | 稳定可靠,重建文件系统后需更新;跨环境推荐 |
| LABEL=... | 文件系统标签 | 稳定但可能重名,多机多盘环境易挂错 |
| PARTUUID=... | 分区表记录的 UUID | 与文件系统重建无关,GPT 场景与系统盘常用 |
mkfs 重建文件系统会生成新的 UUID,旧 fstab 条目立即失效。重建后必须重新执行 blkid 并更新 fstab,否则下次开机挂载失败。
改完 fstab 先执行 mount -a 验证,再安排重启。跳过这步直接重启,一旦条目有误会进入 emergency 模式,远程机器将失去登录。