在印度机房把 rsync 换成 bbcp,大文件传输快了三倍
上个月要把一批约 1.2TB 的备份文件从孟买机房的旧存储节点挪到浦那的新节点,两边都是 CentOS 7,内核 3.10,走的是同城专线。一开始用 rsync -avz 直接跑,平均速率只有 18MB/s 左右,传了快十个小时才走完三分之一,而且中途断了一次,重跑还得从头比对,时间全耗在扫描上。
我先试了去掉 -z,因为两边 CPU 都一般,压缩反而成瓶颈。改完速率提到 25MB/s,还是不够。后来换成 bbcp,命令大概是:
bbcp -s 16 -w 4m -r /data/backup/ \
root@10.0.2.15:/data/backup/
-s 16 开 16 路流,-w 4m 把窗口拉到 4MB。同一批数据跑下来稳定在 60MB/s 上下,最终两个多小时传完。断点续传也简单,bbc p 会在目标端留临时文件,重跑自动接着走。
为什么 rsync 慢:它的增量算法要先在两端各扫一遍文件列表,1.2TB 下几十万个小文件,光建索引就吃掉大量 IO,再加上单流传输,带宽根本填不满。bbcp 不做增量比对,靠多流并行把管道打满,代价是没有 rsync 的去重能力,重复传同一份数据不划算,而且目标端要有 bbcp 二进制,我是先 scp 过去再跑的。
失效的地方也明显:文件数量特别多、单文件很小的时候,bbcp 的多流反而会放大元数据开销,我试过传一个 8 万个小文件的目录,它比 rsync 还慢;另外同城专线偶尔抖动,-s 开太大会把重传窗口撑大,16 路是我这边实测比较稳的值,再往上收益就平了。
你们在印度这种同城机房之间做大文件搬迁,是继续用 rsync 调参,还是换过别的工具?
0
赞同度 100% · 0 条评论 · 3 阅读
0 条评论
还没有评论,写下第一条。