Ubuntu 20.04 的 ZFS 配置

Ubuntu 20.04 的 ZFS 配置

TL;DR 我在一台运行 Ubuntu 20.04 的机器上有三个 2 TB 驱动器和一个 500 GB 驱动器,小驱动器上安装了默认的 ZFS。我的计划是将较大的驱动器分成两个分区,每个分区 2 GB(默认 bpool 分区的大小),其余 2,046 GB,并将我的 bpool 设为四向、2 GB 镜像,将我的 rpool 设为更大的 RAIDz1(> 5 GB)或 RAIDz2(< 3 TB)。这是否可能/合理,或者是否存在我不知道的注意事项?

我刚刚在一台机器上安装了 Ubuntu 20.04 来试用 ZFS 功能,并且正在尝试找出设置它的最佳方法。该机器中有四个驱动器(3 个 2TB 和 1 个 500 GB)。我使用最小驱动器的默认 ZFS 安装,因此现在三个大驱动器未使用,小驱动器有两个分区,一个用作 bpool 中的单设备 vdev,另一个用于 rpool。一旦我弄清楚了如何配置所有内容,我计划将这台机器用作小型私人文件、git 和 Web 服务器。服务器上的负载将很低,并且任何关键文件仍将在异地备份,因此我通常会优先考虑存储容量而不是性能和冗余,但我目前正在使用旧驱动器,所以我肯定还想考虑容错能力。我对 ZFS 的操作有点熟悉,过去也使用过它,但对它并不是特别有经验。

据我了解,Ubuntu 的 ZFS 设置和 GRUB 集成,我需要小心不要弄乱 bpool,但至少我希望它在多个物理驱动器上具有一定的冗余性。为了实现这一点,我显然需要将更多设备添加到 bpool 的 vdev 中,从其他磁盘中提取,但由于 bpool 需要保持独立,而且我不想为不需要太多空间的池放弃整个 2 TB 驱动器,我怀疑这意味着我最好的选择是对剩余驱动器中的一个(或多个)进行分区,并使用新分区将 bpool 的 vdev 变成镜像或 RAIDz。考虑到 bpool 的性质,以及我使用的四个磁盘实际上只是我放置的不同年龄和历史的最大磁盘这一事实,我认为 bpool 的做法是简单地在所有四个驱动器的分区上进行镜像,以最大限度地降低服务器宕机的风险。

对于其余部分,因为如果我不想浪费空间,我必然会处理异构设备,所以我认为所有驱动器的所有剩余分区都可用于将我的 rpool 配置更改为 RAIDz vdev,而这是我的知识开始达到极限的地方,我有一些问题:

  1. 有什么理由不将 rpool 用于其他所有用途,而是添加另一个 zpool?我的理解是,除了使我的拓扑复杂化并使有效分配驱动器空间变得更加困难之外,这几乎没有什么影响,但是否有一些我没有考虑到的因素?
  2. 同样,我是否有理由考虑在 rpool 中使用多个 vdev?我不这么认为,但我还是想确保我没有遗漏任何东西。

Ubuntu 安装程序为我提供的默认配置是 2 GB 分区用于 bpool,其余 498 GB 用于 rpool。如果我按照上述计划操作,我的最终配置将是一个四重冗余的 2 GB bpool 和一个带有单个 vdev 的 rpool,该 vdev 由一个 498 GB 分区和三个 2,044 GB 分区组成,我认为,如果使用 RAIDz1 配置,应该会给我留下不到 5 TB 的可用空间(如果使用 RAIDz2,会留下略多于 3 TB 的空间)。

我是否忽略了某些复杂情况,或者需要考虑某些技术限制?

答案1

在对情况进行更多研究后,我意识到我对 RAIDz 的工作原理存在根本性的误解。出于某种原因,我认为它可以与异构设备配合使用而不会浪费空间,但事实并非如此(我肯定只是在考虑非冗余存储池,而这并不是我想要为这个应用程序考虑的东西)。

我的新计划是再买一个 2 TB 的硬盘(它们现在也不贵了),然后用它替换 500 GB 的硬盘,这样我就可以拥有一套完全同质的设备来工作。这样就可以有效地利用空间,而不必求助于奇特的地形。如果我遇到任何其他复杂情况,我会为他们创建一个新问题,并认为这个问题已经得到解答。

相关内容