linux – 如何在两台服务器之间复制大量(> 100万)个小文件

前端之家收集整理的这篇文章主要介绍了linux – 如何在两台服务器之间复制大量(> 100万)个小文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要将包含较小文件(大多数低于100KB)的大约1TB数据迁移到另一台服务器.我甚至没有完全枚举文件,但估计在1-2百万之间.

使用SCP的初始副本花了一周时间.现在我们必须同步更改.每天添加数百到数千个文件.

我已经尝试使用rsync(v3),但这花了太长时间.当它完成时,我们将再次使数据不同步.

我在这里看到过类似的问题,但是它们有点老了,并且想知道是否有任何新工具可以帮助完成这个过程.

由于读取性能较差的共享iSCSI系统上的源数据,问题进一步复杂化.

最新策略可能是重做数据迁移,让开发人员编写工具来记录迁移过程中添加的所有新文件.关闭唯一标识符的目录结构是非常广泛和深入的,因此新文件分散在此结构中,并且重写应用程序以将新文件放入特定目录将不起作用.

任何战略赞赏.

操作系统是RHEL 5进入RHEL 6.

解决方法

我很想回答“通过将文件系统视为数据库来停止滥用文件系统”,但我确信它对你没有多大帮助;)

首先,您需要了解如果您的限制在读取的可用带宽中,则无法使用简单的同步命令来提高性能.在这种情况下,您必须通过更改文件的创建方式(这意味着,正如您猜对的那样,要求开发人员更改源程序)或使用的产品来分割数据.做地理镜像(例如double-take:检查周围因为我确定你会找到替代品,这只是一个例子).

在类似的情况下,问题的主要原因通常不是文件数据,而是元数据访问.因此,您的第一个策略是将负载分成多个进程,这些进程作用于(完全)不同的目录:这应该有助于文件系统跟上为您提供所需的元数据.

另一种策略是使用备份系统:重放目标上的最后一次增量备份,以使数据库保持同步.

最后,有更多的外来策略可以应用于特定情况.例如,我通过编写一个程序每隔几分钟将文件加载到文件系统中来解决Windows站点上的类似问题,从而保持FS清洁.

猜你在找的Linux相关文章