在具有数百万个文件和目录的多个Linux服务器上进行实时文件同步

同步正在运行的生产服务器的大量数据的最佳方法是什么?

我们的服务器有超过2000万个文件(10K以上的小文件,文件大小可达50MB)存储在1个目录中。 所有数据的大小约为5TB(稳步增加)。

是否有可能与lsyncd的数据同步和什么是限制(特别是inotify)? lsyncd需要多less额外空间? 怎么样的负载(CPU和内存)和现场时间?

另一个解决scheme是GlusterFS。 是否有可能使用GlusterFS生产没有或最小停机时间? GlusterFS在x属性文件中存储了大量的魔法数据,存储容量比非GlusterFS系统大15%到20%。 看起来像一个巨大的浪费…? 怎么样的负载?

至lessrsync和cronjobs可以完成这项工作。 rsync只能在slave上运行…所以在主服务器上不需要额外的空间,但是每次cron运行时rsync必须读取完整的目录树。

我会认真地推荐使用类似ZFS的文件系统。

ZFS快照和ZFS发送/接收等内置工具允许您对文件系统进行块级快照,并将其发送到第二台服务器。

一些第三方工具,如sanoid / syncoid可以设置文件系统从一台主机到另一台的自动pipe理/修剪和同步。

这是在块设备级别完成的,所以您避免了rsync校验和/库存过程。

如果您不能更改生产服务器上的文件系统,我会将这些文件放在另一台服务器上,并使用NFS装载它们。 我会使用Linux和ZFS,如果工作时间便宜,也许某种家庭NAS分布,甚至可能是家庭NAS(都可能是基于ZFS的),如果一切都昂贵你可以find一个专业级的冗余,或NetApp或IBM Spectrum Scale(如果资金不是问题,而不是可靠性和支持)。

将文件放在具有专业级冗余function的真正全function文件服务器上之后,可以将备份服务器直接指向主NFS NFS(如果已configuration故障转移)或指向备用NFS服务器。