Yo! 服务器

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何减lessrsync备份过程中的IO等待时间?

我有以下情况: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完成的,但这里的问题是备份服务器上的本地性能。 我到目前为止所做的: 减less脏页面比率,使磁盘先写入数据,以避免滞后。 因为大多数数据在运行之间是恒定的,所以–bwlimit将不起作用,因为硬链接是在本地创build的。 正确? 我想如果错位的分区或不匹配的RAID块大小可能会导致这种问题。 虽然我不知道如何validation。 整个脚本从cron运行。 我添加了ionice / nice但没有太大的区别。 我安装atop机器上,以查看其他进程。 我没有看到任何exception(除了备份结束阶段的大部分时间100%的iowait CPU)。 现在我想问几个问题: 谁能告诉我这个问题可能是什么? 难道这只是一个衡量问题吗? 我的意思是在备份机器上没有其他负载。 难道是因为没有其他进程正在运行rsync进程饿死了任何io操作? 所以如果有另外一个进程,它将首先被服务,但是因为没有,所以磁盘的使用率很高,而且这个rsync进程的写入延迟非常高(这是可以的)。 我不知道在哪里寻找问题。 你能给我build议如何进一步追查问题吗? 为了使我的陈述清楚:我很清楚,在写入文件/创build链接时,进行备份会给系统(特别是在磁盘上)带来相当大的负担。 如果您需要更多信息,请告诉我您需要什么。