加载中…
个人资料
微博应用架构
微博应用架构 新浪机构认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,383
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

多服务器之间高效复制大文件

(2012-06-08 12:11:57)
标签:

杂谈


    在两台机器之间复制一些大文件的时候,把nc和pigz组合起来会是一个简单,高效的选择。假如我们要快速的同时增加几台MySQL Slave,这时候需要分发文件到多个服务器,利用linux下的一些工具往往是方便和快捷的。

    首先建立分发链:选定一台目标机器做为分发链的末端,在这台机器上做nc监听(假设端口是1234),再通过管道由pigz解压缩,继续利用管道做tar分解。
    [nc -l 1234 | pigz -d | tar xvf -]

    其次,同样要经过监听、解压、分解,在解压之前通过tee命令将数据输出到FIFO,另外的一条管道会将这些未解压的数据同时分发到分发链的下一环
    [mkfifo myfifo]
    [nc hostname_of_next_box 1234 <myfifo &]
    [nc -l 1234 | tee myfifo | pigz -d | tar xvf -]

    最后,在源机器上触发分发链,把文件数据传输给分发链的第一环。
    [tar cv some_files | pigz | nc hostname_of_first_box 1234]

    经测试后,分发链中的每台机器大概损失了3%-10%的性能(相对于1对1的复制),但是相对平时逐个逐个的复制或者单台机器向多台机器分发,有效的解决了服务器带宽带来的限制等问题。

    特此感谢 evan 来自 http://engineering.tumblr.com/post/7658008285/efficiently-copy

   

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有