为什么要持久化命名
/dev/sdX 的编号由内核探测顺序决定,重启、换卡、插拔盘之后都可能变化,直接写进 fstab 或脚本会导致挂载失败,甚至把数据挂到错误的盘上。稳定标识有三条路:用文件系统 UUID、用盘的 WWN、或者用 udev 规则按属性建立自己的符号链接。/dev/disk/by-uuid、by-id、by-path 就是系统按这些思路生成的目录。
基本信息
| 稳定标识来源 | 文件系统 UUID、盘 WWN、物理路径 |
|---|---|
| 系统目录 | /dev/disk/by-uuid、by-id、by-path |
| 查看工具 | blkid、lsblk、ls -l /dev/disk/by-id |
| 自定义方式 | udev 规则生成 SYMLINK |
| 权限要求 | root(写规则或改分区标识) |
典型使用场景
- 把挂载项写进 fstab 之前确认稳定标识
- 为数据盘建立固定名称供运维脚本使用
- 迁移磁盘到新机器后重新确认标识
- 排查重启后挂载失败的问题
- 多盘机器上区分系统盘与数据盘
- 为备份任务指定明确的源盘
- 为监控项绑定不会漂移的设备标识
查看稳定标识
查看稳定标识
lsblk -o NAME,SIZE,SERIAL,WWN # 设备名与序列号、WWN 一次看到
blkid /dev/sda1 # 取文件系统 UUID 与类型
ls -l /dev/disk/by-id/ | grep -i wwn # 查看按 WWN 生成的符号链接
ls -l /dev/disk/by-uuid/ # 查看按 UUID 生成的符号链接
udevadm info --query=all --name=/dev/sdb | head -20 # 查看可用于规则的属性三种稳定标识
| 方式 | 依据 | 适用场景 |
|---|---|---|
| by-uuid | 文件系统 UUID | 挂载项与文件系统层 |
| by-id 或 WWN | 盘的硬件标识 | 盘级管理与直通场景 |
| by-path | 控制器与端口路径 | 定位同一物理位置的设备 |
| 自定义 udev 规则 | 任意可用属性 | 业务需要固定命名时 |
udev 规则示例
udev 规则示例
ACTION=="add", SUBSYSTEM=="block", ENV{ID_WWN_WITH_EXTENSION}=="0x5000c500aabbccdd", SYMLINK+="disk/data01"RAID 逻辑盘用 WWN 或阵列 UUID 做稳定标识;单盘的命名规则只适用于直通或 JBOD 场景。
符号链接是按属性生成的,属性缺失时链接不会出现:规则写完触发一次 udev 再用 ls 确认,并留意规则文件的命名排序,避免被前面的规则抢先命中。
更换磁盘后要同步更新标识:新盘的 WWN 与序列号都变了,旧的规则与 fstab 条目不会自动跟着变,这是换盘流程里最容易被漏掉的一步。