转载的目的是源网站是个人博客,很有可能随时关闭,为了信息保存便于查看。
FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。
安装步骤可以参考源码包内的INSTALL文件。本例中不含fastdfs-nginx-module和FastDHT的安装和部署。
安装需求
FastDFS 5.x 取消了对libevent的依赖,添加了对libfastcommon的依赖。本例中需求的环境如下:
- Linux操作系统,本例中使用的操作系统是Ubuntu 14.04。
- FastDFS源码:
在FastDFS项目主页下载源码,本例中使用的源码版本是V5.05。 - libfastcommon源码:
下载libfastcommon(c common functions library for FastDFS),本例中使用的版本是V1.07。
安装libfastcommon
libfastcommon是FastDFS项目的通用函数库。其中的方法包括:string,logger,chain,hash,socket,ini file reader,base64 encode / decode,url encode / decode,fasttimer等。libfastcommon的安装过程如下:
1.下载libfastcommon源码包,并且解压
tar xzf libfastcommon_v1.x.tar.gz
#for example:
tar xzf libfastcommon_v1.23.tar.gz
2.,进入libfastcommon源码根目录
cd libfastcommon
./make.sh
./make.sh install
可以看到libfastcommon.so安装到了“/usr/lib64”目录。但是FastDFS主程序设置的lib目录是“/usr/local/lib”所以需要创建软链接:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安装FastDFS
- 安装libfastcommon组件
- 下载FastDFS源码包,并且解压
tar xzf FastDFS_v5.x.tar.gz #for example: tar xzf FastDFS_v5.07.tar.gz
- 进入FastDFS源码根目录
cd FastDFS
- make
./make.sh
- make install
./make.sh install
安装完成后,所有可执行文件在目录“/usr/bin”下,以fdfs_开头:
[root@localhost ~]# ls /usr/bin/fdfs_*
/usr/bin/fdfs_appender_test /usr/bin/fdfs_monitor
/usr/bin/fdfs_appender_test1 /usr/bin/fdfs_storaged
/usr/bin/fdfs_append_file /usr/bin/fdfs_test
/usr/bin/fdfs_crc32 /usr/bin/fdfs_test1
/usr/bin/fdfs_delete_file /usr/bin/fdfs_trackerd
/usr/bin/fdfs_download_file /usr/bin/fdfs_upload_appender
/usr/bin/fdfs_file_info /usr/bin/fdfs_upload_file
配置文件在目录“/etc/fdfs”下:
[root@localhost ~]# ls /etc/fdfs
client.conf.sample storage.conf.sample tracker.conf.sample
首先需要在“/etc/fdfs”目录下创建跟踪器的配置文件tracker.conf和存储节点的配置文件storage.conf,在“/etc/fdfs”命令下复制即可:修改/编辑跟踪器和存储节点的配置文件
-
cd /etc/fdfs cp tracker.conf.sample tracker.conf cp storage.conf.sample storage.conf
- 修改tracker配置文件:
vim /etc/fdfs/tracker.conf #或 vi /etc/fdfs/tracker.conf #或 gedit /etc/fdfs/tracker.conf
其中重要的键是base_path(目录地址,此目录必须存在 ),在这里修改为:base_path=/data/fastdfs/tracker
- 修改tracker配置文件:
vim /etc/fdfs/storage.conf #或 vi /etc/fdfs/storage.conf #或 gedit /etc/fdfs/storage.conf
其中重要的键是base_path(目录地址,此目录必须存在 ,注:这里不是上传的文件存放的地址,之前是的,在某个版本后更改了 ),group_name,store_path[x],tracker_server。在这里修改为:group_name=group1 base_path=/data/fastdfs/storage store_path0=/data/fastdfs/storage tracker_server=192.168.1.70:22122
tracker.conf和storage.conf更详细说明见:FastDFS 配置文件详解(修订版1)。
启动跟踪器和存储节点
在启动跟踪器和存储节点之前,需要创建上面提到的软链接,否则会报错:
TeX
/usr/bin/fdfs_trackerd: error while loading shared libraries: libfastcommon.so: cannot open shared object file: No such file or directory
使用客户端client测试上传下载启动跟踪器
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
在Linux系统,你可以把fdfs_trackerd作为服务启动:
/sbin/service fdfs_trackerd start
启动存储节点
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
在Linux系统,你可以把fdfs_storaged作为服务启动:
/sbin/service fdfs_storaged start
启动跟踪器和存储节点后,需要测试它们的配置是否正确,可以使用FastDFS自带的客户端测试。在使用客户端之前首先需要配置客户端:
- 在“/etc/fdfs”目录下创建client的配置文件client.conf,在“/etc/fdfs”命令下复制即可:
tracker_server=127.0.0.1:22122 base_path=/home/xxx/fastdfs
客户端client配置完成后,就可以使用客户端上传和下载文件了:
- 上传文件
dfs_upload_file client.conf /home/cjx/1.png #返回结果: group1/M00/00/00/fwAAAVaoXT2ALAOOAAplTCfBJQE558.png
- 查看文件信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/fwAAAVaoXT2ALAOOAAplTCfBJQE558.png #返回结果: source storage id: 0 source ip address: 127.0.0.1 file create timestamp: 2016-01-27 14:01:33 file size: 681292 file crc32: 666969345 (0x27C12501)
- 下载文件
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/fwAAAVaoXT2ALAOOAAplTCfBJQE558.png /home/xxx/fastdfs/1.png
上传文件2返回结果如下图:fdfs_test client.conf upload /home/cjx/1.png
参考文章:
搭建FastDFS分布式存储环境(使用Nginx模块)
FastDFS v5.06 部署
FastDFS 配置文件详解(修订版1)