关于向 ZFS 镜像池插入额外磁盘的建议?

关于向 ZFS 镜像池插入额外磁盘的建议?

我在 ZFS 镜像池上使用 root 身份运行 FreeBSD 9.1。

首先,该池(标记为zroot)总共有 1TB,跨越两个 1TB 驱动器。

最近我们遇到了磁盘空间问题,池已分配 99%,剩余空间约 15G。/home仅文件系统就占用了约 800G。

为了解决这个问题,我们添加了 2 个 1TB 驱动器。

我们希望保留这些驱动器的镜像。现在的问题是,我们应该如何将额外的 2 个 1TB 驱动器添加到池中?

  1. 我们是否应该将它们添加到现有zroot池中并进行分配。这似乎是个坏主意,因为原始池设计为作为根文件系统运行。

  2. 我们是否应该创建一个具有一组镜像驱动器的新池,然后创建一个新的/home2并将高使用率用户转换到该分区?

对我们来说,ZFS 功能的范围尚不清楚。我们倾向于选项 (2),因为它不会在根镜像上添加不必要的依赖关系。但是,我们很感激任何有关采取什么行动的见解和想法。

谢谢。

答案1

我们是否应该将它们添加到现有的 zroot 池并分配它。这似乎是个坏主意,因为原始池被设计为作为根文件系统运行。

首先,zpools 和 zfs 文件系统是两个独立的概念(实际上你无法将它们分开,但在考虑它们的设置时应该这样做)。因此,池并非“设计为作为根文件系统运行”,zpool 上有一个文件系统配置为作为根文件系统运行。

由于此 zpool 保存根文件系统,因此它必须是非冗余的单个 vdev,或者必须是单个镜像。因此您不能只是添加更多驱动器。

我们是否应该创建一个具有镜像驱动器集的新池,然后创建一个新的 /home2 并将高使用率用户转换到该分区?

为每个用户创建 zfs 文件系统并将其安装到他们的主驱动器位置要容易得多。这消除了不规范/不标准的/home2想法,并允许您在每个用户的主文件夹上设置配额、预留等。

当我设置 ZFS 服务器时,我要么使用两块或三块较小的磁盘作为启动 zpool(我有 100-320GB 的闲置磁盘,所以通常使用它们),要么从主存储驱动器上切出一块(大小大致相同,使用 GPT 分区)。驱动器的其余部分获得一个大分区,然后进入存储 zpool。

以下是我的家庭服务器设置的示例:

  pool: tank0
 state: ONLINE
  scan: scrub repaired 0 in 1h39m with 0 errors on Sat Jun  8 07:59:40 2013
config:

        NAME              STATE     READ WRITE CKSUM
        tank              ONLINE       0     0     0
          mirror-0        ONLINE       0     0     0
            gpt/tank0-d0  ONLINE       0     0     0
            gpt/tank0-d1  ONLINE       0     0     0

errors: No known data errors

  pool: tank1
 state: ONLINE
  scan: scrub repaired 0 in 3h11m with 0 errors on Mon Jun  1 08:57:39 2013
config:

        NAME              STATE     READ WRITE CKSUM
        tank1             ONLINE       0     0     0
          raidz1-0        ONLINE       0     0     0
            gpt/tank1-d0  ONLINE       0     0     0
            gpt/tank1-d1  ONLINE       0     0     0
            gpt/tank1-d2  ONLINE       0     0     0
            gpt/tank1-d3  ONLINE       0     0     0

答案2

首先让我猜一下你当前的配置。你曾经zpool add向池中添加过新驱动器吗?如果是的话,你的 zpool 应该如下所示:

zpool:
  mirror:
    disk1
    disk2
  disk3
  disk4

在这种情况下,要镜像您的新驱动器,您应该执行以下操作:

zpool attach <pool-name> <disk3> <disk5>
zpool attach <pool-name> <disk4> <disk6>

这将为您提供一个由三个镜像、每个镜像两个驱动器组成的池。

我认为,对于此设置,使用 zraid2 或 zraid3 会更好,您将获得更快的池和更好的可靠性。在当前设置中,您可以丢失两个驱动器以关闭池。使用 zraid2,您也可能丢失两个驱动器,但您将获得 1TB 的额外空间。使用 zraid3,您可以安全地丢失三个驱动器。

您可以考虑的另一个选择是启用池中的压缩。不要为根文件系统启用压缩!

相关内容