FastDFS简介
fastdfs是一个开源的,高性能的的分布式文件系统,他主要的功能包括:文件存储,同步和访问,设计基于高可用和负载均衡,fastfd非常适用于基于文件服务的站点,例如图片分享和视频分享网站。
fastfds有两个角色:跟踪服务(tracker)和存储服务(storage),跟踪服务控制,调度文件以负载均衡的方式访问;存储服务包括:文件存储,文件同步,提供文件访问接口,同时以key value的方式管理文件的元数据。
跟踪和存储服务可以由1台或者多台服务器组成,同时可以动态的添加,删除跟踪和存储服务而不会对在线的服务产生影响,在集群中,tracker服务是对等的。 存储系统由一个或多个卷(group)组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
测试工具
本次测试使用FastDFS安装包中自带的工具进行测试,该工具是开源代码工具,可以根据自身情况进行修改。
测试步骤
测试前准备
自带的工具是没有编译过的源码,需要进行编译生成测试脚本
首先解压FastDFS安装包
1
|
$tar zxvf FastDFS_v5.03.
tar.
gz
|
进入测试脚本目录
1
|
$cd FastDFS
/test
|
编译
1
|
$make
&
;&
; make install
|
如果编译报错,需要编辑一下Makefile文件,修改FastDFS的安装路径。
编译成功后应该是下面这样
修改客户端配置文件
1
|
$vim
/etc
/fdfs
/client.
conf
|
修改需要测试的tracker_server的ip和端口
执行测试
首先,需要生成测试用的文件,执行
1
|
$.
/gen_files
|
会分别生成5k、50k、200k、1M、10M、100M的文件各一个
默认情况下,测试upload会循环10次,那样客户端生成的tcp连接为10个。
我们可以通过修改源文件修改这个值。
修改test_upload.c
1
|
$vim test_upload.
c
|
将常量PROCESS_COUNT 改为需要模拟的客户端tcp连接数,比如1000。
修改完后,需要重新编译一次
1
|
$make
&
;&
; make install
|
测试上传
修改测试上传的脚本
1
|
$vim test_upload.
sh
|
将默认的10修改为需要模拟的数,比如100,这个数不能超过之前配置的常量1000。
执行脚本test_upload.sh进行测试
1
|
$sh .
/test_upload.
sh
|
执行完成后,会提示每个进程的用时,在当前目录下会自动生成一个upload目录用于存储测试数据。
查看结果
进入该目录。
1
|
$cd upload
|
执行
1
|
$..
/combine_result
10
|
后面的参数10需要跟脚本test_upload.sh中配置的一致。
测试结果中详细的记录了
第一部分,总共上传的文件数、成功上传的文件数、上传文件的成功率、上传文件所花的时间、平均用时以及每秒查询数(请求数)。
中间部分记录的是每种类型文件上传的个数。
最后一部分是磁盘IO速度以及服务端ip,总共上传数、总共成功数、用时、平均用时、请求速率、成功率。
下载和删除的测试方法一样,分别执行脚本
1
2 |
$sh .
/test_download.
sh
$sh . /test_delete. sh |
即可,执行前记得修改相应的配置,需要注意的是,测试顺序一定是upload、download、delete,如果一开始就测试download,会提示找不到文件。
以上,为FastDFS的大致测试流程。