我需要定期同步两个巨大的文件系统。两边都运行 Linux,并具有完全的 root 访问权限。
我首选的解决方案:我可以读取已更改文件和目录的列表,并仅同步已更改的文件。但是我如何获取更改列表?Inotify 需要每个目录都有一个处理程序,但目录太多了。也许从文件系统的日志中获取?
以下是一些解决方案以及它们不适合的原因:
- rsync:需要递归检查所有文件。有几百万个文件,但只有很少的变化。检查时间太长。
- inotify:我需要为每个目录设置一个处理程序,但目录太多了。Inotify 不是为“监视所有文件”场景构建的。
- DRDB:两侧应独立运行。可能会发生主机几天都无法连接的情况。
两台机器大约每 15 分钟需要同步一次。初始同步没有问题,这个问题仅与同步更改有关。
答案1
GlusterFS 怎么样?我发现它产生的流量比 DRBD 少很多。
答案2
+1 对于 GlusterFS,它是一个用户空间存储集群平台,它非常容易设置,并且在文件级别工作。
安装后,您需要做的就是在主服务器上创建一个新的复制 Gluster 卷,它将通过 TCP/IP 实时复制内容。然后设置客户端(基本上就是安装文件系统),您甚至可以在其中一台服务器上执行此操作,然后将数据始终写入新安装的文件系统。