做什么
看每个块设备 / 分区的 UUID + 文件系统类型 + 标签。/etc/fstab 用 UUID 挂载的依据。
实战
sudo blkid
# /dev/sda1: UUID="abc-123-def-456" TYPE="ext4" PARTUUID="xxx"
# /dev/sda2: UUID="789-xyz" TYPE="swap"
# /dev/sdb1: UUID="data-uuid-here" TYPE="xfs" LABEL="data"
sudo blkid /dev/sdb1 # 仅某分区
sudo blkid -L data # 按 label 找
sudo blkid -U abc-123-def-456 # 按 UUID 找
字段含义
| 字段 | 含义 |
|---|---|
UUID |
文件系统的唯一标识 |
TYPE |
文件系统类型(ext4 / xfs / ntfs / vfat 等) |
LABEL |
卷标(如果设了) |
PARTUUID |
分区表里的 UUID(不同于 fs UUID) |
PARTLABEL |
分区表里的 label(GPT 才有) |
在 fstab 里用
sudo blkid /dev/sdb1
# /dev/sdb1: UUID="data-uuid" TYPE="ext4"
# 加到 /etc/fstab
echo 'UUID=data-uuid /data ext4 defaults 0 2' | sudo tee -a /etc/fstab
sudo mount -a # 验证
用 UUID 比 /dev/sdb1 稳——盘顺序可能变。
其他获取 UUID 的方式
ls -l /dev/disk/by-uuid/ # 软链接形式
# lrwxrwxrwx ... abc-123-def -> ../../sda1
# lsblk 也能看
lsblk -f
# NAME FSTYPE LABEL UUID MOUNTPOINTS
# sda1 ext4 abc-123-def /
生成新 UUID(重做克隆盘必备)
克隆磁盘镜像后两个盘 UUID 相同 → 冲突。给一个改新 UUID:
# ext4
sudo tune2fs -U random /dev/sdb1
# 或指定
sudo tune2fs -U new-uuid /dev/sdb1
# xfs
sudo xfs_admin -U generate /dev/sdb1
# swap
sudo swaplabel -U $(uuidgen) /dev/sdb2
看 cache
blkid 会缓存结果到 /run/blkid/blkid.tab——新分区刚建可能没扫到:
sudo blkid -c /dev/null # 跳过 cache 重新扫
sudo partprobe # 让内核重新读分区表
坑
- UUID 改了之后fstab 里的旧 UUID 不会自动更新——同步改
- macOS / BSD 没 blkid——用
diskutil - 容器里看到的 UUID 可能不是宿主真实的