2个Linux服务器之间的多线程文件同步


9

目前,我正在为220万个250GB的文件运行rsync,这仅需要6个小时就可以处理700K个文件。

有谁知道像rsync之类的工具可以用多个线程来做到这一点,以使其运行更快?


3
您是否有任何理由认为它受到CPU限制?
Chopper3 2011年

您正在使用哪些rsync选项?
凯尔·史密斯

您是否正在使用ssh作为传输工具?
JimB 2011年

rsync -avSPp而且没有CPU或磁盘问题。
Tom van Ommen

而且,没有SSH传输只是在网上看到一些东西,不知道它是否更快。索引所有文件已经花费了很多时间。
Tom van Ommen

Answers:


7

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

您可以将文件系统层次结构分解为较小的块以并行处理吗?

什么是源文件?正在编写或修改什么?在应用程序级别发生更改时,是否可以发送更改?


同步Zarafa附件文件,默认情况下全部压缩。我可以运行多个实例,但效率低于10个线程。网络是1GBit到1GBit,但数据中心不同,但这不成问题。源侧有24个SAS磁盘,目标侧有SSD的智能存储。
Tom van Ommen

1
@Tom van Ommen-为什么您认为自己的CPU受到限制?如果确实受CPU限制,那么多个进程的效率如何比线程低?
JimB 2011年

1
@Tom van Ommen,十个进程的开销确实比十个线程大;但是,在线程之间锁定数据结构是一个编码梦night。仅产生多个进程并完成它(通常会更高效)(对于编码人员而言)
Mike Pennington

1
@Guacamole-在某些情况下,多线程可能会有所帮助,但是如果他的链接已饱和,无论他有多少线程,他都不会继续推动。Rsync确实使用线程进行并发,并且没有在内部阻塞IO。
JimB 2011年

1
@Guacamole-我要指出的是,如果他使用ssh作为传输方式,则其吞吐量受ssh本身(特别是静态接收窗口,除非他使用HPN ssh修补程序)限制。
JimB 2011年

1

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

这个家伙报告了一个基本的Python工具,该工具产生了多个rsync进程 http://www.reliam.com/company/featured_geek


不幸的是,链接已死。您能再次找到它吗?
P.Péter

1

我读过很多与此类似的问题。我认为唯一真正的答案是手动分手复制/移动。IOps将是这里的问题。如果让您感觉更好,我正在移动约200百万个文件,这些文件消耗了超过100TB的磁盘空间。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.