我正在构建一个需要通过WAN在几个站点之间分发标准文件服务器的应用程序。基本上,每个站点都需要编写许多大小不一的杂项文件(有些大小在100s MB范围内,但大多数很小),并且编写应用程序时不会出现冲突。我想建立一个符合以下条件的系统:
- 每个站点都可以将文件存储在共享的“命名空间”中。也就是说,所有文件都将显示在同一文件系统中。
- 除非必要,否则每个站点都不会通过WAN发送数据。即,在WAN的每一侧都有本地存储,这些本地存储将“合并”到同一逻辑文件系统中。
- Linux&Free($$$)是一个加号
基本上,像中央NFS共享之类的东西可以满足大多数要求,但是它不允许本地写入的数据保留在本地。来自WAN远端的所有数据将始终被本地复制。
我研究了Lustre,并对其进行了一些成功的测试,但是,它似乎在整个分布式存储中相当均匀地分布了文件。我已经仔细阅读了文档,但是没有发现任何可以自动“优先”使用本地存储而不是远程存储的东西。即使是使用最低延迟存储的东西也可以。它大部分时间都可以工作,可以满足该应用程序的要求。
以下是一些问题的答案:
- 服务器节点:2或3个启动。每个服务器将同时连接数十个读/写客户端。
- WAN拓扑是全网状且可靠的。(大公司,成本不像繁文tape节那样限制)
- 客户端故障转移:实际上我没有考虑过进行客户端故障转移(主要是因为我们当前的应用并不仅仅在一个站点上执行此操作)。我认为实际的答案是,每个地理分布站点上的服务器对于它们所服务的客户端都是单点故障。但是,如果您正在考虑此处的特定内容,我认为这与讨论非常相关。
- Roll-my-own:我曾经考虑过rsync / unison,但是我需要很多漂亮的逻辑才能无缝地使这项工作的“动态”部分成为现实。即,文件似乎是本地文件,但仅按需检索。
- MS-DFS:当然,这似乎是我应该研究的东西。我的主要问题可能是不确定Windows上的NFS服务器配置/可靠性/性能,因为连接的许多客户端都是NFS客户端。