jef*_*aid 5 linux rsync migration scp
我需要将大约 1TB 的由较小文件(大部分小于 100KB)组成的数据迁移到另一台服务器。我什至没有完全列举这些文件,但估计在 1-2 百万之间。
使用 SCP 的初始副本花费了一个多星期。现在我们必须同步更改。每天都会添加数百到数千个文件。
我已经尝试使用 rsync (v3) 但它花费了太长时间。到它完成时,我们将再次恢复数据不同步。
我在这里看到过类似的问题,但它们有点旧,想知道是否有任何新工具可以帮助完成此过程。
由于源数据位于读取性能较差的共享 iSCSI 系统上,问题变得更加复杂。
最新的策略可能是重做数据迁移,并让开发人员编写一个工具来记录迁移过程中添加的所有新文件。唯一标识符的目录结构键非常广泛和深入,因此新文件分散在此结构中,重写应用程序以将新文件放入特定目录是行不通的。
任何策略表示赞赏。
操作系统是 RHEL 5 到 RHEL 6。
我很想回答“通过将文件系统视为数据库来停止滥用文件系统”,但我相信它不会对您有多大帮助;)
首先,您需要了解,如果您的限制在于读取时的可用带宽,那么您无法使用简单的同步命令来提高性能。在这种情况下,您必须在写入数据时通过更改文件的创建方式(这意味着,正如您猜对的那样,要求开发人员更改源程序)或使用具有以下功能的产品来拆分数据是否进行地理镜像(例如,双重拍摄:检查周围,因为我确定您会找到替代方案,这只是一个示例)。
在类似的情况下,问题的主要原因通常不是文件数据,而是元数据访问。因此,您的第一个策略是将负载分成多个作用于(完全)不同目录的进程:这应该有助于文件系统跟上为您提供所需的元数据。
另一种策略是为此使用您的备份系统:在目标上重放上次增量备份以保持数据库同步。
最后,在特定情况下可以应用更多的外来策略。例如,我通过编写一个每隔几分钟将文件加载到文件系统的程序来解决 Windows 站点上的类似问题,从而保持 FS 干净。
这是分阶段进行的:
1) 使用 scp 进行初始传输 2) 使用 rsync 更新一些数据 3) 开发人员正在编写一个脚本来将自步骤 1 以来添加的文件拉取到系统 4) 在 dns 更改期间将数据从原始服务器代理到新服务器 5) 更改 dns 并获取摆脱性能不佳的共享 iSCSI 服务。