有太多的select,很难知道从哪里开始。 我的要求是这些:
另外,我寻找这些品质,虽然它们不是“要求”:
我希望得到一些关于哪个文件系统对于给定的需求最好的input。 我的组织中有些人倾向于MogileFS,但我不相信这个项目的稳定性和动力。 基于我有限的研究,GlusterFS和Lustre似乎得到了更好的支持。
思考?
如果是我,我会使用GlusterFS。 目前的版本非常稳定,而且我知道在HPC和Internet空间中的某些非常大型的安装中,人们依赖于它们的生产系统。 你可以基本上根据你的需要量身定做,通过按需要布置组件。 与Lustre不同的是,没有专门的元数据服务器,所以中心的故障点最小化,并且更容易扩展设置。
不幸的是,我不认为有一个简单的方法可以达到你的75%的标准,而不会让性能下降。
它在商品硬件上运行,但是在使用Infiniband互连时性能确实很好。 幸好现在IB的价格真的很低。
您可能想要查看Scalable Informatics和他们的Jackrabbit产品的解决scheme。 他们在他们的硬件上支持GlusterFS,他们的解决scheme的价格肯定会对抗从头开始组装的成本。
其实我觉得没有那么多现实的select。 按照优先顺序我的select是:
Hadoop分布式文件系统(HDFS)不符合你的要求恕我直言。 HDFS非常棒,但是它的类似bigtable的方法意味着它比上面的文件系统更不易访问。 当然,如果你真的想要大规模的可扩展性和长远的眼光,HDFS可能是正确的 – 雅虎,Facebook和其他公司都在投资Hadoop的增长。
一个评论,大多数上述系统将整个文件复制到2-3个节点以实现冗余。 这比奇偶校验编码/ RAIDscheme占用了更多的空间,但它可以大规模地处理,而且似乎是每个人都采取的解决scheme。 所以你不会得到你提到的75%的效率…
它可能不能满足你所有的要求,特别是空间效率(默认情况下,它将每块分成10份,其中3份可以提供恢复(尽pipe这可以调整)),但你仍然可能想看看塔霍-LAFS 。
它主要是为备份而devise的,但是人们已经构build了(并且仍然在构build)很多非常有趣的非备份应用程序。 例如,其中一位开发人员在他的博客上。
GPL,用Python编写。 它已经包含在Ubuntu,IIRC中。
作为对Kamil响应的补充,您可以通过尝试从GFS-AFAIK上的每个文件中读取来强制存储节点发生故障之后在GlusterFS中强制执行数据复制,而没有更简单的方法来确定哪些文件需要复制。
下面的命令可以帮助 – 它实际上在每个文件上调用head -c1并将成功/失败logging到/tmp/gfs-check.log
find /mnt/gfs ! -type d \( \( -exec head -qc1 '{}' + \ -fprintf /tmp/gfs-check.log "%p OK\n" \) -o \ -fprintf /tmp/gfs-check.log "%p ERROR\n" \) > /dev/null