RSYNC增量备份需要3天以上

我已经构build了一个增量备份解决scheme,它使用RSYNC来备份我们的一些服务器。 我使用PHP来运行configuration文件来获取每个需要备份的服务器的信息。 PHP然后调用RSYNC来递增地处理服务器的远程备份。

这完全适用于我们的所有服务器,只需几分钟即可完成….除了一台服务器。 这个服务器有很多的数据,看来RSYNC只是挂在它上面。 完成一次增量备份需要3天以上的时间。 我的猜测是它坚持build立文件列表。

当我在要备份的文件夹上运行以下命令时,以下是“iused”结果。

df -i folder/ 54176307 

这是RSYNC处理太多的数据吗? 我应该看看另一种select吗? 备份服务器当前运行在3.0.8版本上,但备份的客户端都运行RSYNC 2.6.9。 你认为把所有东西都升级到3.0.8会有所作为,并减less这台服务器的3天备份时间吗?

谢谢你,雅各布

我怀疑,只有升级,才能提供你正在寻找的改善。 在72小时,你可能会想要一个数量级的性能提高(7.2小时)。 如果你要2-3个小时,没有SSD和良好的networking,祝你好运。

有了5500万个索引节点(假设文件数量相同),你将不得不认真重新考虑你的方法。 首先,如果你正在使用一个外部variables,我会考虑对一个不同的FS进行基准testing。

其次,如果你使用的是一个外部的FS(比如说ext3 / 4),我会做的第一件事是closures一段时间! 随着时间的推移,每次文件被读取/查看时,文件系统都必须对磁盘进行微小的写入,因为时间意味着“访问时间”。 通过closures它,你将失去查看文件被访问的能力,但这就是cookie崩溃的方式。 如果您使用的是标准SATA磁盘,则假设您可以执行每秒IOIO(IOPS)。 每个访问写入其中一个(最坏的情况)。 这意味着100个文件每秒只是为了validation它的存在,并且当你读它时,你正在使用更多的IOPS。 55000000/100 = 550000s = 152小时。 一旦你find了内核非常好的algorithm来合并IOPS,你可能已经find了瓶颈。

在你的/ etc / fstab中,使用mount选项:

 noatime,nodiratime 

完全禁用一次。 离开nodiratime离开目录访问时间。 如果你有很多目录,我build议把它关掉。

我敢打赌,这一点将大大帮助。

这是一个示例fstab:

 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=66188c62-0d8c-46d8-a44f-8f673ca6ac98 / ext4 errors=remount-ro,discard,noatime,nodiratime 0 1 # swap was on /dev/sda6 during installation UUID=c3f40312-d6f9-4bb7-b426-602a4b7a6c47 none swap sw 0 0 

我有几个脚本可以做这样的事情。 我认为正确的解决scheme是find自上次备份以来发生更改的文件系统,然后将rsync添加到“同步”中,但是我没有解决这个问题。

相反,我所拥有的是2个脚本1,它可以find顶级目录进行备份,另一个备份每个脚本并行。 我发现与NFS文件存储我得到相当高的CPU利用率在大约10个并行rsyncs。 由于这个作业是在CPU上绑定的,而单个rsync接近cpu的7%,所以我使用xargs来运行每个单独的作业,但是使用-P选项同时运行7个作业。

如果有人感兴趣,我可以给脚本发邮件。 他们应该是非常可读的。