在多台服务器上安全存储数据的最佳方法?

在多台服务器上安全存储数据的最佳方法?

我需要在多台服务器上存储 100+ TB 的数据,因此我知道使用分布式文件系统可以实现这一点。我还需要系统具有容错能力。

所以如果一台服务器宕机,我不希望数据因此而丢失。而且我希望以最节省空间的方式做到这一点。

例如,我喜欢 RAID5 的工作方式。我可以在几台服务器之间构建类似 RAID5 的系统吗?或者在多台服务器之间是否有与 RAID5 功能相同的文件系统?

答案1

听起来你的要求太不切实际了。

首先,100 TB 的数据量很大。您真的需要同时使用所有这些数据吗?如果是这样,您需要考虑的不仅仅是将其分散到多台服务器上。需要考虑网络和访问注意事项以及性能限制。如果您真的需要这么多的在线数据,那么您将同时访问很多数据。您的服务器能胜任所有这些 IOPS 的任务吗?然后是备份问题……要备份 100+ TB 的数据,您将需要一个庞大的备份系统,该系统需要多个磁带库和/或 D2D 备份系统。您问这个问题的方式让我完全相信您没有考虑过这些,而您需要考虑。

设置这么多数据相当于在一个项目中设置多个项目(或者是一个非常大的项目,这取决于贵公司的运作方式)。请不要误解,但您显然无法胜任这项任务。事实上,世界上很少有人能独自完成这种任务,他们中没有人会说喜欢 RAID5 并想知道如何将其分布到多个服务器或执行相同操作的文件系统上。

更重要的是,没有一种既节省空间又具有容错能力的方法来分发大型数据集。从根本上讲,您需要牺牲空间效率来换取容错能力,因为如果您的某个分布式节点发生故障,那么继续提供对其所保存数据的访问的唯一方法是以某种形式获取该数据的另一份或多份副本。因此,您要么可以容错地访问数据,要么可以高效地利用可用的磁盘空间,但不能两者兼得。要拥有 100+ TB 数据的基本容错存储,您至少需要两倍(200+ TB)的磁盘空间,仅此而已。

与上述内容有点相关的是,RAID5 并不是魔法。它通过计算奇偶校验位来实现冗余。这可以节省空间,但代价是计算时间。作为一种容错方法,它在大型数据集上也不是一个好主意,因为你几乎肯定会在某个时候遇到位级错误,从而消除你的容错能力,而且计算量非常大。它可能需要在大型 RADI5 阵列上重建单个故障磁盘。您认为对故障节点的 20TB 数据进行更复杂的奇偶校验计算需要多长时间?

答案2

例如集群文件系统可以做到这一点。

但您可以在这里找到许多其他文件系统:http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_fault-tolerant_file_systems

答案3

看一眼驼鹿,我们在这里使用它已有 3 年,共有 105TB,它运行良好。

相关内容