本文地址
分享提纲:
1.概述
2. 原理
3. 安装
4. 使用
5. 参考文档
1. 概述
1.1)【常见文件系统】
Google了一下,流行的开源分布式文件系统有很多,介绍如下:
-- mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多。
-- fastDFS:国人 余庆老师(GitHub)在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。
-- mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多
-- glusterFS:支持FUSE,比mooseFS庞大
-- ceph:支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟。
-- lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖
-- NFS:老牌网络文件系统,具体不了解,反正NFS最近几年没发展,肯定不能用
1.2)【fastDFS】
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
2. 原理
2.1)【三个角色】
具体参见: 分布式文件系统FastDFS设计原理
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
-
Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server
和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。 - Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
- Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
2.2) 【上传下载以及同步文件简述】
大概上传流程就是客户端发送上传请求到
可能我理解的也不是很彻底,下载、同步操作我不写了,这里有一篇文章 分布式文件系统FastDFS设计原理 讲解的很详细,我就不班门弄斧了,大家可以点击去看看。
Tracker Server服务器,接着Tracker Server服务器分配group和Storage Server,当然这是有一定规则的,选择好Storage Server后再根据一定规则选择存储在这个服务器会生成一个file_id,这个file_id 包含字段包括:storage server ip、文件创建时间、文件大小、文件 CRC32 校验码和随机数;每个存储目录下有两个 256 * 256 个子目录,后边你会知道一个Storage Server存储目录下有好多个文件夹的,storage 会按文件file_id进行两次 hash ,路由到其中一个子目录,然后将文件存储到该子目录下,最后生成文件路径:group 名称、虚拟磁盘路径、数据两级目录、file_id和文件后缀就是一个完整的文件地址。可能我理解的也不是很彻底,下载、同步操作我不写了,这里有一篇文章 分布式文件系统FastDFS设计原理 讲解的很详细,我就不班门弄斧了,大家可以点击去看看。
3. 安装
作者 余庆老师(GitHub)
具体安装教程见 :FastDFS 安装及使用
及 【好】分布式文件系统 - FastDFS 在 CentOS 下配置安装部署
3.1)【安装libevent】
fastDFS需要安装libevent比较新的版本,将本机的比较低的版本卸载了。
rpm -qa libevent
libevent-1.4.13-1.el6.x86_64
rpm -e --nodeps libevent
安装一个最新稳定版
wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
tar zxvf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure
make && make install
为libevent创建软链接到/lib库下,64位系统对应/lib64
ln -s /usr/local/lib/libevent* /lib/
ln -s /usr/local/lib/libevent* /lib64/
3.2)【安装FastDFS】
wget http://fastdfs.googlecode.com/files/FastDFS_v3.06.tar.gz
tar zxvf FastDFS_v3.06.tar.gz
cd FastDFS
./make.sh
./make.sh install