最稳妥方式是用 UUID 挂载磁盘,因其写入文件系统元数据、不随设备名变动;查 UUID 首选 blkid(直接读 superblock,无需挂载),其次可用 /dev/disk/by-uuid/ 验证映射,修改 UUID 后须同步更新 fstab 和 initramfs。

直接用 UUID 挂载磁盘,是解决盘符漂移最稳妥的方式。设备名(如 /dev/sdb1)会随硬件识别顺序变化而变动,但每个已格式化分区的 UUID 是写在文件系统元数据里的固定值,只要不重格式化,它就始终不变。
怎么查磁盘的 UUID?首选 blkid
blkid 是最可靠、最常用的方法——它直接读取文件系统 superblock,无需挂载,也不依赖 udev 缓存。普通用户多数情况下就能运行,遇到权限受限设备(如某些 LVM 或加密卷)再加 sudo 即可。
- 查所有分区:
blkid或sudo blkid - 查某一分区:
blkid /dev/nvme0n1p2(响应快,无冗余) - 脚本中提取纯 UUID 字符串:
blkid -s UUID -o value /dev/sdb1(输出不带引号、无空格)
输出形如:/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4",复制时注意去掉英文双引号。
/dev/disk/by-uuid/ 是什么?怎么用?
这个目录是内核通过 udev 自动维护的符号链接集合,每个文件名就是 UUID,指向对应的真实设备路径,例如:a1b2c3d4-... -> ../../sdb1。
- 运行
ls -l /dev/disk/by-uuid/可快速验证 UUID 和设备的映射是否建立 - 注意:链接存在 ≠ 设备当前可用;若刚改过 UUID 或设备节点权限异常,链接可能失效
- 它不能替代
blkid查真实元数据,但适合人工核对或简单脚本判断设备是否存在
UUID 在 fstab 中怎么写?关键细节
编辑 /etc/fstab 时,把设备名换成 UUID 格式即可:
- UUID 后面不加引号,也不加等号,直接空格接挂载点
- 确保文件系统类型(
TYPE字段)和实际一致,比如 xfs 分区别写成 ext4 - 修改后务必执行
sudo mount -a测试语法是否正确,避免重启失败
哪些情况 UUID 会变?要特别注意
UUID 不是绝对一成不变的,以下操作会导致它被重写:
- 重新格式化分区(
mkfs.ext4、mkfs.xfs等) - 手动修改:ext 类型用
tune2fs -U,xfs 类型用xfs_admin -U - 克隆整个磁盘但未重置 UUID(此时多个设备 UUID 相同,必须修正)
一旦改了 UUID,必须同步更新 /etc/fstab 和 initramfs(如使用 update-initramfs -u),否则系统可能卡在启动早期。


















