`
sosyi
  • 浏览: 64595 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

fastdfs 介绍安装

阅读更多
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。

FastDFS系统结构如下图所示:


跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。


为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷 的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起 到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。



                               FastDFS file upload

上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。



                         FastDFS file download

下载文件交互过程:

1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。

需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

安装测试

环境:
storage1:192.168.1.220
storage2:192.168.1.222
tracker:192.168.1.219

1. 在每个机器上,下载安装 FastDFS
nginx $> wget http://fastdfs.googlecode.com/files/FastDFS_v2.04.tar.gz
# 解压
nginx $> tar zxvf FastDFS_v2.04.tar.gz
nginx $> cd FastDFS
修改make.sh
# 因为我是给nginx添加fastdfs模块,所以不需要fastdfs支持 http 所以我就不需要
去掉 #WITH_HTTPD=1 前的注释了,直接编译
nginx $> ./make.sh
nginx $> ./make.sh install

2.修改tracker 和 storage 的配置文件
# tracker 的修改
tracker $> vim /etc/fdfs/tracker.conf disabled=false
#配置是否生效
bind_addr=192.168.1.219
#绑定IP
port=22122
#服务端口
connect_timeout=30
#连接超时时间
network_timeout=60
# tracker server的网络超时,单位为秒。
base_path=/home/yangzi
#目录地址,里面会创建data(存放存储服务器信息)、logs,日志文件
max_connections=256
#系统提供服务最大连接数
work_threads=4
#线程数,通常设置CPU数
store_lookup=2
上传组(卷) 的方式 0:轮询方式 1: 指定组 2: 平衡负载(选择最大剩余空间的组(卷)上传)
这里如果在应用层指定了上传到一个固定组,那么这个参数被绕过
store_group=group1
当上一个参数设定为1 时 (store_lookup=1,即指定组名时),必须设置本参数为系统中存在的一个组名。如果选择其他的上传方式,这个参数就没有效了
store_server=0
选择哪个storage server 进行上传操作(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)
# 0: 轮询方式
# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)
# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)
store_path=0
选择storage server 中的哪个目录进行上传。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。
# 0: 轮流方式,多个目录依次存放文件
# 2: 选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)
download_server=0
选择哪个 storage server 作为下载服务器
# 0: 轮询方式,可以下载当前文件的任一storage server
# 1: 哪个为源storage server 就用哪一个 (前面说过了这个storage server源 是怎样产生的) 就是之前上传到哪个storage server服务器就是哪个了
reserved_storage_space = 4GB
storage server 上保留的空间,保证系统或其他应用需求空间(指出 如果同组的服务器的硬盘大小一样,以最小的为准,也就是只要同组中有一台服务器达到这个标准了,这个标准就生效,原因就是因为他们进行备份)
log_level=info
#选择日志级别
run_by_group=
#操作系统运行FastDFS的用户组
run_by_user=
#操作系统运行FastDFS的用户
allow_hosts=*
#可以连接到此 tracker server 的ip范围(对所有类型的连接都有影响,包括客户端,storage server)
sync_log_buff_interval = 10
# 同步或刷新日志信息到硬盘的时间间隔,单位为秒
# 注意:tracker server 的日志不是时时写硬盘的,而是先写内存。
check_active_interval = 120
# 检测 storage server 存活的时间隔,单位为秒。
# storage server定期向tracker server 发心跳,如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。通常配置为storage server心跳时间间隔的2倍或3倍。
thread_stack_size = 64KB
# 线程栈的大小。FastDFS server端采用了线程方式。更正一下,tracker server线程栈不应小于64KB,不是512KB。
# 线程栈越大,一个线程占用的系统资源就越多。如果要启动更多的线程(V1.x对应的参数为max_connections,
V2.0为work_threads),可以适当降低本参数值。
storage_ip_changed_auto_adjust = true
# 这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。
storage_sync_file_max_delay = 86400
# V2.0引入的参数。存储服务器之间同步文件的最大延迟时间,缺省为1天。根据实际情况进行调整
storage_sync_file_max_time = 300
# V2.0引入的参数。存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。
http.disabled=true
# HTTP服务是否不生效 当然编译的时候我已经把 with_httpd宏去掉了,
http.server_port=80
# HTTP服务端口
# 下列参数只有 开启http服务才有用
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html
http.need_find_content_type=true

#两台 storage.conf的修改
storage $> vim /etc/fdfs/storage.conf disabled=false
#配置是否生效
group_name=group1
#storage所在组(卷)
bind_addr=192.168.1.220
# 绑定IP,另一太 storage IP为 192.168.1.222
client_bind=true
#bind_addr通常是针对server的。当指定bind_addr时,本参数才有效。
port=23000
# 是storage 服务端口
connect_timeout=30
# 连接超时时间,针对socket套接字函数connect
network_timeout=60
# storage server 网络超时时间,单位为秒。
heart_beat_interval=30
# 心跳间隔时间,单位为秒
stat_report_interval=60
# storage server向tracker server报告磁盘剩余空间的时间间隔,单位为秒。
base_path=/home/eric
# base_path 目录地址,根目录必须存在 子目录会自动生成
# 会产生data(数据存储地方)、 logs日志文件
max_connections=256
# 最大连接数
buff_size = 256KB
# 设置队列结点的buffer大小。
work_threads=4
# 工作线程数
disk_rw_separated = true
# 磁盘IO读写是否分离,缺省是分离的。
disk_reader_threads = 1
# 针对单个存储路径的读线程数,缺省值为1
disk_writer_threads = 1
# 针对单个存储路径的写线程数,缺省值为1
sync_wait_msec=200
# 同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取,0表示不休眠,立即再次尝试读取。
sync_interval=0
# 同步上一个文件后,再同步下一个文件的时间间隔,单位为毫秒,0表示不休眠,直接同步下一个文件。
sync_start_time=00:00
sync_end_time=23:59
# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定,相信sa都会明白。
write_mark_file_freq=500
# 把storage的mark文件定期同步到磁盘的时间间隔,单位为秒
store_path_count=1
# 存放文件时storage server支持多个路径(例如磁盘)。这里配置存放文件的基路径数目,通常只配一个目录。
store_path0=/home/yuqing/fastdfs
# 逐一配置store_path个路径,索引号基于0。注意配置方法后面有0,1,2 ......,需要配置0到store_path - 1。
# 如果不配置base_path0,那边它就和base_path对应的路径一样。
subdir_count_per_path=32
# FastDFS存储文件时,采用了两级目录。这里配置存放文件的目录个数
tracker_server=192.168.1.219:22122
# tracker_server 的列表 要写端口的哦
log_level=info
# 日志级别
run_by_group=
# 运行storage 用户组
run_by_user=
# 运行storage 用户
allow_hosts=*
# 允许连接IP列表
file_distribute_path_mode=0
# 文件在data目录下分散存储策略。
# 0: 轮流存放
# 1: 随机存储
file_distribute_rotate_count=100
# 当上面的参数file_distribute_path_mode配置为0(轮流存放方式)时,本参数有效。
#当一个目录下的文件存放的文件数达到本参数值时,后续上传的文件存储到下一个目录中
fsync_after_written_bytes=0
# 当写入大文件时,每写入N个字节,调用一次系统函数fsync将内容强行同步到硬盘。0表示从不调用fsync
sync_log_buff_interval=10
# 同步或刷新日志信息到硬盘的时间间隔,单位为秒
sync_binlog_buff_interval=60
# 同步binglog(更新操作日志)到硬盘的时间间隔,单位为秒
sync_stat_file_interval=300
# 把storage的stat文件同步到磁盘的时间间隔,单位为秒。
thread_stack_size=512KB
# 线程栈的大小。FastDFS server端采用了线程方式。
# 线程栈越大,一个线程占用的系统资源就越多。
upload_priority=10
本storage server作为源服务器,上传文件的优先级,可以为负数。值越小,优先级越高。这里就和 tracker.conf 中store_server= 2时的配置相对应了
if_alias_prefix=
check_file_duplicate=0
# 是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个符号链接以节省磁盘空间。 结合 fastdfh使用的。 1是检测,0是不检测,我们不使用fastdfh 当然 0 
key_namespace=FastDFS
# 当上个参数设定为1 或 yes时 (true/on也是可以的) , 在FastDHT中的命名空间
keep_alive=0
# 与FastDHT servers 的连接方式 (是否为持久连接)

# 下面是http的配置了就不多说了
http.disabled=true
http.domain_name=
http.server_port=80
http.trunk_size=256KB
http.need_find_content_type=true

3.建立tracker 和 storage 的根目录
# tracker
tracker $> mkdir -p /home/eric
# storage
storage $> mkdir -p /home/yangzi

4.在 一台storage上下载,比如我在 192.168.1.220上下载 nginx 和 fastdfs-nginx-module 模块
storage $> wget http://www.nginx.org/download/nginx-0.8.53.tar.gz
storage $> svn export http://fastdfs-nginx-module.googlecode.com/svn/trunk/ fastdfs-nginx-module-read-only

5.编译安装 nginx 附带 fastdfs-nginx-module 模块
storage $> tar zxvf nginx-0.8.53.tar.gz
storage $> cd nginx-0.8.53
storage $> ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module-read-only/src
storage $> make
storage $> make install
# 拷贝mod_fastdfs.conf 到/etc/fdfs/
storage $> cp /root/fastdfs-nginx-module-read-only/src/mod_fastdfs.conf /etc/fdfs/

6.修改 nginx 配置文件增加
storage $> vim /usr/local/nginx/conf/nginx.conf

# 增加一下
location /M00 {
alias /home/yuqing/fastdfs/data;
ngx_fastdfs_module;
}

8. 启动两台 storage 和tracker nginx
# 启动 tracker
tracker $> /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
# 启动 storage
storage $> /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
# 启动 storage2
storage2 $> /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
#在 storage启动 nginx
storage $> /usr/local/nginx/sbin/nginx

9、上传文件测试。
# 修改客户端配置文件
storage $> vim /etc/fdfs/client.conf
connect_timeout=30
network_timeout=60
base_path=/home/yangzi
tracker_server=192.168.1.219:22122
log_level=info
分享到:
评论

相关推荐

    fastdfs插件安装所有软件.rar

    本文将详细介绍Fastdfs的安装过程,涉及的文件包括:fastdfs-5.11.tar.gz、libfastcommon-master.zip和fastdfs-nginx-module-master.zip。 首先,我们来看fastdfs-5.11.tar.gz,这是Fastdfs的核心组件,包含了...

    Nginx+FastDFS整合安装与配置详细图文教程.pdf

    根据提供的文档内容,这篇“Nginx+FastDFS整合安装与配置详细图文教程”主要包含两个关键部分:Nginx的安装和配置、FastDFS的安装和配置。接下来我将详细介绍这两个部分的知识点。 ### Nginx安装和配置 Nginx是一...

    FastDFS安装与Nginx整合

    本篇文章将详细介绍FastDFS的安装过程,以及如何将其与Nginx进行整合。 ### 一、FastDFS安装 1. **环境准备** - 首先确保服务器操作系统为Linux,例如Ubuntu、CentOS等。 - 安装必要的依赖包,如gcc、glib、pcre...

    fastDFS单机版安装教程+安装使用包

    在本教程中,我们将详细介绍如何在单机环境下安装和使用FastDFS。 ### 一、FastDFS概述 FastDFS是一个基于C语言开发的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)...

    FastDFS分布式文件系统 v6.12.0.zip

    本文将围绕FastDFS的核心特点、工作原理、安装部署以及常见应用场景进行详细介绍。 一、FastDFS核心特点 1. 高性能:FastDFS采用客户端/服务器(C/S)架构,支持TCP/IP通信协议,能够高效地处理大量并发读写请求。...

    fastdfs一键安装脚本

    【FastDFS介绍】 FastDFS是一个开源的高性能、轻量级的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等功能,解决了大容量存储和负载均衡的问题。特别适合以文件为...

    FastDFS安装说明,所需文件包

    在本文中,我们将详细介绍FastDFS的安装过程,以及在安装过程中可能遇到的问题和解决方案。 首先,确保你的服务器或开发环境已经安装了必要的依赖软件。在FastDFS的安装过程中,需要使用到`make`、`cmake`和`gcc`这...

    FastDFS介绍和安装.pdf

    【FastDFS介绍】 FastDFS是一款开源的分布式文件系统,专为互联网环境设计,考虑了冗余备份、负载均衡和线性扩展等关键特性,旨在构建一套高性能、高可用的文件服务集群。FastDFS易于部署,支持文件上传和下载,...

    FastDFS安装手册

    本手册详细介绍了在Linux环境下如何安装FastDFS的关键组件,包括libevent库的安装、FastDFS本身的安装及其配置过程。特别强调了TrackerServer和StorageServer的安装与配置步骤。 #### 二、libevent安装详解 1. **...

    fastdfs的安装手册说明+配置文件+fastdfs安装包+nginx安装包

    本安装手册将详细介绍如何在Linux环境中安装与配置FastDFS,以及与Nginx的集成。 一、FastDFS简介 FastDFS提供了文件存储、文件同步、文件访问(文件上传、文件下载)等功能,特别适合以文件为载体的在线服务。其...

    FastDFS介绍和安装.docx

    【FastDFS介绍】 FastDFS是一款开源的分布式文件系统,专为互联网环境设计,考虑了冗余备份、负载均衡和线性扩展等关键特性,旨在构建一套高性能、高可用的文件服务集群。FastDFS的设计目标是简化文件服务器的搭建...

    fastdfs配套安装包

    在本教程中,我们将详细介绍如何配合FastDFS配置文档,使用提供的配套安装包——包括FastDFS、Nginx和FastDFS-Nginx-Module,进行成功安装。 首先,我们来解析一下核心组件: 1. FastDFS:作为主文件存储系统,...

    fastdfs安装包以及步骤.zip

    在本安装教程中,我们将详细介绍如何在银河麒麟服务器上部署FastDFS。 一、银河麒麟服务器介绍 银河麒麟服务器操作系统是基于Linux内核的国产操作系统,具有高安全性、稳定性和易用性,广泛应用于政府、金融、电信...

    CentOS6.5下安装fastDFS

    本指南旨在详细介绍如何在 CentOS 6.5 操作系统上安装并配置 FastDFS,以便实现分布式文件系统的功能。 #### 二、准备工作 **1. 环境准备** - **操作系统**: CentOS 6.5 x86_64 - **软件包**: - libfastcommon-...

    fastDfs安装所需包

    本文将详细介绍如何利用提供的安装包进行FastDFS的安装和配置。 首先,我们来看一下安装FastDFS所需的包: 1. nginx-1.12.2.tar.gz:这是一个流行的Web服务器,通常被用作FastDFS的前端代理,处理HTTP请求并分发到...

    fastDfs的详解与安装

    在本文中,我们将详细介绍如何在虚拟机环境下安装并配置FastDFS单节点环境,包括必要的依赖安装、FastDFS的安装配置以及启动测试等步骤。 #### 二、安装FastDFS单节点 ##### 2.1 安装基础依赖 为了能够在Linux环境...

    fastdfs-6.06安装文件.zip

    本文将围绕FastDFS 6.0.6版本的安装过程进行详细介绍,并探讨其核心特性和应用场景。 一、FastDFS简介 FastDFS为文件存储提供了基础架构,它将文件存储和文件服务分离,通过 Tracker Server 进行负载均衡和文件元...

Global site tag (gtag.js) - Google Analytics