FastDFS安装及原理

1.环境准备

  • centos 7.x
  • libfastcommon FastDFS分离出的公用函数库
  • FastDFS本体
  • fastdfs-nginx-module FastDFS和nginx的关联模块
  • nginx1.15.6

2.FastDFS安装

安装编译环境

yum install git gcc gcc-c++ make automake vim wget libevent -y

磁盘目录

mkdir /root/fastdfs
cd /root/fastdfs

将下载好的libfastcommon-1.0.39.zip拷贝至此目录,
下载地址

安装libfastcommon

#解压
unzip libfastcommon-1.0.39.zip
cd libfastcommon-1.0.39
#安装
./make.sh && ./make.sh install

安装FastDFS

cd /root/fastdfs
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11/
./make.sh && ./make.sh install
#配置文件准备
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
cp /root/fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs
cp /root/fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs
#修改tracker配置
vim /etc/fdfs/tracker.conf
#需要修改的内容如下
port=22122
base_path=/home/fastdfs
#修改storage配置
vim /etc/fdfs/storage.conf
#需要修改的内容如下
port=23000
base_path=/home/fastdfs # 数据和日志文件存储根目录
store_path0=/home/fastdfs # 第一个存储目录
tracker_server=192.168.211.136:22122
# http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
http.server_port=8888

启动

mkdir /home/fastdfs -p
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
查看所有运行的端口
ss -tuln

上传测试

vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/home/fastdfs
#tracker服务器IP和端口
tracker_server=192.168.211.136:22122
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xxx.png
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/fastdfs/1.png
group1/M00/00/00/wKjTiF7h5EWASb5aAACGZa9JdFo611.png

安装fastdfs-nginx-module

在这里插入图片描述

fastdfs-nginx-module的作用就是把磁盘路径转换为可通过nginx使用url访问。

cd /root/fastdfs
解压
tar -xvf V1.20.tar.gz
cd fastdfs-nginx-module-1.20/src
vim config
修改第5 行 和 15 行 修改成
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cp mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=192.168.211.136:22122
url_have_group_name=true
store_path0=/home/fastdfs
mkdir -p /var/temp/nginx/client

安装nginx

cd /root/fastdfs
wget http://nginx.org/download/nginx-1.15.6.tar.gz
tar -zxvf nginx-1.15.6.tar.gz
cd nginx-1.15.6/
yum -y install pcre-devel openssl openssl-devel
# 添加fastdfs-nginx-module模块
./configure --add-module=/root/fastdfs/fastdfs-nginx-module-1.20/src
编译安装
make && make install
查看模块是否安装上
/usr/local/nginx/sbin/nginx -V
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
}
/usr/local/nginx/sbin/nginx

下载测试

关闭防火墙
systemctl stop firewalld
http://192.168.211.136:8888/group1/M00/00/00/xxx.png
http://192.168.211.136:8888/group1/M00/00/00/wKjTiF7h5EWASb5aAACGZa9JdFo611.png

3.FastDFS 系统架构和功能原理

在这里插入图片描述

storage server:

存储服务器(又称存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。

Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内的其它机器,使得恢复时间会很长。

group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在 /data/disk1-/data/disk10 ,则可将这10个目录都配置为storage的数据存储目录。storage接受到写文件请求时,会根据配置好的规则,选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,默认每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

group :

组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。

meta data :

文件相关属性,键值对( Key Value Pair) 方式,如:width: 1118

tracker server:

跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。因为不记录文件索引信息,所以占用的内存量很少。

Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。

Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。

client:

客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastDFS是一个开源的分布式文件系统,它由跟踪服务器(Tracker Server)和存储服务器(Storage Server)组成。它的底层实现原理主要包括文件上传、文件下载和文件删除三个过程。 1. 文件上传: - 客户端将文件分割成固定大小的块,并将这些块分别上传到不同的存储服务器上。 - 跟踪服务器记录文件的元数据信息,包括文件名、文件大小、存储服务器地址等。 - 存储服务器将文件块保存在本地,并返回文件块的索引信息给跟踪服务器。 2. 文件下载: - 客户端向跟踪服务器发送文件下载请求,跟踪服务器根据文件名查找对应的存储服务器地址。 - 客户端根据存储服务器地址连接到对应的存储服务器,并发送文件块的索引信息。 - 存储服务器根据索引信息读取文件块,并将文件块返回给客户端,客户端将多个文件块合并成完整的文件。 3. 文件删除: - 客户端向跟踪服务器发送文件删除请求,跟踪服务器根据文件名查找对应的存储服务器地址。 - 跟踪服务器通知存储服务器删除对应的文件块。 - 存储服务器删除文件块,并将删除成功的结果返回给跟踪服务器。 FastDFS通过将文件分割成块并分布式存储在多个存储服务器上,实现了高可用性和可扩展性。同时,通过跟踪服务器记录文件的元数据信息,实现了快速查找和定位文件的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值