谁能解释一下在基于 Linux 的发行版中如何生成分区的 UUID(通用唯一标识符)?
答案1
GPT 分区的 UUID 和文件系统的 UUID 都是在创建分区/文件系统时随机生成的。您可以检查它们是否是版本 4 UUID。
答案2
uuid 只是格式化(特定位置的连字符)随机字节,因此没有什么神奇之处。
通过查看源代码(apt-get source libuuid1
如果您使用的是基于 Ubuntu 的发行版,您可以使用该源代码),uuid 生成要么使用真正的随机字节(已知相当慢——您可以通过从 /dev/random 特殊文件读取来获取这些字节)文件)或基于时间的字节(几乎是瞬时的,但不加密安全)。
答案3
Linux 发行版中生成的分区的 UUID 是版本 4。版本 4 UUID 旨在从真随机数或伪随机数生成 UUID。它描述于RFC 4122。
答案4
目前我的 Ubuntu 15.04 UUID 版本 4 用于分区。
版本 4 UUID 使用仅依赖于随机数的方案。
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
这里 4 表示版本号
x 是任意十六进制数字
y 是 8、9、A 或 B 之一
重复的随机 UUID 概率
在总共 128 位中,两位表示 RFC 4122(“Leach-Salz”)UUID,四位表示版本(0100 表示“随机生成”),因此随机生成的 UUID 有 122 个随机位。两个这样的 UUID 具有相同值的机会可以使用概率论(生日悖论)来计算。使用近似值
这些是计算 n 个 UUID 后发生意外冲突的概率,其中 x = 2^122:
从这些数字来看,一个人每年被陨石击中的风险估计为 170 亿分之一,这意味着概率约为 0.00000000006 (6 × 10−11),相当于创造一年内有几十万亿个 UUID,并且有一个重复。换句话说,只有在接下来的 100 年中每秒生成 10 亿个 UUID 后,仅创建一个重复项的概率才会约为 50%。
来源:维基百科