![两台 Linux 服务器之间的多线程文件同步](https://linux22.com/image/552063/%E4%B8%A4%E5%8F%B0%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5.png)
目前,我正在对 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