我正在寻找有关使用 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(采用条带化配置)。
问题:
我最根本的问题是,使用 L2ARC 的这种方法是否是一个糟糕的想法。我希望——关键是依靠对执着的L2ARC — 我可以充分利用大型 HDD 和快速 SSD,而无需手动决定将什么内容放在每种存储上。这有意义吗?有没有更好的方法来实现相同的目标?或者,手动做出这些决定会更好吗?(在这种情况下,我猜
rpool
会放在 SSD 上,而 HDD 将成为第三个池。)我的交换分区应该有多大?我应该使用单个分区,还是每个 SSD 上一半的空间?我已经好几年没有使用交换分区而不是交换文件了,但我知道由于死锁错误,目前强烈建议在 ZFS 上使用 root 权限。挂起到磁盘并不重要,但如果不太麻烦的话就更好了。
我记得几年前读到过不建议使用 ZFS 分区(而不是完整磁盘),但这听起来不适用于 SSD。我理解得对吗?
对于 SLOG 的大小有何建议?托蓬塞说,“如果您决定对 ZIL 和 L2ARC 使用同一设备(这当然是可以接受的),则应该对其进行分区,使 ZIL 占用很少的空间,例如 512 MB 或 1 GB,并将其余空间作为条带化(RAID-0)L2ARC 提供给池。”这有道理吗?
我还没有完全理解这个警告Ubuntu 20.04 ZFS 上的根目录(步骤 4,“系统配置”,#8):
对于镜像或 raidz 拓扑,我们不希望 GRUB 写入 EFI 系统分区。这是因为我们在安装时复制它,而没有在 GRUB 配置更改时(例如,当内核升级时)更新副本的机制。因此,我们保留
/boot/grub
镜像或 raidz 拓扑的启动池。这保留了正确的镜像/raidz 行为,但代价是无法写入/boot/grub/grubenv
,因此recordfail
行为也是如此。这似乎是一个重大的缺点。不是镜像
bpool
?明显的缺点是它无法自我修复损坏,但尽管这会非常烦人,但它实际上不会导致数据丢失:我只需要从实时 USB 或类似设备启动并恢复到可启动状态,对吗?总体来说,这是否有意义?有没有我没有想到的东西?硬件就是这样,但我愿意重新考虑如何使用它的任何计划。
非常感谢!