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

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

我有两台运行 CentOS 6.5 的 Dell R515 服务器,每台服务器都有一个 Broadcom NIC 直接连接到另一台。我每晚使用直接链接通过 ssh 上的 rsync 将备份从主服务器推送到辅助服务器。监控流量时,我看到吞吐量约为 2MBps,这比我预期的千兆端口吞吐量要低得多。我已将两边的 MTU 都设置为 9000,但这似乎没有任何变化。

是否有一组推荐的设置和优化可以让我达到最大可用吞吐量?此外,由于我使用 ssh 上的 rsync(或可能只是 NFS)来复制数百万个文件(约 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/秒,速度缓慢是由于实际使用的数据集造成的。

答案1

文件数量和 SSH 加密开销可能是最大的障碍。您不会看到这样的传输速度达到线速。

改进的选项包括:

  • 使用成本较低的加密算法的 rsync+SSH(例如-e "ssh -c arcfour"
  • 使用类似下面的命令彻底消除 SSH 传输中的加密抗凝血酶
  • 基于块的传输。快照dd,,ZFS 快照发送/接收, ETC。
  • 如果这是一次性或不频繁的传输,则使用tarnetcat ( nc),缓冲存储器或者某种组合。
  • 检查你的 CentOStuned-adm设置
  • 从文件系统挂载中删除 atime。检查其他文件系统挂载选项。
  • NIC 发送/接收缓冲区。
  • 调整rsync命令。whole -W-files 选项在这里有意义吗?是否启用了压缩?
  • 针对传输类型(SSD、主轴数、RAID 控制器缓存)优化存储子系统。

答案2

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

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

如果您需要增量备份,您可能需要尝试-gtar 选项。如果您仍需要最大化吞吐量,请尝试使用 netcat 而不是 ssh。

答案3

尝试分析一下造成这种情况的因素:

  • CPU(例如通过环回管道传输的 /dev/zero 的 dd)
  • 磁盘 I/O(例如 dd大的文件通过管道传输到 cat > /dev/null [通过管道传输以防止短路])
  • 物理网络 I/O(例如 dd 通过管道传输到另一台机器)
  • ETC。

并对其进行独立测试。

我在使用 Broadcom 驱动程序时遇到过一些不好的经历,因此我的第一个建议是使用以下方法测试可用的网络带宽: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null

相关内容