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