了解 UUID 分配

Owe*_*wen 3 uuid

UUID(通用唯一标识符)是一个 128 位代码,用于标识块(存储)设备。首先,这是所有 UUID 的用途吗?

设备如何获取其 UUID?

它会改变吗?例如,在每次启动时?何时安装新操作系统?

UUID 是如何生成的?是随机的吗?

大多数计算机的存储设备不超过 10 个。为什么需要这么多不同的名字?

gar*_*Red 6

这个概念在RFC 4122 中有描述,它定义了用于生成UUID的各种算法。变体 4 使用随机数并且是最常见的。

UUID 的使用场景很多,举几个例子:

  • 标记分区和文件系统是 Linux 中最常见的用法
  • 网络管理器使用它们来识别网络设备和连接
  • 虚拟机管理程序,例如 Virtual Box 和 Qemu-KVM,使用它们来识别 VM
  • 将在Microsoft Windows中使用的,他们是知道的GUID小号
  • 它们用于数据库中的唯一性
  • 它们用于软件开发

在 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 的分区。