我需要一个分布式文件系统,它必须扩展到非常大的大小(大约 100TB 实际最大值)。文件大小大多在 10-1500KB 范围内,但有些文件的峰值可能约为 250MB。
我非常喜欢像 GFS 这样具有内置备份冗余的系统的想法,从统计上讲,这将使文件丢失成为过去。
我有几个要求:
- 开源
- 没有 SPOF
- 自动文件复制(即不需要RAID)
- 托管客户端访问
- 文件的平面命名空间 - 最好
- 内置版本控制/延迟删除
- 经过验证的部署
我认真研究过 MogileFS,因为它确实满足了大部分要求。它没有任何托管客户端,但它应该相当直接地做一个 Java 客户端的移植。但是,没有内置版本控制。没有版本控制,除了 MogileFS 中内置的文件复制之外,我将不得不进行正常备份。
基本上,我需要防止突然清除大量不应该拥有的文件的编程错误。虽然 MogileFS 确实通过在 X 台设备上复制我的文件来保护我免受磁盘和机器错误的影响,但如果我进行了无根据的删除,它并不能拯救我。
我希望能够指定删除操作直到 Y 天后才真正生效。删除逻辑上会发生,但我可以将文件状态恢复 Y 天,直到它被实际删除。此外,MogileFS 没有能力在写入期间检查磁盘损坏 - 尽管同样可以添加。
由于我们是一家 Microsoft 商店(Windows、.NET、MSSQL),我最希望核心部分在 Windows 上运行以便于维护,而存储节点由于许可而运行 *nix(或组合)。
在我考虑自己动手之前,你有什么建议让我看看吗?我还检查了 HadoopFS、OpenAFS、Lustre 和 GFS——但似乎都不符合我的要求。