我有一项任务,需要从电影项目中生成 72TB 图像序列的副本。我估计我有 650 万张 11MB 的图像。
源驱动器是 RAID5 SAS,读写速度为 1000MB/s,目标 RAID5 SAS 也是如此。
我的测试 100GB 视频文件确实以上面列出的速度从源移动到目标。
使用 -avb 的 RSYNC 3.2.6 目前最大速度为 211MB/s。
探索让 TAR 制作 20GB(随机选择用于说明)未压缩的 zip 并将其通过管道传输到 RSYNC 以降低处理如此多小文件的开销是否有任何好处?
目前的任务预计需要 4-5 天,我想缩短它。
欢迎任何意见!
Mac 操作系统 12.3 M1 Studio 超
答案1
您目前受到寻找和读取/写入一堆小文件的限制。拥有一堆 20GB .zip/.tar 文件会有所帮助。制作它们可能会比 rsync 更慢,因为zip
必须做同样的事情(随机访问读取)。但不要相信我的话。暂停 rsync 并测试!测试几乎总是正确的答案。
在 Linux 上,我推荐使用该工具iostat
来查看等待磁盘所花费的时间比例。如果您正在使用 OS X,我不确定 OS X 的等效项是什么。
如果您希望将整个源 RAID 和目标 RAID完全相同的最后(给出了选项-b
,但你没有),你可以使用类似于dd
raid 设备的东西,它将以 1000MB/s 的速度运行。但请确保你知道确切地你正在用 dd 做什么,否则你可能会破坏你的数据。
如果这是您经常做的事情,请考虑在生成图像时重复运行 rsync,这样您就不会在最后等待 4 天。
答案2
我用于 rsync 流的主要加速:
- 划分文件列表并在源计算机和目标计算机之间运行并行 rsync 流。这通常会带来相当大的吞吐量增益。
- 删除 ssh 作为传输方式。加密/解密阶段有一些开销。如果它是安全的(现在并不常见),那么将 rsync 客户端连接到(未加密的)rsync 守护进程可以大幅提高吞吐量。
- 您已经询问并在另一个答案中解决了:增加平均文件大小可以有所帮助,特别是如果数据是可压缩的,并且您可以花时间在传输数据之前进行压缩并在之后进行解压缩。 (并且您有额外的存储空间)在压缩/解压缩阶段投入的时间可以减少传输阶段的时间。
单个 TCP 流(即单独的 rsync 传输)能够通过 1Gbps 或更快的网络链接达到最大吞吐量的情况非常罕见。并行传输最有可能产生最大的差异。互联网上有一些程序宣称它们可以运行并行 rsync。我尝试自己写,但没有取得多大成功。这是一项比看起来更复杂的任务。