一个 UUID (通用唯一标识符)是一个 128 位代码,用于标识块(存储)设备。首先,这是所有 UUID 的用途吗?
设备如何获取其UUID?
它会改变吗?例如,在每次启动时?当安装新操作系统时?
UUID是如何生成的?是随机的吗?
大多数计算机没有超过 10 个存储设备。为什么需要这么多不同的名称?
答案1
该概念描述于RFC 4122它定义了生成的各种算法通用唯一标识符s。变体 4 使用随机数,是最常见的。
UUID 在很多场景中都有使用,以下是一些示例:
- 标记分区和文件系统是 Linux 中最常见的用法
- 网络管理器使用它们来识别网络设备和连接
- Virtual Box 和 Qemu-KVM 等虚拟机管理程序使用它们来识别虚拟机
- 它们在 Microsoft Windows 中使用,被称为GUIDs
- 它们用于内部的唯一性数据库
- 它们用于软件开发
在 Linux 中,所有发行版都附带该util-linux
软件包,其中包含uuidgen
生成 UUID 的命令。这是一个默认生成随机 UUID 的前端libuuid
,如果没有足够的熵可用,则生成基于时间的 UUID。
用于创建分区或文件系统的实用程序将生成 UUID,该 UUID 保留在该分区/文件系统中,直到您重新创建它们或显式更改 UUID(例如使用tune2fs
)
UUID 与文件系统和分区一起使用,以便为它们提供一致的名称(尽管名称很长)。这避免了双硬盘系统中 UEFI 固件的 BIOS 列出硬盘的情况,以便您的系统磁盘/dev/sda
在一次启动时分配并/deb/sdb
在下一次启动时分配(可能第一个磁盘在第二次启动时启动速度较慢)。
使用传统的命名方法,这会对您的/etc/fstab
文件造成严重破坏,因为您的系统将在错误的磁盘中查找要安装的分区。例如,这是我的交换条目:
/dev/sda4 none swap defaults 0 0
如果磁盘在启动时分配不同,我的系统将不会swap
在非系统磁盘上找到第四个分区类型(好吧,我在笔记本电脑上,所以它没有第二个磁盘,但你得到点),我的交换就会失败。
通过用 UUID 标记它们并使用它们,/etc/fstab
可以保证始终安装正确的文件系统。例如:
UUID=d8ab8967-f2de-4c76-902f-d8d9707c399e /media/files ext4 defaults 0 0
将始终挂载具有该 UUID 的分区,/media/files
无论 BIOS(或 UEFI 固件)在启动时标记它们的顺序如何。