我们希望在远程数据中心安装一些服务器,作为我们主数据中心的备份存储位置。
假设两个站点都具有 GigE 连接,那么用于快速文件传输的最佳方法是什么?我喜欢 rsync,但是由于我们有很多数据要传输(每晚 1.5TB),我认为 rsync 中使用的 SSH 协议可能会使速度变慢很多 :(
我们可以安装一些快速的VPN端点来实现链接加密,但问题仍然存在:什么是实际传输的最佳工具?
答案1
备份性能由许多因素决定。带宽就是其中之一。
- 存储写入性能
通常由存储写入性能决定。
- 网络带宽
一个好的选择是在备份服务器上以守护进程模式运行 rsync,这样做可以避免 ssh。但是,除非你有真的处理器速度慢,ssh 开销就不会很大。
要将 rsync 作为守护进程运行,请在服务器上启动 rsync 守护进程
rsync --daemon
默认情况下,它监听 TCP 端口 873,您可以在 rsyncd.conf 中更改它。
然后使用 rsync 作为
rsync [OPTIONS] source-path \
rsync://backup_username@backup-server:873:destination-path
没有足够的信息来估计您的预期性能。但每天增加 1.5 TB 并非不可能。
- 存储 IOPS
在备份期间,您将写入操作与许多文件系统操作相结合。文件系统查询和更新。通常,运行多个 rsync 进程以隐藏文件创建的延迟是一个好主意。
答案2
您可能需要研究文件加速软件。我认为这个市场上有很多参与者,但我过去见过使用过的是 aspera。这里有一个比较 aspera sync 和 rsync 的页面(页面底部有比较表)。
http://asperasoft.com/en/products/synchronization_23/aspera_sync_23
答案3
此外,请确保所涉及的任何一方都没有使用任何真正老版本的 rsync。目前仍在使用 2.x 版本,这会使整个链回退到较旧且在某些情况下效率低得多的协议版本(如果告诉您“发送增量文件列表”,则没问题。如果是“发送文件列表”,则使用的就是 2.x 协议。)
答案4
有人在这里提到使用rsync 守护进程- 与通过 ssh 隧道传输流量相比,这是一个“更轻量”的解决方案。但即使使用 ssh 封装,一夜之间传输 1.5TB 并饱和千兆链路也是可行的。
假设您有几个大文件[可能是错误的假设] - 您应该能够在~5 小时内传输有效载荷。我做了一个快速测试:
server:/mnt/big/tmp# rsync -av --progress root@otherServer:/big/file ./
receiving incremental file list
file
1849044309 100% 74.47MB/s 0:00:23 (xfer#1, to-check=0/1)
sent 30 bytes received 1849270109 bytes 75480413.84 bytes/sec
total size is 1849044309 speedup is 1.00
告诉 ssh 使用更轻的压缩方法:
server:/mnt/big/tmp# rsync -e "ssh -c arcfour" -av --progress root@otherServer:/big/file ./
receiving incremental file list
file
1849044309 100% 106.70MB/s 0:00:16 (xfer#1, to-check=0/1)
sent 30 bytes received 1849270109 bytes 112076978.12 bytes/sec
total size is 1849044309 speedup is 1.00
因此假设存储不是瓶颈 - 106MB/s ~= 350GB/h ~= 5 小时内 1.5TB。
两项测试都是在配备 xeon E5430 @ 2.66GHz CPU 的空闲机器上进行的。
为了提高效率[如果 CPU 速度较慢,请使用多个内核]或者仅使用更好的可用带宽和 IO - 您可以为几个文件运行几个并行 rsync 会话。
我不知道您是否拥有/租赁光纤,或者只是使用运营商提供的 mpls 服务,无论这些 ssh 是否为您提供强加密的额外好处,而无需在其间设置 vpn。