ZFS 上的多磁盘根分区

ZFS 上的多磁盘根分区

我正在寻找有关使用 21.04 在 ZFS 上为根分区具有多个磁盘的新系统的建议。该机器具有:

  • 32 GB ECC RAM
  • 两个 5 TB HDD
  • 1 TB M.2 SSD
  • 2 TB M.2 SSD

为了了解背景,我读过 Aaron Toponce 的 ZFS 管理指南,Ubuntu 20.04 ZFS 上的根目录ZSys 数据集布局。我有一些 ZFS 经验:目前我有另一台机器运行 20.04.2 LTS(但最初设置为 16.04),带有/ext4 HDD 和/home带有两个镜像 HDD 的 ZFS,以及一些我明确管理的其他数据集。

简而言之,以下是我暂时认为我想要的:

  • 镜像 vdev 中的两个 HDD rpool
  • 每个 SSD 上都有一个小分区,用于镜像 SLOG rpool
  • 每个 SSD 上都有一个 2 GB 的分区用于镜像bpool
  • 交换分区。
  • EFI 系统分区。
  • SSD 上的大部分空间用于持久性 L2ARC(采用条带化配置)。

问题:

  1. 我最根本的问题是,使用 L2ARC 的这种方法是否是一个糟糕的想法。我希望——关键是依靠对执着的L2ARC — 我可以充分利用大型 HDD 和快速 SSD,而无需手动决定将什么内容放在每种存储上。这有意义吗?有没有更好的方法来实现相同的目标?或者,手动做出这些决定会更好吗?(在这种情况下,我猜rpool会放在 SSD 上,而 HDD 将成为第三个池。)

  2. 我的交换分区应该有多大?我应该使用单个分区,还是每个 SSD 上一半的空间?我已经好几年没有使用交换分区而不是交换文件了,但我知道由于死锁错误,目前强烈建议在 ZFS 上使用 root 权限。挂起到磁盘并不重要,但如果不太麻烦的话就更好了。

  3. 我记得几年前读到过不建议使用 ZFS 分区(而不是完整磁盘),但这听起来不适用于 SSD。我理解得对吗?

  4. 对于 SLOG 的大小有何建议?托蓬塞说,“如果您决定对 ZIL 和 L2ARC 使用同一设备(这当然是可以接受的),则应该对其进行分区,使 ZIL 占用很少的空间,例如 512 MB 或 1 GB,并将其余空间作为条带化(RAID-0)L2ARC 提供给池。”这有道理吗?

  5. 我还没有完全理解这个警告Ubuntu 20.04 ZFS 上的根目录(步骤 4,“系统配置”,#8):

    对于镜像或 raidz 拓扑,我们不希望 GRUB 写入 EFI 系统分区。这是因为我们在安装时复制它,而没有在 GRUB 配置更改时(例如,当内核升级时)更新副本的机制。因此,我们保留/boot/grub镜像或 raidz 拓扑的启动池。这保留了正确的镜像/raidz 行为,但代价是无法写入/boot/grub/grubenv,因此recordfail行为也是如此。

    这似乎是一个重大的缺点。不是镜像bpool?明显的缺点是它无法自我修复损坏,但尽管这会非常烦人,但它实际上不会导致数据丢失:我只需要从实时 USB 或类似设备启动并恢复到可启动状态,对吗?

  6. 总体来说,这是否有意义?有没有我没有想到的东西?硬件就是这样,但我愿意重新考虑如何使用它的任何计划。

非常感谢!

相关内容