zfs 和未来的可扩展性

zfs 和未来的可扩展性

我想使用 freebsd 9 和 zfs 构建服务器。我有一些闲置的旧硬件(英特尔四核处理器,8 GB RAM),我愿意购买两到三个 1 TB 磁盘。我还有一个 dlink RAID 服务器,里面已经有两个 1 TB 磁盘,我可能会停止使用它们,因此一旦我将这两个硬盘上的数据(目前在 raid 1 中约 300 MB)移至新服务器,它们就可以在 zfs 服务器中使用。

因此,一开始我就有 2 或 3 个磁盘,一旦我成功设置 zfs 服务器并复制数据,我就可以移动到 4 或 5 个磁盘。

我的问题是如何最好地设置 zfs 池,以便我拥有最大的冗余和存储空间,并能够在将来有 2 个或 3 个或更大的驱动器可用时移动到它们。所以我不太在乎速度,我猜我的以太网(即使是 1gb/s)也会是系统速度的决定性因素……?

我目前的想法是购买 2 个新磁盘,使用条带模式进行设置。一旦我从 dlink nas 复制了所有数据,我将删除其中 1 个驱动器,将其添加到池中,使其成为其中一个新驱动器的镜像。重建阵列后,我将把另一个驱动器移到池中,以便它镜像第二个新驱动器……完成所有这些操作后,我应该拥有大致相当于 RAID 10 的“条带镜像”。

这可能吗,或者有更好的设置方法吗?

再次强调,我的首要任务是最大冗余度、维护(用更新/更大的驱动器替换旧驱动器并增加我的总池空间)、可用存储空间和速度;按此顺序。

答案1

为了能够通过仅替换几个磁盘来增加存储空间,您应该使用镜像 vdev,并将其条带化在一起(实际上相当于 RAID10)。

对于您来说,使用 4 个驱动器意味着要进行如下操作:

    zpool
      mirror
        disk1
        disk2
      mirror
        disk3
        disk4

这将为您提供 2TB 的存储空间(假设所有磁盘都是 1TB)和良好的冗余度(1 个磁盘崩溃后阵列故障率为 0%,2 个同时发生磁盘崩溃时阵列故障率仅为 33%)。

现在为了实现这个目标,我将购买 2 个新的 1TB 磁盘,并将它们放入池中:

zpool create zpool mirror disk1 disk2

然后将 DLINK 的内容移动到新创建的池中。

完成后,您可以清除 DLINK 磁盘并将其添加到池中,以增加存储空间:

zpool add zpool mirror disk3 disk4

如果您以后想要进一步增加存储空间,可以通过添加更多 vdev(最好还有镜像)或仅更换 4 个磁盘中的 2 个来实现。更换过程如下:

zpool offline zpool disk3
# remove physical disk3 at this point
# insert new, bigger disk in place of disk3
zpool online zpool disk3
# wait for resilver
# after resilver, do the same with disk4
# your vdev is now bigger, increasing the size of the pool

现在,让我们看看另一个选项。如果您已经创建了 1 个 raidz vdev,如下所示:

zpool
  raidz
    disk1
    disk2
    disk3
    disk4

您将拥有 3TB 的存储空间,但是,如果仅通过更换磁盘(而不是添加)来增加存储空间,则必须更换所有 4 个磁盘(当然是一个接一个)才能增加池大小!此外,如果 2 个磁盘同时崩溃,此配置将 100% 导致阵列故障。

raidz 配置也会比条带镜像配置慢。因为 raidz 的计算量更大,而条带 + 镜像实际上提高了读写性能。使用“普通”硬盘(非 SSD),条带镜像可能会占用千兆位连接以进行连续读写,因为 ZFS 可以合并磁盘的带宽(请记住 1Gb/s 仅为 ~125 MegaBYTES/s,标准“普通”硬盘将为您提供大约 90 Megabytes/s)。我不认为上述 raidz 配置能够在消费硬件上做到这一点。

综上所述,与您的磁盘数量对应的条带镜像/RAID 10 的得分为:

+ max redundancy
+ maintenance
- available storage space
+ speed

raidz 的得分是:

- max redundancy
- maintenance
+ available storage space
- speed

我想说条纹镜子获胜:)

最后一条建议:在开始之前,一定要多读一些关于如何操作和为什么的内容!甚至可以在虚拟机中模拟整个过程。我特别想到了添加第二个镜像 vdev 的步骤!如果你做错了,你可能会得到一个与你希望的不同的配置,而 ZFS 在这些情况下是非常不宽容的,因为它不允许您从池中删除 vdev 或从 raidz vdev 中删除磁盘!!(但是允许从镜像 vdev 中删除磁盘)

此外,要做好未来规划,标记和对齐磁盘,这样你就不会遇到高级格式驱动器的麻烦!有关 ZFS 和 4K 驱动器复杂性的更多信息,我建议你阅读FreeBSD 论坛上的这个主题

答案2

您同时添加的每组磁盘都有自己的冗余策略,无论是添加到池中还是创建新池。2 个磁盘 = 镜像,3 个可以使用 RAIDZ(或发挥创意,不推荐)。使用这样的驱动器,1Gb 以太网的性能可能会更慢。此外,稍后将驱动器换成更大的驱动器有点麻烦,尽管完全有可能。

我强烈建议阅读ZFS 管理指南 从开始到结束开始。

相关内容