【架构设计】分布式文件系统 法斯特DFS的原理和设置使用

本文地址

享受提纲:

  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)【多个角色】

  具体参见: 分布式文件系统法斯特DFS设计原理

  法斯特DFS
系统有多个角色:跟踪服务器(Tracker Server)、存储服务器(Storage
Server)和客户端(Client)

  • Tracker Server:
    跟踪服务器,紧要做调度工作,起到平衡的意义;负责管理所有的 storage
    server
    和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group
    等消息,并保持周期性心跳。
  • Storage Server:存储服务器,主要提供容量和备份服务;以 group
    为单位,每个 group 内足以有多台 storage server,数据交互备份。
  • Client:客户端,上传下载数据的服务器,也就是大家和好的门类所陈设在的服务器。

图片 1

 

  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和文书后缀就是一个完好无损的文件地方。
莫不自己清楚的也不是很干净,下载、同步操作我不写了,那里有一篇文章 分布式文件系统法斯特DFS设计原理 讲解的很详细,我就不布鼓雷门了,大家能够点击去看望。

 

  

3. 安装


  

源码下载:http://code.google.com/p/fastdfs

谋求救助:http://www.csource.org

作者 余庆老师(GitHub)

现实安装教程见 :法斯特DFS
安装及运用

        及 【好】分布式文件系统 – 法斯特DFS
在 CentOS
下部署安装配备

  3.1)【安装libevent】

图片 2图片 3

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】

图片 4图片 5

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】 

 

图片 6图片 7

环境:
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 /datata;
        ngx_fastdfs_module;
    }
    ......
}
给 storage 的存储目录做一个软连接

ln -s /datata/ /datata/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)【具体选拔】

 

图片 8图片 9

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) 分布式文件系统 –
法斯特DFS 不难询问一下

  5.2) 分布式文件系统法斯特DFS设计原理

  5.3) 法斯特DFS
安装及使用

  5.4) 【好】 分布式文件系统 – 法斯特DFS 配置 Nginx
模块及上传测试

 

 

 

 

相关文章