使用 UUID 还是 PARTUUID 通过 fstab 自动挂载 HDD 更好?

使用 UUID 还是 PARTUUID 通过 fstab 自动挂载 HDD 更好?

我正在尝试将我的外部硬盘设置为在启动时自动安装,如下所示Akshit 的终端指南

我最初在“/etc/fastab”中使用 PARTUUID 而不是 UUID:

UUID=191486e0-6049-46aa-973c-425d317b629a /mnt/nas exfat uid=1000,gid=1000,umask=0022,auto,rw 0 0

当我运行时,这给了我一个错误,findmnt --verify --verbose此时我重新检查blkid并发现我一直在使用分区 ID:

/dev/sdb1: LABEL="My Book" UUID="20C9-C659" TYPE="exfat" PTTYPE="atari" PARTLABEL="My Book" PARTUUID="191486e0-6049-46aa-973c-425d317b629a"

因此,我在 fstab 中添加了实际的 UUID,但现在我不确定是否应该使用它,或者是否应该使用 PARTUUID,以及为什么我的 UUID 比我见过的其他示例短得多(尤其是当“UUID 保证是唯一的据我所知,在宇宙的生命周期内不会发生碰撞”。

答案1

如果您使用 PARTUID,则需要在行fstab首使用PARTUUID=而不是 来指示UUID。在您给出的示例中,系统查找的是 UUID,而不是 PARTUID,而且确实没有找到匹配的 UUID。

替换UUID=PARTUUID=,您就可以开始了。

UUID和都PARTUUID旨在作为唯一标识符,一个与文件系统相关,因此在重新格式化分区时会更改,另一个与分区相关,因此与分区本身相关联(重新格式化时不会更改)。使用其中一个比使用另一个更好吗?这没有太大关系。当您自己在 中安装驱动器时fstab,您需要清楚地知道您安装的是什么,在这个层面上,使用一个或另一个唯一标识符并不重要。

答案2

当我运行 findmnt --verify --verbose 时出现错误

另一个答案中已经提到过 - 您必须使用PARTUUID=

更多信息:如何在 fstab 中使用 PARTUUID?

现在我不确定我是否应该使用它或者是否应该使用 PARTUUID?

就你的情况而言,这其实并不重要。但请记住,如果你使用的是 MBR,与 GPT 分区的常规 PARTUUID 不同,如果分区号发生变化,MBR 的伪 PARTUUID 也会发生变化。[1]

为什么我的 UUID 比我见过的其他示例短很多?

实际的 UUID 应该是 128 位长,并且是唯一的。在此之前,各种系统提供了各种大小的序列号以便区分。因此,即使它们与 UUID 定义不匹配,Linux 也会获取它能找到的任何序列号并将其粘贴在 /dev/by-uuid/ 目录中。[2]


就个人喜好而言,我宁愿使用 UUID - 即使在创建加密交换分区时也是如此。此外,LVM 之类的东西没有 PARTUUID。您可能知道文件系统代表文件系统表。所以我猜最好使用 UUID,因为它与文件系统相关。使用 UUID 不会有意外,除非你因为特殊原因必须使用其他方法。


我还在 ArchLinux 的论坛上找到了一个值得一读的好答案:在 fstab 中使用 PARTUUID 代替 UUID 有何优缺点?。以下是答案中的一些引述:

PARTUUID 标识分区。如果您决定将该分区用于其他用途(格式化),即使内容不再存在,它仍会被识别,并且可能会被安装到错误的位置。

如果您的分区表有问题,并且您最终重新创建相同的分区(使用不同的 partuuid),即使内容仍然存在,它也将无法再被识别。

只有分区才有 PARTUUID,其他块设备没有

通过 PARTUUID 进行挂载不需要 initramfs,因此如果您想创建一个无 initrd 的系统,这将是一个优势。

UUID 通过内容识别文件系统。如果找到 UUID,则文件系统就在那里。无论它是整个块设备、分区、raid、luks 还是 lvm,都没有关系。UUID 适用于所有层,PARTUUID 仅适用于分区。

一般来说,fstab 条目是关于将特定内容安装到特定位置,因此通过内容而不是分区进行识别更为自然。使用 UUID 更为常见。

UUID 的缺点是您必须扫描所有设备以查找内容。毕竟 UUID 可能位于任何地方。使用 PARTUUID 您只需检查分区表,因此更简单/性能更高。但您需要大量的块设备才能产生影响。

相关内容