最大化rsync性能和吞吐量 – 直接连接的千兆服务器

我有两台运行CentOS 6.5的戴尔R515服务器,其中一台Broadcom网卡直接连接到另一台。 我使用直接链接,通过ssh使用rsync,将备用服务器中的主服务器每天晚上推到备用服务器上。 监控stream量,我看到吞吐量约为2MBps,远远低于我所期望的千兆端口。 我已经把双方的MTU都设置为9000,但是这似乎没有改变任何东西。

是否有一组build议的设置和优化可以使我获得最大的可用吞吐量? 而且,由于我通过ssh(或可能只是NFS)使用rsync来复制数百万个文件(约6Tb的小文件 – 一个巨大的Zimbra邮件存储库),所以我正在寻找的优化可能需要针对我的特定用例。

如果有问题,我使用双方的ext4

谢谢

编辑:我已经使用以下几乎相似的结果rsync选项:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

目前,我正在通过同一直接电缆链路,在使用cp到NFS导出时看到相同级别的性能不佳。

编辑2:完成同步后,我可以运行iperf ,发现性能是在990Mbits / sec左右,慢的是由于实际的数据集在使用。

文件数量和SSHencryption开销可能是最大的障碍。 像这样的传输你不会看到线速。

改进的选项包括:

  • 使用rsync + SSH和较低成本的encryptionalgorithm(例如-e "ssh -c arcfour"
  • 使用HPN-SSH之类的SSH传输完全消除encryption。
  • 基于块的转移。 快照, dd , ZFS快照发送/接收等
  • 如果这是一次性或不频繁的传输,请使用tar ,netcat( nc ), mbuffer或其他组合。
  • 检查你的CentOS tuned-adm设置 。
  • 从文件系统挂载中删除atime。 检查其他文件系统安装选项。
  • 网卡发送/接收缓冲区。
  • 调整您的rsync命令。 那么,整个文件选项在这里有意义吗? 压缩启用了吗?
  • 针对传输types(SSD,主轴数量,RAID控制器caching)优化存储子系统。

正如你可能知道复制大量小文件(例如使用MailDir格式的邮箱或类似的邮箱)绝对不是利用高带宽接口的最佳select。 SSH可能不是最好的传输协议。 我会尝试使用tar在源主机上创build一个tarball,然后将其发送给您的辅助主机。

 tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups' 

如果您需要增量备份,您可能需要尝试tar的-g选项。 如果您仍然需要最大化throuput,请尝试使用netcat而不是ssh。

尝试挑逗除了促成因素:

  • CPU(例如,通过环回的pipe道/ dev /零的dd)
  • 磁盘I / O(例如,通过pipe理大型文件的dd> / dev / null(防止短路))
  • 物理networkingI / O(例如,dd传送到另一台机器)
  • 等等

并独立进行testing。

我有一些Broadcom驱动程序的不好的经验,所以我的第一个build议是testing可用的networking带宽: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null