文档章节

分布式文件系统fastdfs解析之一(安装)

yanwawa
 yanwawa
发布于 2014/06/04 17:43
字数 1633
阅读 105
收藏 4

  fastdfs是一个轻量级的分布式文件系统服务,它在互联网项目中有比较广泛的用途,类似的还有tfs等,但fastdfs和hadoop这些又不相同,hadoop是分布式存储计算框架,比较重量级,而fastdfs针对的是海量的小文件。

  项目中经常会有这样一些应用场景,比如:文件服务器需要存储海量的用户文件并且对外提供用户的访问操作;文件服务器需要高可用性和高性能;文件服务器需要实现负载均衡;文件服务器可实时扩容等等,这些需求在Fastdfs中有实现,因此它可以满足大部的项目需求。

  先给大家简单介绍一下fastdfs的原理,下面这张图有助于大家了解分布式文件系统的原理(hadoop之类的分布式体系与之有相似之处)。

fdfs调用时序

  上面这张图中客户端针对文件服务系统的调用,首先得通过tracker服务器,这个服务器充当了调度者的作用。客户端可以是任何的程序客户端,比如java客户端、php客户端、nginx插件客户端等。

  在客户端调用之前先得启动tracker server,然后再分别启动各个storage server,每个storage server启动后会注册自己的信息到指定的tracker server中(其实,tracker server服务器也可以有多个,从高可用性方面考虑我们一般会启动多个tracker server实例)。

  storage server负责具体文件的存储。storage server按照分组的方式来保存文件的,比如group1,group2等。一个组中可以有多台服务器,同一个组里的所有服务器中保存的文件内容都是相同的,因为同一个组中的服务器之间会相互自动同步文件,这样就实现了冗余备份及负载均衡的功能(负载均衡由tracker server调试的哦)。

  不同组中的storage server之间是独立的,当系统存储容量不够时,通过添加新服务器并分配到新的组中,tracker server发现新的服务器后会自动调度以实现后续客户文件的写入位置。

  上图中,客户通过询问tracker server得到可用的storage server(tracker server会通过负载均衡及各个storage的存储可用容量大小算法决定,当然这个也可以在配置文件中指定),客户端得到storage server后进行相应的文件操作,同组服务器间会根据操作的结果进行文件同步(时序9,10是同步操作)。

  好了,原理先说到这。下面,我将给大家简单介绍FastDfs的安装及使用,以及一些注意事项。

  我的服务器是ubuntu server,我计划安装在两台服务器上,ip分别是:192.168.68.133, 192.168.68.136,暂时简称为1号服务器,2号服务器。

  一号服务器上,将安装一个tracker server实例,一个位于group1中的storage server实例,一个位于group2中storage server实例。

  二号服务器上,也将安装一个tracker server实例,一个位于group1中的storage server实例。需要大家注意的是,fastdfs中一台服务器上可以安装多个组,但一个组中的多个storade server必须安装在不同的服务器上,并且同组中的storage server的服务端口必须一致,否则无法实现文件同步。

  我先在一号服务器192.168.68.133上安装fastdfs。首先要准备安装环境,不同的linux发行版本可能会有所不同,我用的服务器版本是ubuntu 12.04 server,以下的操作均以这个版本的ubuntu服务器为例。<!--more-->

vim /etc/profile
export LANGUAGE="en_US.UTF-8"
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C

  接下来让语言环境配置参数立即生效:

source /etc/profile

  再接着,安装fastdfs编译依赖包,大家要注意的是少一个依赖都不行,我先前安装时缺少了libevent-dev,致使安装不成功但安装过程又不报错,花费了大量的时间。

aptitude install libevent
apt-get install libevent-dev

sudo apt-get update
sudo aptitude install build-essential m4

sudo ln -s /lib/lsb/init-functions  /etc/init.d/functions

  好了,环境准备好了后就到fastdfs官网上去下载安装包吧,地址https://code.google.com/p/fastdfs/downloads/list,我下载的是 FastDFS_v4.06.tar.gz ,如果你想要安装最新版本,请用svn去下载最新的5.x版本。

tar -zxvf FastDFS_v4.06.tar.gz
cd FastDFS 

  这样就进入了源代码目录,我们先要对安装的目录做一个规划(4.06版本默认的安装目录似乎不太合理),我将fastdfs的所有文件都安装到/usr/local/fastdfs中,配置文件存放在/usr/local/fastdfs/conf下,这就需要我们修改源代码目录下的make.sh,下面是一些要修改的地方:

vim make.sh

  需要对:

  1. TARGET_PREFIX,TARGET_CONF_PATH进行修改;

  2. 需要对libpthread.so、libpthread.a的路径进行修改,这和ubuntu有关,其它linux发行版本并不需要改这个(你可以用find / -name 'libpthread.so' ,以及ind / -name 'libpthread.a' 找到这两文件在系统中的位置);

  3. 另外要对mkdir,cp操作的几个路径进行修改为我们配置文件所在的路径。

  我贴出make.sh修改过的地方,请大家自行对照:

