fastdfs是一个开源的轻量级分布式文件管理系统,可以轻松的实现对系统的扩容及高并发的负载均衡。
fastdfs有两个角色tracker
和storage
。tracker
跟踪器,主要是管理和调度工作,起到负载均衡的作用;storage
存储器,主要是对文件的存储及文件元数据metadata
的存储。
为了动态的增加存储节点storage
,存储节点实行分卷group
的组织形式,整个存储系统是由一个或者多个卷组成,卷和卷之间是相互隔离独立的。当存储空间不足时,可以动态的增加卷,来实现不影响服务的情况下实现系统的动态扩容。
要存储的文件,具体要存储到哪个卷group
,完全有tracker
来管理并且分配(默认是选择可用空间最大的存储节点)具体哪个storage
来完成存储,我们不需要指定和关心storage
。所以我们应用程序只需要连接tracker
(由tracker进行选择哪个storage),就能实现文件的上传、下载、删除等操作。当存储空间不足时,我们只需要增加存储节点storage
、group
挂载到tracker
即可。
论坛地址:http://bbs.chinaunix.net/forum-240-1.html
资源下载:https://sourceforge.net/projects/fastdfs/
fastdfs的安装
1、下载:
- libfastcommon-master.zip
是由FastDFS 和FastDHT 中提取出来的公共 C 函数库
- FastDFS_v5.08.tar.gz
fastdfs的主程序
2、安装依赖
fastdfs,是由C
语言编写,提前安装C
语言相关的的依赖:
# yum install -y make cmake gcc gcc-c++
3、安装 libfastcommon
解压 libfastcommon-master.zip 到/usr/local/fastdfs/
目录下,
进入解压后的文件夹内 ·
> cd libfastcommon-master
编译:
> ./make.sh
安装:(默认安装到/usr/lib64目录中)
> ./make.sh install
创建软连接: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
4、安装主程序 FastDFS
解压 FastDFS_v5.08.tar.gz 到/usr/local/fastdfs/目录下
进入解压后的文件夹内:
> cd FastDFS
编译:
> ./make.sh
安装:
> ./make.sh install
安装完后的目录及文件
-
服务脚本:
/etc/init.d/fdfs_storaged
、/etc/init.d/fdfs_trackerd
-
样例配置文件:
/etc/fdfs/tracker.conf.sample
、/etc/fdfs/storage.conf.sample
、/etc/fdfs/client.conf.sample
-
命令工具:客户端实现文件的管理操作,
/usr/bin目录中,查看方式为 ls /usr/bin | grep fdfs
5、修改服务脚本
修改脚本/etc/init.d/fdfs_storaged
和/etc/init.d/fdfs_trackerd
中的命令目录,将/usr/local/bin
修改为/usr/bin
说明:上述的安装都是在两台机器上相同的操作,安装的相同的软件,接下来的安装就是在一台机器安装tracker
在另一台安装storage
。
6、配置并且启动 tracker
进入配置目录:
> cd /etc/fdfs
复制配置文件:
> cp tracker.conf.sample tracker.conf
修改内容如下,其余不用动
disabled=false #启用配置文件
base_path=/fastdfs/tracker #tracker 的数据文件和日志目录
创建Tracker需要的目录:
> mkdir -p /fastdfs/tracker
启动tracker服务:
> /etc/init.d/fdfs_trackerd start
初次启动后会在 /fastdfs/tracker/目录下创建 logs、data 两个文件夹
查看服务是否启动:
查看端口:
> netstat -unltp | grep fdfs
查看启动日志:
> tail -100f /fastdfs/tracker/logs/trackerd.log
设置开机启动,要在storage前启动,也可以不设置开机启动:
vi /etc/rc.d/rc.local
添加:
### FastDFS Tracker ###
/etc/init.d/fdfs_trackerd start
7、配置并且启动 storage
进入配置目录:
> cd /etc/fdfs
复制配置文件:
> cp storage.conf.sample storage.conf
编辑文件storage.conf
vim storage.conf
disabled=false #启用配置文件
group_name=group1 #组名(SS11、SS12为 group1,SS21、SS22为 group2)
port=23000 #storage 的端口号,同一个卷的 storage 端口号必须相同
base_path=/fastdfs/storage/base #设置 storage 的日志目录
store_path0=/fastdfs/storage/store #存储路径
store_path_count=1 #存储路径个数,需要和 store_path 个数匹配
tracker_server=192.168.209.129:22122 #tracker 服务器的IP 地址和端口
http.server_port=8888 #设置 http 端口号
创建storage所需的文件夹
mkdir -p /fastdfs/storage/base
mkdir -p /fastdfs/storage/store
启动storage
> /etc/init.d/fdfs_storaged start
初次启动会在/fastdfs/storage/base目录中创建data、logs两个目录,用于保存源数据和日志;
在/fastdfs/storage/store中创建data目录,并在data中创建总计256*256个子孙目录
查看storage是否启动成功
tail -f /fastdfs/storage/base/logs/storaged.log
查看端口:
netstat -unltp | grep fdfs
使用FastDFS中的Monitor查看:在所有的Storage启动成功后执行下述命令
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
设置开机启动,要在stracker启动后启动,可以不设置:
vi /etc/rc.d/rc.local
添加:
### FastDFS Storage ###
/etc/init.d/fdfs_storaged start
到此安装完成
8、测试客户端上传文件:
在任意一个tracker节点,修改client配置文件
进入目录:
cd /etc/fdfs
复制文件:
cp client.conf.sample client.conf
编辑文件
vim /etc/fdfs/client.conf
修改如下
base_path=/fastdfs/tracker
tracker_server=192.168.209.129:22122 #有几台tracker就配置几个
测试上传:
上传文件
usr/bin/fdfs_upload_file /etc/fdfs/client.conf 要上传的文件
修改tracker中配置文件/etc/fdfs/tracker.conf中的store_lookup,这个属性的可选值有0,1,2。分别代表:
# 0: 轮询
# 1: 指定卷,通过卷名指定访问某一个卷
# 2: 访问空闲磁盘空间较大的。是默认的负载策略