注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

bbcp-局域网中大文件的快速传输  

2016-07-11 14:05:24|  分类: basic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
需求:
1. 局域网中传输大文件,文件大小大于100G
2. 无加密要求
3. 文件完整性要求低
4. 越快越好

结论:
bbcp

使用实例:
一、安装(传输的双方机器都需要安装同版本的可执行文件)

wget http://www.slac.stanford.edu/~abh/bbcp/bbcp.tgz


tar zxvf bbcp.tgz
cd bbcp/src/
make
cp bbcp/bin/amd64_linux26/bbcp /usr/bin/
二、使用

/usr/bin/bbcp -F -P 2 -V -w 10m -s 16 -T 'ssh -x -a -oFallBackToRsh=no %I -l %U %H /home/xxx/bin/bbcp'

src_file_path user@host:/home/xxx/dest_file_path

选项说明
-F: 不检查目的机器的磁盘空间大小是否还够
-P: 指定每个进程的启动时间,单位s
-w: 磁盘IO buffer大小
-s: 并发streams数 
-T 指定如何远程启动bbcp
-V: 显示传输详细细节

三、优化
可以使用以下选项来加快传输速度
1. 关闭域名查找
-n
2. 磁盘IO buffer大小与并发streams数的合理设置
传输是否快取决于机器的内存和带宽,上面两个数值在内存不会耗尽的情况下理论上是设置越大越好,当然实际情况要找到一个平衡点。

参考http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm 给出的测试数值:
a. 并发streams数的设置
局域网中 -s 设置为16或32比较好

b.磁盘IO buffer大小的设置
可以使用iperf来获得带宽数量
服务端

iperf -s

客户端

iperf -c server_ip -t 60 -i 2 -w 200k -n 10400000 -d

-t 测试时间

-i 以秒为单位显示报告间隔

-w 指定TCP窗口大小,默认8k

-n 指定传输的字节数

-d 进行双向传输测试

[ 5] 0.0- 1.1 sec 10.0 MBytes 76.5 Mbits/sec

那么窗口大小设置为
-w 0.5*76.5比较合适

四、问题
再次感叹自己的bug体质
1. bash: bbcp: command not found
找不到目的机器的bbcp路径
首先查看一下默认的bbcp路径
ssh user@host which bbcp
然后copy或建立符号链接到bbcp目标路径
如果没有权限将bbcp移动到指定路径,可以使用 -T 指定bbcp路径
-T 'ssh -x -a -oFallBackToRsh=no %I -l %U %H /home/xxx/bin/bbcp'

2. bbcp: Insufficient space to copy all the files
bbcp在传输的过程中会检查目的机器的磁盘空间大小,当然这个空间大小的探测可能不准确。
可以使用 
-F 选项关闭磁盘大小检测

3.bbcp: No space left on device writing
目的机器真的磁盘空间不够,整理整理吧,以我的经验不少磁盘空间不够是因为被标记删除的文件仍在被进程使用造成。
可以使用以下命令杀死这些进程
lsof | grep deleted|while read abc;do kill -9 $abc;done


  评论这张
 
阅读(839)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017