TARGET_PREFIX=/usr/local/fastdfs
TARGET_CONF_PATH=/usr/local/fastdfs/conf

if [ -f /usr/lib/i386-linux-gnu/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] || [ -f /lib64/libpthread.so ] || [ -f /usr/lib64/libpthread.so ] || [ -f /usr/lib/i386-linux-gnu/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] || [ -f /lib64/libpthread.a ] || [ -f /usr/lib64/libpthread.a ]; then
............
............

if [ "$uname" = "Linux" ]; then
    if [ "$WITH_LINUX_SERVICE" = "1" ]; then
      if [ ! -d /usr/local/fastdfs/conf ]; then
        mkdir -p /usr/local/fastdfs/conf
        cp -f conf/tracker.conf /usr/local/fastdfs/conf/
        cp -f conf/storage.conf /usr/local/fastdfs/conf/
        cp -f conf/client.conf /usr/local/fastdfs/conf/
        cp -f conf/http.conf /usr/local/fastdfs/conf/
        cp -f conf/mime.types /usr/local/fastdfs/conf/
      fi

	  
............

  下面开始安装吧,如下命令:

sudo make;
sudo make install;
sudo make clean;

  不同的linux发行版本可能存在依赖包没有安装而报错,具体情况需要根据出错信息具体解决,我试过redhead,freebsd,openSuse,centos几个系统,都是要进行一些环境的配置才可以安装成功。

  下一篇文章我将按照文章开头的服务器规划进行具体的配置,请大家关注。

本文原发表于刘江华的博客之(分布式文件系统fastdfs解析之一(安装)),转载请注明出处

© 著作权归作者所有

yanwawa
粉丝 3
博文 7
码字总数 8706
作品 0
成都
项目经理
私信 提问
加载中

评论(1)

OSCHINA首席渣男
OSCHINA首席渣男
""下面这张图有助于大家了解分布式文件系统的原理"" 图呢...😯
FastDFS安装使用实战一(安装篇)

最近在研究负载均衡和集群,其中涉及到一个主要问题是,如何让集群中的real server共享一套文件系统。在网上查到FastDFS,国人(happy fish,感谢他的开源精神)开发的一套轻量级分布式文件系...

凯文加内特
2015/03/30
561
0
Fastdfs分布式文件存储系统架构剖析及分布式集群环境的配置

===============分布式文件存储系统Fastdfs架构解析======================== FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能...

xiejunbo
2015/06/30
219
1
CentOS 6.3(64) ---> fastdfs_v4.07 / 实现多服务器

自己闲着没事,在小黑上虚拟了 4 个 centos 64 的系统,用来安装分布式 fastdfs 、 nginx 负载均衡,过程一路艰辛,搞了一个通宵都没弄好,终于在第二天的傍晚终于弄好了,记录一下过程。 有...

shking
2013/09/29
10.8K
27
FastDFS服务器集群部署和集成客户端到SpringBoot

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题,同时也能做到在集群环...

maoqitian
2018/11/01
0
0
使用FastDFS搭建图片服务器(单实例)

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地...

haoyuehong
2018/09/12
241
0

没有更多内容

加载失败,请刷新页面

加载更多

重新开始学Java——反射

概念 reflection:自省 反射:镜子可以反射阳光一个java类 或 对象 通过照"镜子"来认知自己 Java语言中是怎么实现照镜子? java.lang.reflect 包 提供了"照镜子"API(应用程序接口) 如果要...

大家都是低调来的
10分钟前
3
0
爬取720万条城市历史天气数据

内容爬虫完毕,校验完毕,缺失信息暂未统计。总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂一晚上。中间遇到了很多坑,有机会我再写...

八音弦
14分钟前
4
0
python的字典类型

1、新建字典 通过键值对 dict_1 = {'a':1,'b':2,'c':3} 通过dict()函数 list_1 = ['adam', 'bob', 'cathy', 'david', 'emma'] list_2 = [1,2,3,4,5] dict_2 = dict(zip(list_1,list_2)) 2、字......

davidwbnu
16分钟前
1
0
springcloud vue.js 前后分离 activiti工作流

本商品为 :springcloud + Springboot 微服务\分布式 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架 :springcloud Greenwich.SR1 + springboot 2.1.4 + activiti6.0.0 + ...

java框架开发者
22分钟前
7
0
【jQuery基础学习】07 jQuery表单插件-Form

本文转载于:专业的前端网站➦【jQuery基础学习】07 jQuery表单插件-Form 作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行...

前端老手
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部