最可靠方式是用 blkid 命令直接读取文件系统元数据,无需挂载且多数情况无需 root 权限;可查所有设备或指定分区,支持脚本解析;/dev/disk/by-uuid/ 用于反查设备名;挂载后可用 findmnt;修改 UUID 需按文件系统类型操作并更新 fstab。
Linux 中查看磁盘 UUID 最可靠、最常用的方式是使用 blkid 命令 —— 它直接读取文件系统元数据,不依赖挂载状态,也不需要 root 权限(但部分设备可能因权限限制显示为空)。
用 blkid 查看所有块设备的 UUID
这是最推荐的起点。它能列出所有已识别块设备(包括未挂载分区)的 UUID、FSTYPE、LABEL 等信息:
blkid
常见现象:普通用户运行时,某些 LVM 或加密设备可能显示 Permission denied;加 sudo 可绕过(但多数常规分区无需)。
- 输出中每行对应一个设备,形如:
/dev/sda1: UUID="a1b2c3d4-..." TYPE="ext4" LABEL="boot" - 只查某一分区:例如
blkid /dev/nvme0n1p2,响应快、无冗余 - 若需机器可解析输出(如脚本),加
-o value和-s UUID:例如blkid -s UUID -o value /dev/sdb1输出纯 UUID 字符串,无引号无空格
从 /dev/disk/by-uuid/ 目录反查设备名
该目录是内核通过 udev 自动创建的符号链接集合,本质是 UUID 到设备路径的映射。适合“已知 UUID,想确认它属于哪个设备”:
ls -l /dev/disk/by-uuid/
注意:这个目录内容依赖 udev 规则和设备探测状态。热插拔后可能延迟更新(通常几秒内同步)。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
- 每个链接目标是真实设备路径,例如
a1b2c3d4-... -> ../../nvme0n1p1 - 如果链接损坏或缺失,说明该设备当前未被内核识别(可能已拔出、故障或未初始化)
- 不能用于生成新 UUID,仅作只读查询用途
挂载后通过 findmnt 或 mount 查 UUID
当分区已挂载且你只想查某个挂载点对应的 UUID 时,这两个命令更聚焦:
findmnt -n -o SOURCE,TARGET,FSTYPE,UUID /home
findmnt 是现代替代方案,mount 输出较旧但兼容性更好(mount | grep '/home')。
-
findmnt -D可显示所有挂载项的 UUID(即使没显式指定-o UUID) - 缺点:未挂载的分区完全不会出现在结果里 —— 这和
blkid形成互补 - 某些网络文件系统(如 NFS)或 tmpfs 不支持 UUID,字段会为空或显示
N/A
修改或生成 UUID 的注意事项
UUID 是文件系统属性,不是设备物理标识。重写需针对具体文件系统类型,且有风险:
-
ext2/3/4:用tune2fs -U random /dev/sdX1(必须卸载) -
xfs:不支持修改 UUID;只能重新格式化(mkfs.xfs -f -U generate /dev/sdX1) -
swap:用mkswap -U random /dev/sdX2 - 操作前务必确认设备路径正确 —— 写错设备会导致数据彻底丢失
- 修改后,需同步更新
/etc/fstab和 GRUB 配置中引用的旧 UUID,否则系统可能无法启动
真正容易被忽略的是:LVM 逻辑卷本身没有 UUID,它的“UUID”其实是底层 PV/VG/LV 的标识符(见 pvs/vgs/lvs 输出),而文件系统 UUID 仍由 blkid 读取 —— 别把这两层混为一谈。
