08_UUID
约 793 字大约 3 分钟
2026-02-10
# Linux 中的 UUID 全面理解(运维视角)
> 本文用于澄清 Linux 中不同“UUID”的来源、作用与设计动机,避免概念混淆。
---
## 一、什么是 UUID?
**UUID(Universally Unique Identifier)**
在 Linux 中,用来在某个管理范围内 **稳定、唯一地标识一个“对象”**。
⚠️ 关键点:
- UUID 标识的是 **对象**
- 对象不一定是硬件
- UUID 不等于设备名
- UUID 的作用域因对象而异
---
## 二、一个常见误解
❌ 错误理解:
> UUID 是文件系统里所有硬件资源都有的属性
✅ 正确理解:
> UUID 是 Linux 为“需要被稳定识别的对象”分配的唯一标识
对象可以是:
- 文件系统
- 系统实例
- 网络连接配置(网卡里面的uuid)
- 虚拟资源
---
## 三、Linux 中常见的 3 类 UUID
---
### 1️⃣ 文件系统 UUID(最常用)
#### 标识对象
- **文件系统本身**
- 不是磁盘
- 不是接口
#### 为什么需要?
- `/dev/sda`、`/dev/sdb` 等设备名 **不稳定**
- 根据不同的插拔顺序、硬件变化、虚拟化都会导致变化
既然设备名不能稳定标识机器,此时使用 UUID 进行挂载,确保稳定性。
#### 查看方式
```bash
blkid
lsblk -f2️⃣ 系统 UUID(machine-id)
标识对象
- 系统实例本身
- 不是硬件 ID
- 不是主机名
存储位置
/etc/machine-id查看方式
cat /etc/machine-id
hostnamectl使用场景
- systemd
- 日志系统
- 授权校验
- 集群节点识别
⚠️ 注意:
- 重装系统会生成新的 machine-id
- 克隆系统必须修改,否则会冲突
3️⃣ 网卡 UUID(NetworkManager)
标识对象
- 网络连接配置
- 不是网卡硬件
重要区分
- 网卡硬件 → MAC 地址
- 网卡 UUID → 一份“连接配置”
同一块网卡可以有多份配置:
- DHCP
- 静态 IP
- VLAN
- 不同路由策略
查看方式
nmcli connection show配置文件位置
/etc/NetworkManager/system-connections/⚠️ 一般不推荐手动修改 UUID
四、为什么“每一类对象”都要自己的 UUID?
因为它们解决的是 不同层面的问题。
| 对象 | 解决的问题 |
|---|---|
| 文件系统 UUID | 设备名不稳定 |
| 系统 UUID | 系统实例身份识别 |
| 网卡 UUID | 网络配置唯一性 |
五、统一理解模型(核心)
UUID = 在某个管理范围内,用于稳定指代一个对象的唯一名字
- 不一定来自硬件
- 不一定全局唯一
- 但在其作用域内必须唯一
六、类比理解(推荐记忆)
类比为一家公司
| 现实世界 | Linux |
|---|---|
| 员工工号 | system UUID |
| 工位号 | /dev/sda |
| 员工档案编号 | 文件系统 UUID |
| 上班路线 | 网卡连接 UUID |
- 工位会变,人不变
- 路线会变,人不变
- 档案号不变,系统才认得你
七、运维经验总结
不要一上来就进配置文件找 UUID
先搞清楚:
- 找的是哪一类 UUID
- 为了解决什么问题
UUID 是为“稳定性”服务的,而不是为了复杂
八、速查表
| 需求 | UUID 类型 | 命令 |
|---|---|---|
| 挂载磁盘 | 文件系统 UUID | blkid |
| 查看分区 | 文件系统 UUID | lsblk -f |
| 系统身份 | machine-id | cat /etc/machine-id |
| 网络配置 | NM UUID | nmcli connection show |
