做linux运维、服务器挂载、改fstab开机自动挂载时,几乎离不开blkid。很多新手习惯用lsblk、fdisk -l看磁盘,但想要快速拿到分区uuid、文件系统类型、卷标,blkid才是最简工具,系统默认自带,不用额外安装。blkid全称block device identifier,专门读取块设备元数据,读取系统/dev下硬盘、分区、swap、光驱、U 盘等块设备信息,核心输出内容:
- 设备路径:/dev/sda1、/dev/vdb2 这类分区标识
- uuid:分区唯一标识符,写 fstab 挂载首选,不受磁盘顺序变动影响
- 文件系统类型:ext4、xfs、swap、ntfs、vfat 等
- PARTUUID:分区唯一 ID(GPT 分区表专用)
底层读取设备超级块信息,无需挂载分区也能读取,这点比 df 好用很多。
不带任何参数,直接打印所有块设备完整信息,日常最常用。字段简单拆解:
partuuid:gpt分区专属id,mbr分区一般无。只想查看某一块盘,直接跟上设备路径,不用翻整屏内容:
blkid /dev/sdb
blkid -s UUID /dev/sdb | awk -F '"' '{print $2}'
#当然也可以提取TYPE和LABEL
blkid -s TYPE /dev/sdb
blkid -s LABEL /dev/sr0
3、简洁输出,去掉多余说明 -o value
blkid -s UUID -o value /dev/sdb
4、输出可直接写入fstab的挂载格式-o export一键生成标准挂载字段,复制粘贴到/etc/fstab直接用,省去手动排版
5、刷新磁盘缓存,新增硬盘识别不到 blkid -g
blkid -g
新增磁盘、扩容分区后,系统缓存没更新,blkid看不到新分区,执行刷新缓存。
场景 1:修改 /etc/fstab 实现开机自动挂载
很多新手用/dev/vdb1写挂载配置,服务器换硬盘顺序、新增磁盘后盘符会变,系统开机直接挂载失败,推荐用UUID挂载。
UUID=xyz789-1234-abcd-efgh-1234567890ab /data ext4 defaults 0 0
场景 2:识别U盘、移动硬盘文件系统
插入U盘后,不用挂载,直接blkid就能看到U盘设备、是NTFS还是 vfat,判断能否直接读写。
场景 3:查找 swap 分区 UUID,修改交换分区配置
重装系统、新增swap分区时,快速获取swap的 UUID,配置永久交换分区。
场景 4:脚本自动化磁盘挂载
利用-o value纯输出特性,脚本自动抓取UUID完成挂载,无需人工复制。
五、容易混淆命令区分:blkid vs lsblk vs fdisk
- blkid:侧重文件系统元数据(UUID、格式、卷标),挂载配置首选;
- lsblk:侧重磁盘硬件结构(分区大小、挂载点、层级结构),看磁盘容量更直观;
- fdisk -l:侧重分区表信息(分区类型、扇区),多用于分区扩容、新建分区。
日常写挂载配置优先 blkid,看磁盘大小用 lsblk,分区操作使用 fdisk。
六、常见踩坑点
- 执行 blkid 无输出:磁盘未识别,执行
blkid -g刷新缓存,或重启服务器; - 分区没有 LABEL:新建分区默认无卷标,可通过 tune2fs、xfs_admin 手动添加;
- 裸盘(未分区整块盘):无PARTUUID,只有文件系统UUID;
- 权限问题:普通用户可执行 blkid 读取信息,无需 root,部分老旧系统需 sudo。
七、总结
blkid看着简单,却是磁盘挂载、服务器运维的刚需命令。不用死记所有参数,记住 3 个核心用法足够日常使用:
- blkid -s UUID -o value 设备名:脚本提取纯 UUID;
- blkid -o export:快速生成 fstab 挂载参数。
平时配置磁盘自动挂载、排查磁盘识别异常,第一时间敲 blkid 准没错。
如果觉得文章对你的运维工作有帮助,记得点赞加关注。
#运维#linux运维#linux实战#blkid