同步正在运行的生产服务器的大数据的最佳方法是什么?
我们的服务器有超过2000万个文件(小文件,10k,大文件,最大50MB),存储在1个目录中.所有数据的大小约为5 TB(稳步增加).
是否可以使用lsyncd同步数据以及有哪些限制(特别是inotify)? lsyncd需要多少额外空间?负载(cpu和内存)和实时时间怎么样?
另一种解决方案是GlusterFS.是否可以在没有停机或停机时间最短的生产中使用GlusterFS? GlusterFS在x-attributes文件中存储了大量魔法数据,存储量比使用非GlusterFS的系统大15%到20%.好像浪费了很多……?负载怎么样?
至少rsync和cronjobs可以完成这项工作. rsync只能在slave上运行…所以主服务器上不需要额外的空间,但每次cron运行时rsync都必须读取完整的目录树…
解决方法
我真的建议在文件系统中使用类似ZFS的东西.
ZFS快照和ZFS发送/接收等内置工具允许您获取文件系统的块级快照并将其发送到第二台服务器.
某些第三方工具(如sanoid/syncoid)可以设置文件系统从一个主机到另一个主机的自动管理/修剪和同步.
这是在块设备级别完成的,因此您可以避免rsync校验和/库存过程.