1 架构图
![](https://img-blog.csdnimg.cn/img_convert/6550bbb3264d32922cd7b1db0dd29ff1.png)
2 角色
Client:客户端。使用java语言编写的项目属于客户端。
Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。在内存中记录集群中group和storage server的状态信息,是连接Client和Storage server的枢纽。
Storage Server:存储服务器,文件和文件属性(meta data)都保存到存储服务器上
3 架构解读
只有两个角色,tracker server和storage server,不需要存储文件索引信息。
所有服务器都是对等的,不存在Master-Slave关系。
存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)。
不同组的storage server之间不会相互通信。
由storage server主动向tracker server报告状态信息,tracker server之间不会相互通信。
五、FastDFS安装
1.安装FastDFS依赖
FastDFS是C语言开发的应用。安装必须使用 make , cmake 和 gcc编译器。
![](https://img-blog.csdnimg.cn/img_convert/c3001a747707a03a493e5a402854b214.gif)
![](https://img-blog.csdnimg.cn/img_convert/e9c2adf2a56a586ebfef5ddae2087ff6.gif)
# yum install -y make cmake gcc gcc-c++
![](https://img-blog.csdnimg.cn/img_convert/5a80e674c04733553ea5dcbbb7b7275a.gif)
![](https://img-blog.csdnimg.cn/img_convert/23a9192d99b579d2bca7834991813655.gif)
2 上传并解压libfastcommon-master
上传libfastcommon-master 到 /usr/local/tmp下。 libfastcommon是从FastDFS和FastDHT中提取出来的公共C函数库
解压 libfastcommon-master.zip 由于是zip文件所以要使用 unzip命令
# cd /usr/local/tmp
# unzip libfastcommon-master.zip
![](https://img-blog.csdnimg.cn/img_convert/34a430760769ffe60b5cac31877c3554.gif)
![](https://img-blog.csdnimg.cn/img_convert/a912b5726d5d962ed40d5f193c81ddb0.gif)
3 编译并安装
libfastcommon没有提供make命令安装文件。使用的是shell脚本执行编译和安装。shell脚本为 make.sh
进入解压后的文件
# cd libfastcommon-master
![](https://img-blog.csdnimg.cn/img_convert/d0dfbd2fefd7d26ec995b6eb6e242b16.gif)
![](https://img-blog.csdnimg.cn/img_convert/a39232e05f3d25e15ae25dcc585aacd7.gif)
编译
#./make.sh
![](https://img-blog.csdnimg.cn/img_convert/8fb55710d12ec25737ac52cfb995dd14.gif)
![](https://img-blog.csdnimg.cn/img_convert/55cbc0773a671b5aa7194e0133fd8b17.gif)
安装
#./make.sh install
![](https://img-blog.csdnimg.cn/img_convert/fd52af8b626b1be7509848a73cd86101.gif)
![](https://img-blog.csdnimg.cn/img_convert/1200a512e5ad7ba47805cdaaafb59bb1.gif)
有固定的默认安装位置。在/usr/lib64 和 /usr/include/fastcommon两个目录中
4 创建软连接
因为FastDFS 主程序设置的lib目录是 /usr/local/lib, 所以需要创建软连接
# ln -s /user/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
![](https://img-blog.csdnimg.cn/img_convert/bac49e4a19f3944efdc6914367214b30.gif)
![](https://img-blog.csdnimg.cn/img_convert/c1990bc6e58b119cdf23da8479624fb6.gif)
5 上传并解压FastDFS主程序
上传 FastDFS_v5.08.tar.gz 到 /usr/local/tmp下后解压
# cd /usr/local/tmp
# tar zxf FastDFS_v5.08.tar.gz
![](https://img-blog.csdnimg.cn/img_convert/5cc2b1164af1dfed52d1b85de7db10b2.gif)
6 编译并安装FastDFS
进入到解压后的FastDFS文件中
# cd FastDFS
![](https://img-blog.csdnimg.cn/img_convert/e64e912142fda3b94ad7ad075bdc5d11.gif)
![](https://img-blog.csdnimg.cn/img_convert/35b4e2f6154f228eb346d8da83762397.gif)
编译
# ./make.sh
![](https://img-blog.csdnimg.cn/img_convert/d5b92fcb83bb03c6d7e3b27d0b939071.gif)
![](https://img-blog.csdnimg.cn/img_convert/78d392731aea05c2ae8359dceb02258f.gif)
安装
# ./make.sh install
![](https://img-blog.csdnimg.cn/img_convert/9796c6db8a6611f837a8718bf9cded1c.gif)
![](https://img-blog.csdnimg.cn/img_convert/f1b42660d139a172e0b4e4cfb5a2fb4a.gif)
安装后 FastDFS主程序所在的位置是
/usr/bin 可执行文件所在的位置
/etc/fdfs 配置文件所在的位置
/usr/bin 主程序代码所在位置
/usr/include/fastdfs 包含一些插件组所在的位置
7 配置tracker
7.1 复制配置文件
进入到 /etc/fdfs 中 , 把tracker配置文件复制一份
# cd /etc/fdfs
# cp tracker.conf.sample tracker.conf
![](https://img-blog.csdnimg.cn/img_convert/f125a476fb0478807aa78b901f7179c0.gif)
![](https://img-blog.csdnimg.cn/img_convert/b6556f652ff205cd2003d5a767fb33cd.gif)
7.2 创建数据目录
创建放置 tracker数据的目录
# mkdir -p /usr/local/fastdfs/tracker
![](https://img-blog.csdnimg.cn/img_convert/6d2083b4daf2cc7c6b1d51632b5b7560.gif)
![](https://img-blog.csdnimg.cn/img_convert/1045d7af6906b0f5494ebd5f01bf2d36.gif)
7.3 修改配置文件
修改 tracker.conf 设置 tracker 内容存储目录
base_path=/usr/local/fastdfs/tracker
#vim tracker.conf
![](https://img-blog.csdnimg.cn/img_convert/d199676e61c15bea2ae9c529cd0ca0e7.gif)
![](https://img-blog.csdnimg.cn/img_convert/f930fad2c0c5f89cad1c34a3ccda10a2.gif)
默认端口 22122 不需要修改
![](https://img-blog.csdnimg.cn/img_convert/023b7defdc89a2f2b637c9e21e5cff6f.gif)
![](https://img-blog.csdnimg.cn/img_convert/754805457d68ea8deb4c9890b522c33e.gif)
7.4 启动服务
# service fdfs_trackerd start
![](https://img-blog.csdnimg.cn/img_convert/c670a57a2423550c389085cac081a399.gif)
启动成功后, 配置文件中 base_path 指向的目录出现 FastDFS服务相关数据目录(data目录, logs 目录)
7.5 查看服务运行状态
# service fdfs_trackerd status
![](https://img-blog.csdnimg.cn/img_convert/40fa1076a64a339d05d0b03cb254d26b.gif)
![](https://img-blog.csdnimg.cn/img_convert/1e605b87610c0fd784ea9c221d240077.gif)
如果显示 is running 表示正常运行。
7.6 关闭防火墙
# service iptables stop
# chkconfig iptables off
![](https://img-blog.csdnimg.cn/img_convert/0051df1ac09d0572c4e6f0780ab05666.gif)
![](https://img-blog.csdnimg.cn/img_convert/43d7ae584911ff1debce84b604d54b3d.gif)
8 配置storage
storage可以和tracker不在同一台服务器上。示例中把storage和tracker安装在同一台服务器上了。
![](https://img-blog.csdnimg.cn/img_convert/73559c48a71ed03e586ff49c43666ae3.gif)
![](https://img-blog.csdnimg.cn/img_convert/354d80806b129b9d1dd3c7e34fb1b47a.gif)
8.1 复制配置文件
进入到 /etc/fdfs, 把 storage 配置文件复制一份
# cd /etc/fdfs
# cp storage.conf.sample storage.conf
![](https://img-blog.csdnimg.cn/img_convert/18b3b70e4f4b590bc871e6bb0a4ab779.gif)
![](https://img-blog.csdnimg.cn/img_convert/39a9ac165be32f0401e3838a1bab9ee8.gif)
8.2 创建目录
创建两个目录, 把base用于存储基础数据和日志,store用于存储上传数据。
# mkdir -p /usr/local/fastdfs/storage/base
# mkdir -p /usr/local/fastdfs/storage/store
![](https://img-blog.csdnimg.cn/img_convert/b65b30e7f742e83153f0be39c3b7edcc.gif)
![](https://img-blog.csdnimg.cn/img_convert/5e62952227e0fb5522d1d9cfbbbbfd0b.gif)
8.3 修改配置文件
storage.conf配置文件用于描述存储服务的行为,需要进行下述修改
# vim /etc/fdfs/storage.conf
![](https://img-blog.csdnimg.cn/img_convert/e2ff6b3c3a92645c830dda03334777a3.gif)
![](https://img-blog.csdnimg.cn/img_convert/0dffa9f144b845d4fcfcc7a479121752.gif)
配置内容如下:
base_path=/usr/local/fastdfs/storage/base
store_path0=/usr/local/fastdfs/storage/store
tracker_server=tracker 服务IP:22122
![](https://img-blog.csdnimg.cn/img_convert/1d9ed94538f60df3e8942a012f6e1232.gif)
![](https://img-blog.csdnimg.cn/img_convert/0d49835a076f99c0bc00c704b37963a5.gif)
base_path - 基础路径。用于保存storage server 基础数据内容和日志内容的目录。
store_path0 - 存储路径。是用于保存FastDFS中存储文件的目录,就是要创建256*256个子目录的位置。
base_path 和 store_path0 可以使用同一个目录。
tracker_server - 跟踪服务器位置。就是跟踪服务器的IP和端口。
启动服务
# service fdfs_storaged start
![](https://img-blog.csdnimg.cn/img_convert/5fc66c29e8f4290ca9960142bfc277b0.gif)
![](https://img-blog.csdnimg.cn/img_convert/926462a7f24aa949883445dfa8f20d39.gif)
启动成功后,配置文件中base_path 指向的目录中出现FastDFS服务相关数据目录(data目录、logs目录)配置文件中的store_path0指向的目录中同样出现FastDFS存储相关数据录(data目录)。其中$store_path0/data/目录中默认创建若干子孙目录(两级目录层级总计256*256个目录),是用于存储具体文件数据的。
Storage 服务器启动比较慢,因为第一次启动的时候,需要创建256*256个目录。
查看启动状态
# service fdfs_storaged status
![](https://img-blog.csdnimg.cn/img_convert/a065548ba28f92ab42b8b311d12499c5.gif)
![](https://img-blog.csdnimg.cn/img_convert/bae8861e5280e452d213514c5dacf13b.gif)