我正在尝试将我的外部硬盘设置为在启动时自动安装,如下所示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=
。
现在我不确定我是否应该使用它或者是否应该使用 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 您只需检查分区表,因此更简单/性能更高。但您需要大量的块设备才能产生影响。