首页 > 代码库 > 【架构设计】分布式文件系统 FastDFS的原理和安装使用
【架构设计】分布式文件系统 FastDFS的原理和安装使用
本文地址
分享提纲:
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. 安装
源码下载:http://code.google.com/p/fastdfs
寻求帮助:http://www.csource.org
作者 余庆老师(GitHub)
具体安装教程见 :FastDFS 安装及使用
及 【好】分布式文件系统 - FastDFS 在 CentOS 下配置安装部署
3.1)【安装libevent】
fastDFS需要安装libevent比较新的版本,将本机的比较低的版本卸载了。 rpm -qa libeventlibevent-1.4.13-1.el6.x86_64rpm -e --nodeps libevent安装一个最新稳定版 wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gztar zxvf libevent-2.0.18-stable.tar.gzcd libevent-2.0.18-stable./configuremake && 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.gztar zxvf FastDFS_v3.06.tar.gzcd FastDFS./make.sh./make.sh install
3.3)【配置FastDFS】
环境:tracker server192.168.1.5storage server192.168.1.51192.168.1.52 1、配置并启动 tracker server①配置 tracker.conf mkdir /data/fastdfsvim /etc/fdfs/tracker.confbase_path=/data/fastdfs②启动 tracker /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf③开机启动 vim /etc/rc.local/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf2、配置并启动 storage server①配置 tracker.conf mkdir /data/fastdfsmkdir /data/imagesvim /etc/fdfs/storage.confbase_path=/data/fastdfsstore_path0=/data/imagestracker_server=192.168.1.5:22122②启动 tracker /usr/local/bin/fdfs_storage /etc/fdfs/storage.conf③开机启动 vim /etc/rc.local/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf3、为storage节点安装fastdfs-nginx-module模块①安装模块安装Nginx详见:需重新编译Nginx wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gztar zxvf fastdfs-nginx-module_v1.10.tar.gzwget http://nginx.org/download/nginx-1.2.0.tar.gztar zxvf nginx-1.2.0.tar.gzcd nginx-1.2.0./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/srcmake && make installcd ..②配置编辑nginx.conf vim /usr/local/nginx/conf/nginx.confserver { listen 80; server_name localhost; location /M00 { alias /data/images/data; ngx_fastdfs_module; } ......}给 storage 的存储目录做一个软连接 ln -s /data/images/data/ /data/images/data/M00拷贝mod_fastdfs.conf 到 /etc/fdfs/ cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/vim /etc/fdfs/mod_fastdfs.confbase_path=/data/fastdfstracker_server=192.168.1.5:22122store_path0=/data/images启动nginx /usr/local/nginx/sbin/nginx
4. 使用
4.1)【具体使用】
1、上传文件FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。在tracker上修改客户端配置文件client.conf vim /etc/fdfs/client.confbase_path=/data/fastdfstracker_server=192.168.1.5:22122vim a.htmlThis Is FastDFS Test.上传文件 /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload a.htmlThis is FastDFS client test program v3.06 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU GeneralPublic License V3, which may be found in the FastDFS source kit.Please visit the FastDFS Home Page http://www.csource.org/ for more detail. [2012-04-29 12:42:53] INFO - base_path=/data/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0 tracker_query_storage_store_list_without_group: server 1. group_name=group1, ip_addr=192.168.1.51, port=23000server 2. group_name=group1, ip_addr=192.168.1.52, port=23000 group_name=group1, ip_addr=192.168.1.51, port=23000storage_upload_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.htmlsource ip address: 192.168.1.51file timestamp=2012-04-29 12:42:53file size=14file crc32=674197143file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.htmlstorage_upload_slave_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.htmlsource ip address: 192.168.1.51file timestamp=2012-04-29 12:42:53file size=14file crc32=674197143file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html上传成功试试用 http://192.168.1.51/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html 访问看看吧。
5. 参考文档
5.1) 分布式文件系统 - FastDFS 简单了解一下
5.2) 分布式文件系统FastDFS设计原理
5.3) FastDFS 安装及使用
5.4) 【好】 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试
【架构设计】分布式文件系统 FastDFS的原理和安装使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。