【架构设计】分布式文件系统 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) 【上传下载以及同步文件简述

  大概上传流程就是客户端发送上传请求到Tracker Server服务器,接着Tracker Server服务器分配groupStorage 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 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/

安装libevent

  

  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

安装FastDFS

  

  3.3)【配置FastDFS】

环境:
tracker server
192.168.1.5
storage server
192.168.1.51
192.168.1.52

1、配置并启动 tracker server
①配置 tracker.conf

mkdir /data/fastdfs
vim /etc/fdfs/tracker.conf
base_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.conf
2、配置并启动 storage server
①配置 tracker.conf

mkdir /data/fastdfs
mkdir /data/images
vim /etc/fdfs/storage.conf
base_path=/data/fastdfs
store_path0=/data/images
tracker_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.conf
3、为storage节点安装fastdfs-nginx-module模块
①安装模块
安装Nginx详见:
需重新编译Nginx

wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz
tar zxvf fastdfs-nginx-module_v1.10.tar.gz
wget http://nginx.org/download/nginx-1.2.0.tar.gz
tar zxvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src
make && make install
cd ..
②配置
编辑nginx.conf

vim /usr/local/nginx/conf/nginx.conf
server {
    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.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
store_path0=/data/images
启动nginx

/usr/local/nginx/sbin/nginx

配置FastDFS

4. 使用



  4.1)【具体使用】

1、上传文件
FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。
在tracker上修改客户端配置文件client.conf

vim /etc/fdfs/client.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
vim a.html
This Is FastDFS Test.
上传文件

/usr/local/bin/fdfs_test /etc/fdfs/client.conf upload a.html
This is FastDFS client test program v3.06

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public 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=23000
server 2. group_name=group1, ip_addr=192.168.1.52, port=23000

group_name=group1, ip_addr=192.168.1.51, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file 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 模块及上传测试

时间: 2024-10-03 23:54:12

【架构设计】分布式文件系统 FastDFS的原理和安装使用的相关文章

记录:CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1

CentOS 7 安装配置分布式文件系统 FastDFS 5.1.1 软件下载:http://download.csdn.net/download/qingchunwuxian1993/9897458 yum-y install net-tools.x86_64 前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS的最新版本5.1.1在CentOS7

轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)

轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级) 实验室所在的课题组以研究云计算为主,但所有的研究都是在基于理论的凭空想像,缺少分布式环境的平台的实践,云计算神马的都是浮云了.因此,我想借助Hadoop把实验室的服务器搭建出一个基础的分布式实验环境,方便于以后进行实验测试神马的.无意中,看到了一款开源的轻量级分布式文件系统FastDFS,它是用纯C语言实现,详细信息可参见博客:分布式文件系统FastDFS架构剖析.通过收集资料,自己动手做了一些安装和测试使用,现在对前人的一些经验

分布式文件系统fastDFS

分布式文件系统fastDFS 1.什么是FastDFS FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站.视频网站等等.在UC基于FastDFS开发向用户提供了:网盘,社区,广告和应用下载等业务的存储服务. 2.FastDFS架构和原理 FastDFS服务端有三个角色:跟踪服务器(tracker server).存储服务器(storage server)

高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高

在上一篇 分布式文件系统FastDFS如何做到高可用 中已经介绍了FastDFS的原理和怎么搭建一个简单的高可用的分布式文件系统及怎么访问. 高可用是实现了,但由于我们只设置了一个group,如果现在有5台服务器那将会出现5台只有一个group,每台服务器内的文件内容都相同(互备份)如下图,会造成资源浪费. 因此下面就5台服务器进行优化改造,进一步添加keepalived+nginx多tracker 架构,做到真正的高可用和高性能. FastDFS集群服务器分布 其中keepalived+ngi

分布式文件系统FastDFS动态扩容

当用户量越来越大,则集群中某个group总会到达其极限,这时就得扩展集群的容量了. FastDFS的扩容分为对group纵向扩容和横向扩容 纵向扩容 指在同一个group组中增加服务器,实现数据冗余,数据备份.同一个group中最大容量取决于最小的storage的存储容量.因此如果还想继续使用此group,则需要对此group对应的所有服务器挂载同样容量的磁盘,指定store_path1--,但这样做的话成本相当的高,不推荐. 横向扩容是通过集群实现,指新增一个group,增加整个FastDFS

分布式文件系统FastDFS设计原理

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server).存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务. Storage server Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以g

分布式文件系统FastDFS原理介绍

在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以上要求,这就迫使开发者不得不考虑使用其他方式解决此类问题.分布式文件系统就在这样迫切的需求下孕育而生. 今天为什么把标题定为“分布式文件系统”呢?是因为我想通过此次分享(FastDFS原理介绍),和大家去做更多关于分布式文件系统的研究和分享.我想这项研究应该会是一个“系列”性的专题.在本文之后还计划

一、分布式文件系统FastDFS原理及入门

1.简介:FastDFS是用C语言编写的一款开源的分布式文件系统,FastDSF充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等特点,使用FastDFS可以很容易的搭建一套高性能的文件服务器集群提供文件上传.下载等服务. 2.原理:FastDFS系统结构如下图所示: FastDFS分为Tracker.Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度. Tracker.Storage都可以实现集群部署,Tracke

分布式文件系统FastDFS介绍和配置过程

http://ylw6006.blog.51cto.com/470441/948729/ 由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构初期,使用这种简单的方式实现了静态资源的读写分离,但随着网站数据量的增加,图片服务器渐渐成为整个网站的短板,缘次催生了使用fastfds的想法,故而先进行一番简单的测试!在开始之前还是先来看看fastfds的介绍信息: FastDFS is an open source high performan