我想知道如何设计一个 ZFS 系统来构建可大规模扩展的系统,就像您最喜欢的云存储一样,但又具有 ZFS 带来的所有好处。
我想知道的一个更具体的场景是,当您达到服务器中驱动器的最大数量(内部/DAS/SAN 等)并且您需要扩展到另一台服务器时,如果确实可能,您会如何创建一个从一个服务器扩展到另一个服务器的 zpool/帐户,其中部分数据存储在服务器 1 上,其余数据存储在服务器 2 上?你会如何处理这个?
我特别考虑了 FreeBSD,因为我也不知道如何使用 FreeBSD 创建服务器场/集群。
答案1
ZFS 不是集群文件系统,因此您所说的实际上不会按照描述的那样工作。为了增加服务器存储的容量,您需要向主机添加更多磁盘,可以在机箱中,也可以在存储阵列中(如果磁盘已满)。运行 ZFS 的主机最多可以有 2^64 个 zpool,每个 zpool 最多可以包含 2^64 个 vdev,因此在世界末日的这一边,您极不可能达到该限制!
如果这不是一个选项,并且您想要将新主机集成到基础架构中,则可以使用 NFS 导出 ZFS 文件系统,然后安装它们,以便每个主机都具有相同的网络视图。这样,无论您点击哪个储物箱,您都会得到正确的东西。
这不是集群,并且在网络流量方面确实有一些开销(尽管可以通过使用自动挂载来避免协议混乱,避免静态文件系统上的网络混乱,从而在一定程度上减轻这种开销)。然而,凭借 ZFS 对数据完整性的保证以及 RAIDZ 提供的冗余,我认为这是建立高容量存储系统的好方法,实际上我们在工作中就是这样做的,我们有数十台机器输出数百 TB 的存储空间。用户可以登录到任何计算机,并且可以使用相同的路径来获取数据,给人一种集群存储设置的印象。使用 SAMBA 导出数据集意味着 Windows 用户也可以访问数据。