UUID和PARTUUID有什么区别?


15

我已按照raspberry pi论坛中的步骤进行操作,以使Raspberry Pi 3使用USB密钥而不是SD卡作为根文件系统,以期使其对断电更加可靠。

该过程有效,但是我浪费了时间,因为我混淆了UUID和PARTUUID进行分区(使用blkid并查看它们之间的区别)。两者的目的是什么?通过在各处使用UUID而不是PARTUUID来解决我的困惑比较容易,但是失败了,我不得不使用PARTUUID(我认为可以使用混合,但我没有尝试搜索它)。

请注意,引用的页面暗示该驱动器的UUID是该分区的PARTUUID,但是我希望该驱动器的所有分区的UUID都相同,事实并非如此。


1
嗨,AProgrammer,欢迎来到Raspberry Pi堆栈交换。我认为您应该考虑这不是有关Raspberry Pi的问题!如果它在主要的Linux论坛中,那么将会有更多的人看到此问题(既可以回答问题,也可以从提供的答案中受益)。
Tai Viinikka '17

@TaiViinikka,我承认在此与unix.se之间犹豫不决,但考虑到我遇到了树莓派的问题,并且在使用x86上的debian和debian派生发行版(包括UUID而不使用UUID)工作了23年之后,我再也没有遇到过这个问题。满足它-我的反应是问题的一部分-尽管我可能与树莓派有关系。
AProgrammer

这是可以理解的,我很高兴您得到了答案。我的经历(很简短)与您的经历有所不同。我拥有的每个分区的UUID和PARTUUID不匹配:root @ herald:〜#cat / proc / cpuinfo vendor_id:真正的Intel型号名称:Intel(R)Atom(TM)CPU D2550 @ 1.86GHz root @ herald:〜#blkid / dev / sda1:LABEL =“启动” UUID =“ e92827af-6c5d-4438-b22a-8f9b3b4dc4f0” TYPE =“ ext4” PARTUUID =“ 44e5688f-01”这样我得出了相反的结论。
Tai Viinikka

Answers:


14

UUID和PARTUUID之间的区别

你可以得到有关的区别有一些提示UUID,并PARTUUID通过指定的-p选项。

blkid -p /dev/sda1

或您正在查看的任何设备/分区。您可能已经注意到,如果同一UUID设备上有多个分区,PARTUUID则大多数分区都相同,并附加了分区号。

UUID保证A 是唯一的。据我所知,在宇宙的生命周期内不会发生碰撞。但是,您会注意到,PARTUUID它要短得多。这些是“本地”唯一的,并且所有已知的之间很可能发生冲突PARTUUIDs

在UUID上

UUID只是唯一的标识符。它们用于许多不同的目的。您可以使用uuidgen函数生成它们。

要进一步了解UUID,请执行以下操作:

$man uuidgen 

或互联网:

uuidgen的联机帮助页

其他一些UUID使用示例

$cat /etc/fstab

对于较新的GNU / Linux系统,您将拥有所有分区及其UUID的列表。为每个新分区生成一个新的UUID。因此,如果重新分区给定的驱动器,则该驱动器的所有blkid UUID都会更改。

UUID用作分区和驱动器的标识符的部分原因是,即使在以不同顺序添加或安装驱动器时也要维护标识符。在以前的时间中,它们fstab将具有诸如/dev/sda1...的标识符。这具有以下缺点:sda1如果以某种方式更改了安装顺序,则可能是物理上不同的驱动器或分区。

在PARTUUID上

PARTUUIDs 是GUID分区表(GPT)的组件,该表替代了与主引导记录(MBR)相关的磁盘分区。

有关更多信息,请参见Linux.com-在Linux中使用新的GUID分区表

Linux.com说:

GPT GUID(全局唯一标识符)和我们熟悉的Linux UUID(通用唯一标识符)虽然具有相同的有用目的,但它们并非一回事:给块设备唯一的名称。Linux UUID是文件系统的功能,并且在创建文件系统时创建。要查看Linux UUID,只需启动blkid命令即可。请注意Partition GUID代码以及其显示为“ Microsoft基本数据”的方式。是的,Microsoft总是会崩溃,因为这是EXT4分区,因此Windows无法读取它,但是会将其视为未格式化的分区。在当前版本的gdisk中,您将看不到这一点,因为直到2011年为止,还没有Linux文件系统GUID。现在有了,所以如果您不使用像我的旧Linux(Mint 13),

您将在fstab中使用分区唯一的GUID,如下所示:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / data ext4用户,默认0 0


谜底加深了。查看几个块设备,每个分区有一个设备PTUUID,有一个UUID和PARTUUID。根据磁盘以及可能对其进行格式化和分区的工具而定,PARTUUID是否源自磁盘PTUUID。我的问题是关于分区UUID,您可以将其与PARTUUID一起使用blkid
AProgrammer

@AProgrammer:在我的答案中添加了一些信息。
RubberStamp

1
好的,总而言之,有一个磁盘UUID,可以将blkid -p其称为PTUUID,有一个分区UUID blkid称为PARTUUID,并且某些文件系统有一个UUID,blk​​id称为UUID。我仍然不清楚为什么至少在某些地方,当我的Linux系统仅引用UUID时,将根文件系统移动到树莓派上的USB密钥时,为什么必须使用PARTUUID而不是UUID,但我不是自愿的进行更多测试,并检查真正需要PARTUUID的地方,以及在需要的地方仍可以使用UUID的地方,但我想那只cmdline.txt需要它。
AProgrammer

我在两个具有相同UUID的不同磁盘上有两个分区。这么多的“ 宇宙的一生 ” ......
étale-上同调

3

据我了解。

术语UUID通常是指“通用唯一标识符”,在Windows世界中称为GUID。有几种不同的方案,但是大多数情况下,现代UUID / GUID本质上是一个很大的随机数或哈希,并带有一些标志位。

在Linux上挂载文件系统的特定情况下,“ UUID”代表唯一的标识符,该标识符是存储在文件系统内部的元数据的一部分。“ PARTUUID”是指存储在分区表中或从分区表派生的分区的唯一标识符。

这些唯一标识符可能是也可能不是实际的UUID。据我所知。

  • 对于GPT分区表,“ PARTUUID”是GPT分区表中的GUID。
  • 对于MBR分区表,“ PARTUUID”是通过将磁盘标识符与分区号连接而形成的
  • 对于EXT4,Linux swap,BTRFS以及其他可能是Linux本地文件系统类型,“ UUID”是存储在文件系统元数据中的UUID。
  • 对于FAT和NTFS,“ UUID”似乎是卷序列号,对于FAT是32位,对于NTFS是64位。

请注意,通过“ UUID”和“ PARTUUID”安装根文件系统的支持有所不同。IIRC在没有initrd的情况下运行的内核可以通过“ PARTUUID”安装,但不能通过“ UUID”安装。较旧的initramfs-tools可以通过“ UUID”而不是“ PARTUUID”挂载,而最新的initramfs-tools支持这两种。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.