文件服务器复制选项

文件服务器复制选项

我正在尝试在基于 centos 的 linux 服务器上的不同地理位置设置文件服务器。目前我计划现在拥有两台这样的服务器,并将在不久的将来将其扩展到其他地区。当在任何位置添加文件时,文件服务器应该镜像自身(我还没有制定删除策略,但只是认为应该允许在从主服务器删除文件时删除文件)。目前我正在考虑使用 apache“目录列表”和 rsync 来完成这项工作。我只是想知道是否有更好的工具可以完成上述工作。此外,我想听听关于更好的目录列表脚本(基于 php/python)的一些建议。如果这个工具有一些搜索功能、上传文件的选项等就好了(我要求太多了吗?;))。

注意:当前服务器还托管了 subversion 复制。我还考虑过将所有文件提交到 subversion 并在辅助位置将其签出。但我觉得空间会是一个限制,因为我会不断删除一些不需要的文件,这样我就可以控制磁盘空间,但这是不可能的,因为 svn 的版本历史记录将保存数据

提前致谢。

答案1

在一般情况下,这是一个难以解决的问题。地理分布、多主复制文件系统是一个你可以获得博士学位的主题,即使你解决整个问题,因此 PHP 或 Python 的一小段代码不太可能起到很大作用。

如果您只处理文件添加(不处理修改)并且不存在文件名冲突的可能性,那么问题就会变得容易得多,您只需使用一个小型 shell 脚本即可。但请注意,这不是一种常见情况——您现在可能认为这是常见的情况,但我敢打赌用户的想法会有所不同。

我的建议:找一个了解这类事情的人,给他们一些钱,让他们进行彻底的需求分析,并提出解决方案。

答案2

如果“文件服务器”意味着用户通过 Samba 或 NFS 之类的东西将驱动器映射到此服务器,那么这就是 Womble 描述的非常困难的问题。我见过一些系统接近这一点,但它们不涉及挂载卷;它们在复制方案中涉及的每个目录树上使用特定的客户端,并使用一些复杂的冲突检测算法来确保不会发生冲突。而像 Access 数据库这样的多打开文件在这种情况下根本无法正常工作。

如果“文件服务器”指的是动态网站的静态文件服务器,那就简单多了。DRBD 和 Rsync 就是为这种工作负载而设计的。不过,你不得不做大量的手动操作,这表明可能还有其他事情发生。

答案3

GlusterFS 对于 WAN 来说不是一个好的解决方案。

我只能推荐 DRBD(需要购买 DRBD 代理),或者查看 csync2。

我相信您可以使用类似 inotify 的东西来触发 csync2 或使用 lsyncd。

高血压

布伦特

答案4

最后我终于做到了。设置了一个同步.与此同时我探索者它提供了基于 Web 的文件管理器功能。通过这些,我能够解决上述问题,我尚未将其投入生产,但它在过去 4 天内一直成功运行。

附言:根​​据建议,让我去尝试我的 PHD :)

相关内容