Ubuntu 在磁盘上的哪里存储分区 UUID?

Ubuntu 在磁盘上的哪里存储分区 UUID?

UUID 到底存储在磁盘的哪个部分?MBR?分区内的某个地方?它是一个计算值,还是随机生成并记录的?

答案1

UUID 存储在超级块中(超级块有许多副本,以防其中一个副本损坏)。该值本身是使用 libuuid 生成的,它是 e2fsprogs 套件的一部分。有许多用于生成 UUID 的库;RFC4122 是一个很好的起点,因为它描述了更常用的技术并包含参考代码。

这里有几个可能有帮助的链接 - 它们特定于 ext2,但其他变体也应该有一个类似的存储 uuid 的地方:

http://www.nongnu.org/ext2-doc/ext2.html#S-UUID

http://linux.die.net/man/3/libuuid

答案2

似乎存在很大混乱。“分区 UUID”是确实存储在分区条目内但仅受 GPT 分区布局支持。但是,当有人提到“分区 UUID”时,他们通常实际上指的是“文件系统 UUID”。造成这种混淆的原因是 MBR 长期以来一直是分区表布局的事实标准,它不支持 UUID 或标签。这些是由文件系统实现的。而且由于文件系统通常覆盖单个整个分区,因此通过引用分区 UUID/标签,您明确指的是 FS UUID/标签。但时代已经变了。因此,目前的情况是:

  1. 文件系统 UUID:存储在分区上的文件系统内的 UUID。这个答案已经涵盖了该部分,我没有什么可补充的。

    lsblk指的是UUID

  2. 文件系统标签:存储在分区上的文件系统内的标签。

    lsblk指的是LABEL

  3. 分区 UUID:存储在每个 GPT 分区条目内的“唯一分区 GUID”,大小为 16 字节。不要与“分区类型 GUID”混淆。

    lsblk指的是PARTUUID

  4. 分区标卷:每个 GPT 分区条目内存储的任意文本,UTF-16 编码最多 36 个字符(是的,奇怪的编码选择

答案3

获取分区的 UUID 有很多种方法,但迄今为止最简单的方法是查看 /dev/disk/by-uuid/ 文件夹。例如,

[pobega@greedo]$ **ls -l /dev/disk/by-uuid/**
lrwxrwxrwx 1 root root 10 2009-08-26 17:13 02ce3c1b-8893-402a-9e12-c01ac752ac3b -> ../../sda2
lrwxrwxrwx 1 root root 10 2009-08-26 17:13 2dcd156b-7ec6-4bf5-b1a2-dd4f5fb5082a -> ../../sdb3
[...]

每个文件都是指向其 UUID 所在分区的符号链接(如果这句话难以理解,我很抱歉,但这是一个很难用语言表达的概念)。

相关内容