两台 Linux 服务器之间的多线程文件同步

两台 Linux 服务器之间的多线程文件同步

目前,我正在对 220 万个文件(总计 250GB)运行 rsync,这在 6 小时内就耗费了 700K 个文件。

是否有人知道类似 rsync 的工具可以使用多个线程来执行此操作,从而加快速度?

答案1

我怀疑 CPU 是这里的限制因素。您很可能受到传输的网络带宽和磁盘 IO 的限制;尤其是所有这些统计调用的延迟。

您能否将文件系统层次结构分解为更小的块以便并行处理?

源文件是什么?什么在写入或修改它们?是否可以在应用程序级别发送更改?

答案2

如果接收服务器的磁盘子系统是具有多个磁盘的阵列,则运行多个 rsync 进程可以提高性能。我正在运行 3 个 rsync 进程,将文件复制到 NFS 服务器(RAID6,每个 RAID 组有 6 个磁盘)以使千兆以太网饱和。

这个人报告了一个基本的python工具,它可以产生多个rsync进程 http://www.reliam.com/company/featured_geek

答案3

我读过很多类似的问题。我认为唯一真正的答案是手动拆分复制/移动。IOps 将是这里的问题。如果这能让你感觉好一点,我正在移动大约 2 亿个文件,占用了超过 100TB 的磁盘空间。

答案4

您可以考虑查看适用于 Linux 的多线程 cp 克隆(开源): http://static.usenix.org/event/lisa10/tech/slides/kolano.pdf

相关内容