本文目的是对unison同步工具的使用做一次小的试验.给需要的朋友一个相对简单的性能参考.
一.环境
Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz
mem total 4G
rhel5.0 2.6.18-8.el5xen (SMP x86_64)
node1 192.168.0.1 (nic:100M)
node2 192.168.0.2 (nic:100M)
openssl-0.9.8b-8.3.el5
openssh-clients-4.3p2-16.el5
openssh-4.3p2-16.el5
openssh-server-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5 (因为我用的是ssh方式)
ocaml-3.10.0
unison-2.13.16
二.安装
1.ocaml-3.10.0
#wget
#tar -zxvf ocaml-3.10.0.tar.gz
#cd ocaml-3.10.0
#./configure
#make world && make bootstrap && make opt && make opt.opt && make install
2.unison-2.13.16
#wget
#tar -zxvf unison-2.13.16.tar.gz
#cd unison-2.13.16
# make UISTYLE=text THREADS=true STATIC=true && make install (使用命令行方式,加入线程支持,编译为静态模式)
三.相关配置
1.配置ssh无密码登陆.
1)生成密钥
#ssh-keygen (一路回车)
2)配置sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys (去掉这三项的注释)
3)导入/导出公钥
node1#scp /root && cat /root/id_rsa.pub >> /root/.ssh/authorized_keys && rm
/root/id_rsa.pub
node1#scp .ssh/id_rsa.pub && ssh "cat /root/id_rsa.pub >>
/root/.ssh/authorized_keys && rm /root/id_rsa.pub"
4)重启sshd
#service sshd restart
2.配置unison
1)创建链接
#ln -s /root/bin/unison /bin
2)创建/root/.unison/default.prf
#vi /root/.unison/default.prf
root = /root/test/ (本地路径)
root = ssh://192.168.0.2//root/test/ (远端路径)
log = true
auto = true
batch = true
maxthreads = 500
owner = true (保持同步过来的文件属主)
group = true (保持同步过来的文件组信息)
perms = -1 (保持同步过来的文件读写权限)
repeat = 1 (间隔1秒后,开始新的一次同步检查)
retry = 3 (失败重试)
sshargs = -C (使用ssh的压缩传输方式)
xferbycopying = true
四.测试
1.建同步目录
#mkdir /root/test
#touch /root/test/i-am-no-empty (因为当目录为空时,unison会自动停止,目的是让它不停运转)
2.测试脚本test.bash
#!/bin/bash
for i in `seq 1 20000` ; do
cp -f /root/test/rhel-ld-en.pdf /root/test/${i}.pdf; (rhel-ld-en.pdf大小484KB,先拷入目录)
done
3.启动unison
#unison
Contacting server...
Looking for changes
Waiting for changes from server
Reconciling changes
Nothing to do: replicas have not changed since last sync.
Sleeping for 1 seconds...
4.启动测试脚本
#time /bin/bash test.bash && date
五.测试结果
real 6m10.933s
则20000/370=54个/秒,每秒生成54个新文件,则每秒有26,162KB文件要传输.
同步滞后时间为
57:25(同步结束时间)-55:55(同步开始时间)=100秒
按误差最大10秒来计,滞后为110秒.
则20000/(370+110)=41.6个/秒.每秒同步了41个左右的新文件,每秒传输了20,166KB(因为使用了压缩传输).
我同时测试了200000个,同步结果不好,大概每秒只能生成4个新文件.unison同步的滞后的时间变的很大,但这是文件系统的问题
,当同一目录下的文件太多时,文件系统本身就成为了制约性能的问题之一.
六.没有结论的结论.
通过测试,可以看到unison在同步的效率上还是可以的.至于用在什么方式面,那就是你自己的选择了.
阅读(3823) | 评论(1) | 转发(0) |