标签:分布式文件系统 unix 信息 fastdfs简介 否则 常用 匹配 store htm
之前的文章,现在放出来,以供参阅。
使用场景:
特别适合以中小文件(建议范围: 4KB 到 500MB )为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。
文件上传机制
下载机制:
同步机制:
远行目录结构:
tracker server 结构:
${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
|__trackerd.log:tracker server日志文件
storage server结构:
${base_path}
|__data
| |__.data_init_flag:当前storage server初始化信息
| |__storage_stat.dat:当前storage server统计信息
| |__sync:存放数据同步相关文件
| | |__binlog.index:当前的binlog文件索引号
| | |__binlog.###:存放更新操作记录(日志)
| | |__${ip_addr}_${port}.mark:存放同步的完成情况
| |
| |__一级目录:256个存放数据文件的目录,如:00, 1F
| |__二级目录:256个存放数据文件的目录
|__logs
|__storaged.log:storage server日志文件
文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
其中:
设计特点:
1、通过组名tracker能够很快的定位到客户端需要访问的存储服务器组,并将选择合适的存储服务器提供客户端访问;
2、存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。
环境准备:
1、Linux环境,使用centos环境.
2、pdfs v5.+的版本不依赖于lib event, 需要安装libfastcommon.同时需要注意各个版本安装的时候匹配关系。不匹配的时候是有bug的。实例使用V5.08
软件下载:
1、代码仓库
https://github.com/happyfish100/fastdfs.git
https://github.com/happyfish100/libfastcommon.git
https://github.com/happyfish100/fastdfs-nginx-module.git
安装:
新系统:
yum -y install wget vim git texinfo patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap diffutils pcre pcre-devel
安装libfastcommon
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
sh make.sh && sh make.sh install
安装fastdfs
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
sh make.sh && sh make.sh install
安装nginx[已有可免安装]
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar zxvf nginx-1.8.0.tar.gz
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
cd nginx-1.8.0
./configure--prefix=/usr/local/nginx--add-module=/root/fastdfs-nginx-module/src
make&&make install
cd /usr/local/bin
ln-s/usr/local/nginx/sbin/nginx .
nginx-t
配置:
tracker.conf配置:
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
#cp /home/centos/fastDFS/fdfs-5.08/fastdfs/conf/http.conf .
#cp /home/centos/fastDFS/fdfs-5.08/fastdfs/conf/mime.types .
sed -i ‘s:base_path=.*:base_path=/home/lijianli/fastdfs/masterdata/tracker:g‘ tracker.conf
sed -i ‘s:http.server_port=.*:http.server_port=80:g‘ tracker.conf
storage.conf配置:
cd /etc/fdfs
cp storage.conf.sample storage.conf
#cp /home/centos/fastDFS/fdfs-5.08/fastdfs/conf/http.conf .
#cp /home/centos/fastDFS/fdfs-5.08/fastdfs/conf/mime.types .
sed -i ‘s:base_path=.*:base_path=/home/lijianli/fastdfs/masterdata/storage:g‘ storage.conf
sed -i ‘s:store_path0=.*:store_path0=/home/lijianli/fastdfs/masterdata/storage:g‘ storage.conf
sed -i ‘s/tracker_server=.*/tracker_server=10.60.81.188:22122/g‘ storage.conf
sed -i ‘s:http.server_port=.*:http.server_port=80:g‘ storage.conf
client.conf配置:
cd /etc/fdfs
cp client.conf.sample client.conf
sed -i ’s:base_path=.*:base_path=/home/lijianli/fastdfs/masterdata/client:g’ client.conf
sed -i ’s/tracker_server=.*/tarcker_server=10.60.81.188:22122/g’ client.conf
nginx配置
upstream fdfs_group1{
server 10.60.81.188:80;
}
server{
location group1/M00{
proxy_pass http://fdfs_group1;
}
}
常用命令:
fdfs_delete_file: 删除文件,/opt/apps/fdfs/bin/fdfs_delete_file <config_file> <file_id>
fdfs_download_file: 下载文件,/opt/apps/fdfs/bin/fdfs_download_file <config_file> <file_id> <local_filename>
fdfs_file_info: 获取某个文件信息,/opt/apps/fdfs/bin/fdfs_file_info <config_file> <file_id>
fdfs_monitor: 监控,查看storage server的状态/opt/apps/fdfs/bin/fdfs_monitor <config_file> 也可以用这个命令来摘除无效的storage节点,/opt/apps/fdfs/bin/fdfs_monitor <config_file> delete <group_name> <storage_ip> 注意:如果被删除的storage server的状态是ACTIVE,也就是该storage server还在线上服务的情况下,是无法删除掉的。
fdfs_storaged: 用来启动或是重启或是关闭server,/opt/apps/fdfs/bin/fdfs_storaged <config_file> [start | stop | restart]
fdfs_trackerd: 用来启动或是重启或是关闭server,/opt/apps/fdfs/bin/fdfs_trackerd <config_file> [start | stop | restart]
fdfs_upload_file: 上传文件,/opt/apps/fdfs/bin/fdfs_upload_file <config_file> <local_filename>
2、监控问题。
Java:
https://github.com/canmind/fastdfs-zyc/tree/master/fastdfs-zyc/main/webapp
3、开发集成问题。
阿里,UC网盘,优酷,搜狐等。
1、https://github.com/happyfish100/fastdfs 源码
2、http://bbs.chinaunix.net/forum-240-1.html 作者维护的论坛
3、http://tech.uc.cn/?p=221 UC团队使用维护文档
4、https://code.google.com/archive/p/fastdfs/ 作者维护的Google code上的项目。
标签:分布式文件系统 unix 信息 fastdfs简介 否则 常用 匹配 store htm
原文地址:http://www.cnblogs.com/accipiter/p/6249991.html