为什么lvm2使用混合大小写的UUID?

为什么lvm2使用混合大小写的UUID?

我注意到lvm2对象使用混合大小写的 UUID:

~ # lvdisplay                                                                                                                                        
  (...)
  LV UUID                yD0FAx-1nHj-O8vV-qNyI-k1RA-hZsj-UF439H


~ # pvdisplay                                                                                                                                        
  (...)
  PV UUID               mXOay3-gT0A-3eVM-5nVD-RI2q-D6A9-j2o04v

考虑到这一点,是否有特殊原因标准(见6.5.4)明确不鼓励这种使用(强调我的)?

注 – 建议所有人类可读格式中使用的十六进制表示形式仅限小写字母。然而,处理这种表示的软件需要接受 6.5.2 中指定的大写和小写字母。

答案1

X.667 讨论以十六进制表示的 UUID; LVM UUID 则不然。此外,LVM UUID 中的大小写很重要:

lvdisplay select uuid=yD0FAx-1nHj-O8vV-qNyI-k1RA-hZsj-UF439H

会找到你的LV,但是

lvdisplay select uuid=YD0FAx-1nHj-O8vV-qNyI-k1RA-hZsj-UF439H

惯于。

答案2

应该是历史性的。 32 字节 UUID 可以追溯到 LVM 1。

挖掘旧资源显示在某个时刻它从 16 字节更改为 32 字节:

lvm-0.8final-2.4.0.patch:312:-#define   UUID_LEN        32  /* don't change!!! */
lvm-0.8final-2.4.0.patch:313:+#define   UUID_LEN        16  /* don't change!!! */

挖掘邮件列表产生一些关于早期 LVM 中 UUID 的旧讨论:

https://www.redhat.com/archives/linux-lvm/1999-August/msg00076.html

> It should be
> able to identify PVs by UUID (if this is in 0.7,

Today it identifies PVs by  PV number/VG name  pair.
That obviously is not unique ;*)
But it's sufficient on a single computer system.

https://www.redhat.com/archives/linux-lvm/1999-November/msg00039.html

One of my TODO items for the future still is to have UUIDs
(Uniform Unique Identifiers) for VGs and for system ownership of a VG.

https://www.redhat.com/archives/linux-lvm/2000-September/msg00043.html

I hope nobody is calling pvcreate in an rc script...  From what Heinz
said about LVM 0.9, it will finally implement UUID support, so LVM
will be able to identify a PV no matter what device it is on.

我发现的 32 字节类型 UUID 的最早参考日期为 2000 年 11 月/12 月:

https://www.redhat.com/archives/linux-lvm/2000-December/msg00185.html

Subject: [linux-lvm] LVM-0.9 Touble in pvcreate
[...]
PV UUID               MB5eIp-jxvc-4pup-ncSM-O6xT-fMmu-JjYgzM

所以它应该被添加到 LVM 0.9 中(如前端可见)。

但即便如此,我也找不到其中提到的确切理由。我想从那时起就没有人认为有任何理由将其更改为更“标准”的 UUID 格式。

事实上,我在 LVM2 代码中发现了对此的抱怨:

https://github.com/lvmteam/lvm2/blob/32a8865a272d31d5bc12332a4da0309ce3af9243/lib/uuid/uuid.c#L115-L119

/*
 * The only validity check we have is that
 * the uuid just contains characters from
 * '_c'.  A checksum would have been nice :(
 */

我想,不可能拥有一切。 :-)

相关内容