启动 FreeBSD 时根设备的持久命名

启动 FreeBSD 时根设备的持久命名

由于设备可以频繁地插拔,因此引用 FreeBSD 应该使用的块设备作为根设备很容易变得不可靠。有没有办法像 Linux 一样通过文件系统 UUID 或分区 UUID 指定根设备?

答案1

以你的方式提问是人类的本性。但它要求人们既了解 Linux,又希望 FreeBSD 以同样的方式运行。

更好的方法是充实你具体想做的事情。在这种情况下,您可能会被引导走上一条您可能不想走的黑暗道路。

因为直接的答案是“是”并且会引导您开发者开发文件系统。这两个工具都很强大,我们可以按照您的建议使用 UUID。

然而,您很可能不想这样做,除非您有非常非常具体的理由这样做。

FreeBSD 多年来一直使用 ZFS 文件系统。即使作为根设备。 ZFS 导入过程会自动识别磁盘和 UUID。您可以在系统中自由交换磁盘,ZFS 可以在无需干预的情况下轻松处理此问题。如果你正在使用 ZFS 你应该看看2021 年为 ZFS 池指定磁盘 (vdev) 的最佳实践?

如果您选择使用 ie。 UFS 则常见的方法是使用磁盘标签。

要使用磁盘标签,您需要使用GPT分区方案而不是真正旧的膜生物反应器方案。这再次假设我们正在谈论 i386 及其朋友。

您只需使用您的磁盘标签文件系统表(5)你应该熟悉FreeBSD 手册:第 20 章. 存储

釉面可以帮助寻找标签但正如所说这里一般应避免。使用gpart modifygpart show/list更改标签 - 看看部分(8)

您可以使用以下方式快速概览FreeBSD 标记文件系统。但请记住沃伦·布洛克在上面的论坛帖子中写的内容:

不要使用 glabel(8) 将标签写入现有文件系统。它将覆盖最后一个块。事实上,尽量避免使用 glabel(8)。

或者,如果您有更具体的需求,您可以查看/dev/diskid/<id>´, /dev/gpt/<label>​或/dev/gptid/<label>

因此,尝试更具体地说明你要完成的任务,这样你就可以避免 Linuxism。并不是说 Linux 不好,而是当您期望 FreeBSD 中具有相同的 1:1 行为时,您可能不会获得最佳结果。

答案2

作为 @ClausAndersen 建议的一方面的具体示例,并假设您在 UFS 文件系统上运行:

# gpart show da0
=>      40  20971440  da0  GPT  (10G)
        40    204800    1  efi  (100M)
    204840   8388608    2  freebsd-swap  (4.0G)
   8593448  12378032    3  freebsd-ufs  (5.9G)

首先将 GPT 标签添加到您的分区:

# gpart modify -l uefi-boot -i1 da0
da0p1 modified
# gpart modify -l swap-space -i2 da0
da0p2 modified
# gpart modify -l ufs-root -i3 da0
da0p3 modified
# gpart show -l da0
=>      40  20971440  da0  GPT  (10G)
        40    204800    1  uefi-boot  (100M)
    204840   8388608    2  swap-space  (4.0G)
   8593448  12378032    3  ufs-root  (5.9G)

有了合适的 GPT 分区标签,只需通过以下文件系统分区的 GPT 标签引用文件系统分区/etc/fstab

/dev/gpt/ufs-root       /        ufs     rw       0       0

如果您确实在拇指驱动器上运行,那么像thumb-efi thumb-swap和 之类的标签thumb-ufs可能是合适的。在 ZFS 安装中,最佳实践通常是根据驱动器的序列号创建分区标签,以便可以明确识别出现故障的驱动器。

相关内容