我有以下情况:networking中有一组机器(NAS和其他“服务器”)。 还有一台机器用于备份。 它使用rsync定期从所有4台机器收集数据,并创build增量备份。 备份是拉式的,所有的脚本都运行ionice -c idle nice -19 。 为了监督整个系统的稳定性,在所有的Linux机器上都安装了一个监控系统(munin)。 Munin以不同的系统variables和状态每隔10分钟查看一次,并在出现问题/警告时发送邮件。
在备份结束时(特别是在最大机器的长时间运行备份之后),每天晚上,munin都会抱怨高磁盘延迟。
我已经推高了被接受的限制,但是在这样的备份结束时,IO等待时间还是在10秒以上。 在我看来这似乎相当高。
备份脚本是由我自己写的。 我需要与程序rsnapshot类似的方法,但稍作修改。 因此,我自己创build(functionless得多)。 实际上,它将远程计算机rsync到除了其他备份之外的临时文件夹,然后相应地旋转/删除旧的备份。 根据我迄今为止的研究,在编写新的备份(主要是硬链接)或轮换/删除备份时会发生问题。 由于慕尼黑的粒度只有10分钟,我无法确切地知道问题在哪里。
备份的目的地位于抽象层链上:物理分区被收集在一个大的RAID5arrays(mdadm)中。 md设备用作LVM PV。 VG内部是一个大的分区(除了其他未encryption的分区),它使用LUKS进行encryption,第二个LVM驻留在该分区内,并允许将存储分配给不同的分区。
networking上的任何研究都主要导致了这一层networking连接和延迟的问题。 虽然我的备份也是通过networking完成的,但这里的问题是备份服务器上的本地性能。
我到目前为止所做的:
--bwlimit将不起作用,因为硬链接是在本地创build的。 正确? cron运行。 我添加了ionice / nice但没有太大的区别。 atop机器上,以查看其他进程。 我没有看到任何exception(除了备份结束阶段的大部分时间100%的iowait CPU)。 现在我想问几个问题:
rsync进程饿死了任何io操作? 所以如果有另外一个进程,它将首先被服务,但是因为没有,所以磁盘的使用率很高,而且这个rsync进程的写入延迟非常高(这是可以的)。 为了使我的陈述清楚:我很清楚,在写入文件/创build链接时,进行备份会给系统(特别是在磁盘上)带来相当大的负担。
如果您需要更多信息,请告诉我您需要什么。