Fdfs 轻量级分布式文件系统

FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能,就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

Fdfs 轻量级分布式文件系统

FastDFS的特性
1、分组存储,灵活简洁、对等结构,不存在单点
2、文件ID由FastDFS生成,作为文件访问凭证,FastDFS不需要传统的name server
3、和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块
4、大、中、小文件均可以很好支持,支持海量小文件存储
5、 支持多块磁盘,支持单盘数据恢复
6、支持相同文件内容只保存一份,节省存储空间
7、 存储服务器上可以保存文件附加属性
8、下载文件支持多线程方式,支持断点续传

运行环境相关软件:

CentOS 7.0

下载libfastcommon

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz

tar -zxvf V1.0.35.tar.gz
cd libfastcommon-1.0.35
./make.sh
./make.sh install

安装FastDFS

wget https://github.com/happyfish100/fastdfs/archive/V5.10.tar.gz
tar xvf V5.10.tar.gz
cd fastdfs-5.10
./make.sh
./make.sh install

配置跟踪服务器(tracker server)

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

1、编辑tracker server配置文件tracker.conf

disabled=false
port=22122
base_path=/u01/data/fastdfs/tracker

2、编辑client端的配置文件client.conf

base_path=/data/fastdfs/tracker
tracker_server=192.168.25.100:22122

3、创建tracker server数据目录
mkdir -p /u01/data/fastdfs/tracker

4、启动tracker server
/etc/init.d/fdfs_trackerd start
tracker server自动在/data/fastdfs/tracker目录新建data和logs目录

配置存储服务器(storage server)

cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
1、编辑storage server配置文件storage.conf
disabled=false
port=23000
base_path=/u01/data/fastdfs/storage
tracker_server=192.168.25.100:22122
store_path0=/data/fastdfs/storage
http.server_port=8888

2、创建storage server数据目录
mkdir -p /u01/data/fastdfs/storage

3、启动storage server
/etc/init.d/fdfs_storaged start

4、文件上传测试
[[email protected] conf.d]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf ./default.conf
group1/M00/00/00/wKgZZFxD2EqABE-RAAAFc0mlLyw60.conf
[[email protected] conf.d]#

安装nginx

1、更新nginx安装库
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum update

2、安装nginx
yum info nginx
yum install nginx

存储服务器(storage server)安装并配置nginx

1、安装fastdfs-nginx-module
fastdfs-nginx-module解决同组存储服务器之间文件复制不一致情况下,为客户端正确访问到文件提供支持。
wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS Nginx Module Source Code/fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src/
vi config
编辑config文件,执行如下命令进行批量替换并保存退出,修改/user/local为/user
:%s+/usr/local/+/usr/+g

2、拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑
cp /u01/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

修改文件mod_fastdfs.conf
vi /etc/fdfs/mod_fastdfs.conf

connect_timeout=10
base_path=/tmp
tracker_server=192.168.25.100:22122
storage_server_port=23000
url_have_group_name = true
store_path0=/u01/data/fastdfs/storage
group_name=group1
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/u01/data/fastdfs/storage

3、nginx添加fastdfs-nginx-module模块
查看nginx版本
nginx -V
Fdfs 轻量级分布式文件系统
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -zvxf nginx-1.12.1.tar.gz
yum -y install pcre

service nginx stop
#编译./configure 后面加上 nginx -V查看到的所有配置参数,后面加上fastdfs-nginx-module模块配置
./configure --prefix=/etc/nginx ……(nginx -V输出的内容)…… --add-module=/u01/fastdfs-nginx-module/src
make & make install
*
4、拷贝FastDFS中的部分配置文件到/etc/fdfs目录中
cp /u01/fastdfs/fastdfs-5.10/conf/http.conf /etc/fdfs/
cp /u01/fastdfs/fastdfs-5.10/conf/client.conf /etc/fdfs/

5、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
添加如下内容:

server {
listen 81;
server_name localhost;
location ~ /group1/M00 {
root /u01/data/fastdfs/storage;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

6、上传测试文件
[[email protected] conf.d]# ls
default.conf
[[email protected] conf.d]# fdfs_upload_file /etc/fdfs/client.conf ./default.conf
group1/M00/00/00/wKgZZFxD3VKABeg-AAAFc0mlLyw93.conf
[[email protected] conf.d]#

7、关闭防火墙并启动Nginx
systemctl stop firewalld.service
systemctl start firewalld.service

8、通过Nginx代理下载文件
http://192.168.25.100:81/group1/M00/00/00/wKgZZFxD3VKABeg-AAAFc0mlLyw93.conf

设计高可用高并发的系统中,可以将静态资源存放在分布文件系统上,通过Nginx代理处理,提高系统执行效率