我正在尝试在基于CentOS的Linux服务器上的不同地理位置安装文件服务器。 目前我计划现在有两台这样的服务器,并将在不久的将来扩展到其他领域。 当文件被添加到任何位置时,文件服务器应该自己镜像(我还没有达到删除策略,只是在从主服务器删除文件时,应该考虑删除文件)。 目前我在想我会有apache的“目录列表”和rsync来做这个工作。 我只想知道是否有更好的工具来做到这一点。 此外,我想听取一些更好的目录列表脚本(基于PHP / Python的)的一些build议。 如果这个工具有一些searchfunction,上传文件的选项等等(我是否问得太多了?))。
注意:当前服务器还承载一个颠覆复制。 我也考虑过将所有文件提交到subversion中,并在次要位置检出。 但我觉得空间是一个限制,因为我会一直删除一些不需要的文件,这样我就可以控制磁盘空间,这是不可能的,因为svn的版本历史将保存数据
提前致谢。
这是一般情况下难以解决的难题。 即使不解决所有问题,地理上分布的多主复制文件系统也是一个可以获得博士学位的主题,所以PHP或Python的一小段代码不太可能实现。
如果你只是处理文件添加(没有修改),并且没有文件名冲突的可能性,问题变得更容易,你可以逃脱一个小的shell脚本。 但是,要警告的是,这不是一个普遍的情况 – 你可能会认为这是现在,但我敢打赌,用户的想法是不同的。
我的build议是:find一个知道这种事情的人,给他们一些钱来进行彻底的需求分析,并提出一个解决scheme。
如果“文件服务器”意味着用户通过像Samba或NFS这样的东西将驱动器映射到这个服务器,这是Womble描述得非常严重的问题。 我已经看到一些系统可以接近这个系统,但是它们并不涉及安装量; 他们在复制scheme中涉及的每个目录树上使用特定的客户端,并使用一些复杂的碰撞检测algorithm来确保事情不会受到影响。 而像Access数据库这样的多重打开文件在这种情况下根本无法正常工作。
如果“文件服务器”意味着dynamic网站的静态文件服务器,那就容易多了。 DRBD和Rsync是为这种工作负载devise的。 不过,如果你不得不做很多事情,那么还是会有其他的事情发生。
GlusterFS不是WAN的好解决scheme。
我只能推荐DRBD(需要购买DRBD代理),或者看看csync2。
我相信你可以使用类似inotify触发csync2或使用lsyncd。
HTH
黑雁
最后我做了这个。 已经build立了一个rsync 。 除此之外,我还提供了基于web的文件pipe理器function的extplorer 。 有了这些,我可以解决上述问题,我还没有把它搬到生产,但它在过去4天成功运行。
PS:根据build议,让我去尝试我的博士:)