![如何在 Linux 中构建可以逐步扩展的文件服务器?](https://linux22.com/image/589851/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%9E%84%E5%BB%BA%E5%8F%AF%E4%BB%A5%E9%80%90%E6%AD%A5%E6%89%A9%E5%B1%95%E7%9A%84%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我在一个科学实验室工作,预算有限,但存储需求却不断增长。一年前,我们需要约 2-3 TB 的存储空间,而今天,我们需要 13+ TB 的存储空间,这占满了我们当前的服务器(Linux、带有 9 个驱动器的 raid 6),而且空间只会不断增长。文件非常大 - 每个文件超过 50GB。
我想要构建一个服务器:
a) 可以处理不均匀的磁盘大小,因此我们可以在市场上有更大的磁盘可用时用它们替换旧磁盘。b) 在创建初始“卷”后,可以处理磁盘的添加(可能比任何其他磁盘都大)。理想情况下,我只想将驱动器放入热插拔托架并使其成为卷的一部分。b) 具有冗余性,可以处理多个磁盘故障。d) 快速“fscking”。上次我们当前的服务器这样做时,花了很长时间才恢复。
我可以用 RAID 实现 (a) 和 (b) 吗?我知道我可以从大小不等的磁盘中划分出大小相同的 raid 分区,但我不想陷入使用多个 raid 阵列进行微观管理分区的麻烦。ZFS 是一个选项吗?(FreeBSD 也可以接受。)
说实话,性能不是大问题。它只会存储和向少数研究人员提供静态内容。我们的 LAN 是 1Gbit,WAN 只有 100Mbit。
欢迎任何建议。
答案1
我推荐基于 ZFS 的解决方案,但运行专门构建的操作系统(NexentaStor),而不是尝试在系统上运行其他应用程序。这使您可以灵活地将存储视为设备并消除应用程序依赖性。通过 NFS 或 iSCSI 导出到 Linux 系统。
ZFS 解决方案可以满足您的其余需求。您已制定预算了吗?
我建议与集成商/合作伙伴合作,他们可以帮助设计一个强大的系统并缓解任何扩展/寿命问题。他们很可能已经见过类似你的情况或处理过类似的要求。然而,如果你自己做,请做你的尽职调查并避免别人犯过的错误。
好的起点:
答案2
将存储需求与处理需求分开。您可以以相对较低的价格购买 SAN(如果您不购买全套产品,HP P2000 很便宜,您可以将其扩展到 6 个 3TB 磁盘架,用于 36x6 TB 的原始存储),如果您坚持使用 iSCSI,则可以避免昂贵的 HBA 和光纤。iSCSI 还可以让您继续使用当前用作文件服务器的服务器,它只是允许您连接一堆磁盘。您还可以查看 MSA 2000 等较旧的型号。戴尔也有一些不错的产品。然后,使用几个初始磁盘将其连接到您的服务器(2 个用于 raid 1,3 个用于 raid 5 或 raid 1e,4 个用于 raid 1+0 或 raid 6,具体取决于您的存储要求)。
在服务器上,使用 LVM 将这些磁盘创建为物理卷,并在其上创建卷组/逻辑卷。将来,您可以向 SAN 底盘添加其他磁盘,并将它们添加为新的物理卷,然后扩展逻辑卷。然后,当您的 SAN 磁盘架容量达到最大值时,只需添加另一个带有几个磁盘的架子,并以与第一个架子相同的方式进行扩展。我们在许多存储系统中都使用这种方法。一些仔细的规划可以帮助您避免将同一逻辑卷的数据托管在两个不同的架子上(以防某些白痴决定他们想绊倒连接两个 SAN 架子的电缆)。
对于文件系统,ext3、ZFS、ext4 都支持动态增加文件系统的大小。但是,如果您担心需要缩小文件系统的大小,请倾向于使用 ext3。它的文档更丰富,支持也更好。此解决方案很简单,不需要顾问,并且允许您使用数据集扩展解决方案。
但是,如果您需要大幅扩展存储,那么您确实需要从服务器中删除存储。
答案3
我认为 ewwhite 是对的,对于这么大的东西,我会选择专用的、商业支持的设备。
否则,你可以将 Linux 中的某些东西拼凑在一起,使用md
添加镜像驱动器对(驱动器对中的驱动器必须彼此大小相同,但可以与旧驱动器大小不同),然后使用LVM
将新对合并到你的文件系统中,方法是将逻辑卷从旧物理卷迁移出来并/或将它们扩展到新的物理卷上。冗余将是一个问题(你可能会丢失一半的驱动器,但前提是它们是正确的一半),但您在添加新驱动器和删除旧驱动器时会拥有更大的灵活性。
...只要确保您有备份即可。
答案4
需要考虑的一件事是 ZFS 根本不支持删除 vdev。这意味着如果您不明智地扩展阵列,或者您决定要从 RAID6 切换到 RAID10,那么您就倒霉了。只要您的磁盘布局是固定的,并且您要升级 vdev 中的每个磁盘(例如,镜像中的两个磁盘),我同意 ZFS 可能是一个很好的解决方案。
BTRFS 确实支持设备移除,相当于 RAID10。过去几年它也变得更加稳定了。
如果你愿意考虑 Windows,Windows存储空间实际上是一个相当不错的解决方案,需要在具有冗余的服务器中放置一堆异构磁盘并使其正常运行。