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

我需要将包含较小文件(大多数低于100KB)的大约1TB数据迁移到另一台服务器.我甚至没有完全枚举文件,但估计在1-2百万之间.

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

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

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

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

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

任何战略赞赏.

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

解决方法

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

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

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

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

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

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...