做什么

看每个块设备 / 分区的 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 可能不是宿主真实的