我在两个地方有两台 Linux 服务器,通过 VPN 连接(通过 WAN - 100/100 Mb/s)。每台服务器上都有 Samba DC(同一个域)和 Samba 文件服务器。
Samba FS 配置为将 ACL 存储在 POSIX ACL 中(而不是默认情况下存储在文件中)。该 Samba FS 上托管用户文件(桌面和文档重定向)和配置文件。
用户正在这两个位置之间迁移。
我想要实现的是这两个服务器之间的文件实时同步,以便用户可以在两个位置登录域帐户并始终拥有相同的文件。
但是,该解决方案必须具有容错能力:如果这两个站点之间的连接出现问题,用户仍应有权访问他们的文件(最新版本存储在用户登录的一侧),并且如果连接恢复,则这两个服务器应同步双方修改/创建/删除的文件(以具有相同的 FS 状态)。当然,显而易见的问题是:如果在断开连接时双方都修改了同一个文件怎么办?首先,在我的场景中,这种情况不太可能发生(发生的可能性很小),但如果发生这种情况,我完全可以选择修改时间最新的文件版本。
我尝试了 GlusterFS,但是在我的场景中它有一个很大的缺点:如果我将文件写入 GlusterFS,只有当它保存在两个块中时才被视为已保存 - 这导致任何文件写入(关于读取我不确定)受到我的 WAN VPN 连接速度的限制 - 这不是我想要的 - 理想情况下,文件直接在本地服务器上修改/保存,然后与第二端异步同步。
目前我只使用 Osync 脚本 - 它基本上满足了我几乎所有的条件(至少这是我能够实现的最佳解决方案) - 它保留了 POSIX ACL,自动解决冲突 - 一句话:它不需要我每天关注。但这个解决方案有一个很大的缺点 - 它不是一个守护进程,而是一个无限循环运行的脚本,因此每次运行时它都会扫描整个磁盘(两侧)以检测任何更改,然后才同步两个服务器 - 这是非常占用磁盘的操作,不幸的是每次运行大约需要一个小时!(同步的文件夹大约有 1TB 的数据)。
总而言之,我正在寻找一种像提到的 Osync 脚本一样工作的解决方案,但它是一个守护进程,用于监听磁盘上的变化,如果发生任何变化,则立即将其同步到第二个站点。
例如,同步任何内容看起来很有希望,但它不支持 POSIX ACL 同步(Samba FS 需要)
您能提出一个解决方案吗?