也不要忘记标签。它们不像UUID那样唯一,但是信息量更大,并使fstab易于阅读。如果是台式机或小型公司(换句话说,您要管理几到几十个驱动器),则可能更喜欢使用标签而不是UUID。
仔细考虑@frostschutz 对问题的出色回答,您可能更喜欢“经典”设备链接寻址的一种情况是VM设置,尤其是在“租用VM”(缩写为“ IaaS”)云中。假设您要自定义Ubunzima 04.18图像。您创建一个具有2个磁盘的(可丢弃)VM:一个将是(可丢弃)系统驱动器,第二个将是您安装和自定义的磁盘。如果您想在新磁盘上刷新一个新的grub,则大概还要安装其UEFI引导分区。假设您已为下的目标分区选择了安装点,则/mnt
所需的安装表如下所示:
/dev/sda1 /
/dev/sda9 /boot/efi
/dev/sdb1 /mnt/root
/dev/sdb9 /mnt/efi
因此,您可以从现有的,提供商提供的,可用于云的映像中制作2个相同的驱动器,并将它们连接到新的VM并启动它。自然,
- 所有现代OS发行版,我们想象中的Ubunzima 04.18都不例外,都依赖于以UUID命名的挂载。
- 从同一映像推出的所有硬盘驱动器都具有相同的UUID。UUID是唯一的,那么可能出什么问题?
您已经看到了这一切。
第一次启动该frankencontraption时,它选择sda9
了EFI引导分区,但是Linux决定重新挂载sdb1
为根FS:
/dev/sda1 /mnt/root
/dev/sdb1 /
/dev/sda9 /boot/efi
/dev/sdb9 /mnt/efi
而且由于我的发布脚本还没有为此做好充分的准备,所以最后我得到了一个无法启动的哑映像,而在Frankenbuild期间,没有一个工具在日志中抱怨!
当然,我在日志中打印了安装表。和当然的烂摊子起来是很难发现的,因为安装(8)打印中途随意之间,在该装置被安装在为了坐骑,所以这并不奇怪我没有发现它的时候了。可以想象,以前使用相同脚本(但使用来自不同映像的磁盘)的工作就像15岁的Glenfiddich一样流畅。猜猜我花了几个小时来梳理日志以找出问题所在吗?
从台式机到嵌入路由器的Linux,再到Android手机再到云数据中心,没有适用于任何情况的严格规则。SO答案应该是客观的,而我的经验或偏好当然不是。因此,当选择不同的识别分区方法时,我宁愿显示逻辑推理的示例:
不要管它,如果你没有理由不这样做。UUID是大多数现代发行版的默认设置。如果要添加第二个驱动器,请尝试然后确定。您甚至都不需要知道。如果您的系统仍能启动,并且您可以看到新设备并对其进行分区,请格式化并将其添加到fstab(通过UUID,LABEL或/dev
链接,同样的注意事项也适用)。只有当您的系统在插入额外的驱动器后拒绝引导时,才有问题(也许在UEFI BIOS中更改引导顺序是最快的方法)。
在实用上,标记哪个SATA连接器连接到您自己的台式机中的哪个驱动器可能是最快,最简单的解决方案,而改变系统引导方式并从极有可能的启动故障中恢复则可以说是最糟糕的时机。但是,如果你管理它的50个程序员谁认为一个额外的驱动器扔是没有打扰你,至少是不试一试自己的运气的限制,并确保他们的初始引导驱动器都看到了平头一样值得的问题hd0
和系统为sda
。
用于管理您自己的驱动器和分区的标签,可以在台式机或三个台式机或一个小型环境(一个装有软件工程师的房子的客厅里,他们把这个地方称为“启动办公室”)中进行管理。如果从某人的计算机上拉物理驱动器,则始终使用标签就可以知道它来自何处。
如果lsblk(8)表示LABEL=bubba-boot
,您知道它已从名为bubba的机器中拉出;此外,bubba-boot比6864c4ea-f9b9-46db-b875-4d7fc2981007更容易在我的舌头上滚动,按我的口味,这真是令人a目结舌。现在,确保标签独特是您的责任,但是您得到的回报是标签的意义。
/dev
-link命名时,命令一个寿命相对较短,维护需求低的VM,它们是同一映像的衍生,并且您不会打赌您的周薪是他们的所有UUID都符合UU承诺。任何理智的 VM服务,无论是您自己的物理服务器上的Vyper-H还是Kugel Cloud或任何其他工具,都切勿调用启动驱动器sde
,第二个也是唯一一个sdc
。另一方面,在物理计算机中,通过创造性地连接SATA电缆,您可以轻松实现相同的布置。
我现在离开了,但是在这种情况下,我采用了“一致的”以太网接口命名的相同方法:在VM中禁用它。别误会,只要您插入PCI插槽4的NIC不会在您不注意时(甚至可能是您所在的状态),自己不会随心所欲地突然跳到插槽5,则命名实际上是一致的别无耻)。不幸的是,事实上,在“ VM营”环境中确实如此。在这种情况下,与直觉相反,eth0
是更比一致enp0s4f6
。VM提供程序未保证始终将其虚拟NIC编号1放置在PCI总线0的插槽4中(并且提到的3个实体中的任何一个都不是真实的),并且它始终是功能6。考虑到它们通常具有相同的驱动程序模块(通常来自virtio系列),因此它们很大程度上依赖于第一个接口(如果第一个NIC并非始终eth0
是相同的,则仍然使用相同的注2),因此它们很大程度上取决于第一个接口。
¹当然,具有象征意义。我去过这家公司太久了,以至于还剩下什么。
²如果他们这样做,我会认真考虑让他们尖叫着改变提供商或VM虚拟机管理程序软件。