1. 程式人生 > >實測bbcp多線程傳輸工具

實測bbcp多線程傳輸工具

ble tor col 二進制 root 完成 開始 %u 4.0

bbcp是由SLAC(斯坦福直線加速器中心)的Andy Hanushevsky創立的點對點網絡文件拷貝工具。

1、安裝

訪問bbcp的主頁:http://www.slac.stanford.edu/~abh/bbcp/,下載對應二進制版本或者源碼,如果是源碼,就需要自己編譯。
wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_rhel60/bbcp

直接放到 /usr/local/bin 下面:

mv -f bbcp /usr/local/bin/bbcp && chmod +x /usr/local/bin/bbcp

然後就可以開始用了。

註意:如果你的服務器啟用防火墻了,註意需要開放 5031 端口的 INPUT 鏈。

例如,要從 172.16.66.65 拷貝文件到 172.16.66.66,則做如下規則:

iptables -I INPUT -s 172.16.66.66 -p tcp --dport 5031 -j ACCEPT

另外,bbcp拷貝的目標段也需要安裝bbcp。

2、測試

本次測試都是拷貝test.tar.gz文件。

du -sb test.tar.gz
1863814120 test.tar.gz

du -sh test.tar.gz
1.8G test.tar.gz

2.1 測試scp

time scp -P 1222 test.tar.gz [email protected]:/tmp/

[email protected]‘s password:
test.tar.gz 100% 1777MB 63.5MB/s 00:28

real 0m28.658s
user 0m4.832s
sys 0m4.113s

拷貝耗時約28.6s

2.2 測試 bbcp

time /usr/local/bin/bbcp -4 -k -a -r -F -v -P 2 -w 9m -s 16 -T ‘ssh -p 1222 -x -a -oFallBackToRsh=no %I -l %U %H/usr/local/bin/bbcp‘ test.tar.gz [email protected]:/tmp/

[email protected]‘s password:
bbcp: Indexing files to be copied...
bbcp: Copying 0 files and 0 links in 0 directories.
bbcp: Appending to /tmp/test.tar.gz at offset 0
bbcp: 171110 16:32:20 12% done; 135.9 MB/s, avg 135.9 MB/s
bbcp: 171110 16:32:22 22% done; 95.0 MB/s, avg 113.0 MB/s
bbcp: 171110 16:32:24 33% done; 98.7 MB/s, avg 107.9 MB/s
bbcp: 171110 16:32:26 41% done; 66.5 MB/s, avg 96.9 MB/s
bbcp: 171110 16:32:28 46% done; 45.4 MB/s, avg 86.2 MB/s
bbcp: 171110 16:32:30 52% done; 51.3 MB/s, avg 80.1 MB/s
bbcp: 171110 16:32:32 59% done; 65.7 MB/s, avg 78.0 MB/s
bbcp: 171110 16:32:34 64% done; 46.4 MB/s, avg 74.0 MB/s
bbcp: 171110 16:32:36 70% done; 49.9 MB/s, avg 71.2 MB/s
bbcp: 171110 16:32:38 75% done; 48.1 MB/s, avg 68.8 MB/s
bbcp: 171110 16:32:40 83% done; 65.5 MB/s, avg 68.5 MB/s
bbcp: 171110 16:32:42 87% done; 42.4 MB/s, avg 66.3 MB/s
bbcp: 171110 16:32:44 94% done; 62.0 MB/s, avg 66.0 MB/s
File /tmp/test.tar.gz created; 1863814120 bytes at 65.3 MB/s
1 file copied at effectively 60.3 MB/s

real 0m29.504s
user 0m0.062s
sys 0m1.383s

拷貝耗時約29.5s

從上面的測試結果來看bbcp並未傳聞的比scp快多少倍。


參數詳解:
-4 使用ipv4 IP地進行傳輸
-k 保留所有未傳輸完成的文件,並允許在重試時進行覆蓋,使用-f後即使加了-k也會全部重傳,一般與-a一起使用,默認不使用-k時當傳輸未完成就中斷傳輸時會刪除沒有傳輸完的目標文件
-a 保留checkpoint信息用於校驗文件的完整性
-r 遞歸傳輸指定路徑下的所有文件
-c 使用壓縮減少網絡上傳輸的字節但需要額外的CPU資源,如果CPU資源不足,性能會非常差。bbcp使用zip對數據進行壓縮傳輸壓縮級別1-9,1速度最快,9最大壓縮率速度最慢
-d 多目錄復制,可以使用多個源以空格隔開。如:/home/ddroot/data dir1/data1 dir2/data2
-P 2 每兩秒顯示傳輸的進程
-v 顯示拷貝信息
-V 打印調試信息
-f 強制清除遠程主機上傳輸失敗的數據
-F 不檢查目標服務器的剩余空間
-w 設置Disk (I/O) buffers
算法為(window = netspeed/8*RTT = 1000Mb/8*74ms = 1000/1000/8*74 = 9.25 M)
對應鏈接:http://www.slac.stanford.edu/~abh/bbcp/#_Toc332986061
-s 16 設置並發數為16
參考官方建議:http://www.slac.stanford.edu/~abh/bbcp/#_Streams_(-s)
-T "ssh -x -a -p 1222 -oFallBackToRsh=no -i /home/ddroot/.ssh/id_rsa -l ddroot 172.16.66.66 /usr/bin/bbcp"
指定遠端主機的認證方式:
采用-p 1222指定端口;
設置-oFallBackToRsh=no減少ssh響應時間;
設置-i /home/ddroot/.ssh/id_rsa指定SSH Key;
設置-l ddroot指定登陸用戶;
172.16.66.66為遠程主機地址;
/usr/bin/bbcp為遠程主機的bbcp路徑;
--port pn1 指定接收數據端口,默認5031
-Z pn1:pn2 指定接收數據端口範圍


更多詳細信息請查看:Using BBCP 和上面提到的bbcp主頁。
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
http://www.slac.stanford.edu/~abh/bbcp/

實測bbcp多線程傳輸工具