如何快速传输大档案(~16GB)

如何快速传输大档案(~16GB)

如何在 80 台服务器上将大型存档 (~16GB) 从一个安装点快速传输到另一个安装点?挂载点位于不同的分区上。我尝试了 ansible (使用 -f 100 选项)和循环中使用 rsync 的 bash 脚本,但这两种方法都非常慢,而且看起来都不优雅。

答案1

我会安装PDSHpdsh并将其配置为允许我在所有服务器(或选定的单个主机或服务器组 - 如中所定义)上并行运行命令/etc/性别文件)。

例如,安装后pdsh,将其配置为使用 ssh (而不是奇怪的默认值 rsh)并定义一个all包含所有服务器的组:

pdsh -g all mv /old /new |& tee /tmp/pdsh.log

您可以使用 less(等)查看日志文件,或者使用 的pdsh实用程序对每个主机一个部分进行良好格式化dshbak

dshback /tmp/pdsh.log

每个输出行都以它来自的主机名作为前缀(这是dshbak用于按主机名对输出进行分组的):

# pdsh -g all uptime
hanuman:  22:24:53 up 60 days,  1:38,  8 users,  load average: 0.05, 0.03, 0.05
indra:  22:24:16 up 14 days, 25 min,  3 users,  load average: 0.22, 0.40, 0.44
ganesh:  22:24:53 up 49 days,  7:56,  6 users,  load average: 0.73, 0.79, 0.79
kali:  22:25:05 up 3 min,  0 users,  load average: 0.01, 0.03, 0.02

pdsh还包括一个有用的pdcp命令,可以将文件并行复制到许多服务器。例如/etc/genders从本地主机复制到所有服务器:

pdcp -g all /etc/genders /etc/

pdsh最初设计用于 HPC 集群,但在任何服务器组上都同样有用,包括 Web 服务器场、复制数据库服务器等。为任何服务器组分配任意标签的能力在这里很有用,例如,将某些机器组标记为webmysqldns,并将它们放入 中all

还有其他几个集群 ssh 工具,但根据我的经验,pdsh这是最简单使用和最容易配置的。

Puppet、Ansible 等非常适合大规模部署和更新,pdsh 非常适合大规模命令行服务器管理。

答案2

考虑尝试在局域网上多播或广播文件,并在所有客户端上从同一流接收文件。然后需要时间来复制一份......

例如参见:

http://linux.die.net/man/1/udp-sender

祝你好运,格哈德

相关内容