zl程序教程

您现在的位置是:首页 >  其他

当前栏目

FastDFS介绍和安装配置

安装配置 介绍 FastDFS
2023-06-13 09:15:12 时间

分布式存储介绍

传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需求。 分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

FastDFS介绍

FastDFS是一款开源的轻量级分布式文件系统, 由淘宝开发平台部资深架构师余庆开发。它对文件进行管理,功能包括文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量存储和负载均衡的问题。 FastDFS是一款类GoogleFS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等类UNIX系统。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,GoogleFS以及FastDFS、mogileFS、HDFS、TFS等类GoogleFS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

github地址:https://github.com/happyfish100/fastdfs

FastDFS系统架构

FastDFS由三部分组成:

  • Tracker Server: 跟踪器。跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。
  • Storage Server: 存储节点。保存文件和文件属性,直接利用OS的文件系统调用管理文件。
  • Client: 客户端。作为业务请求的发起方,通过专有接口,使用TCP/IP协议与Tracker server或Storage server进行数据交互。

FastDFS架构图:

上传文件

首先Client请求Tracker Server获取到Storage Server的ip地址和端口,然后Client根据返回的IP和端口请求上传文件,Storage Server接收到请求后生产文件,并且将文件内容写入磁盘并把 file_id、路径、文件名等信息返回给Client,Client保存相关信息后上传完毕。

下载文件

Client带上文件名信息请求Tracker Server获取到Storage Server的ip和端口,然后Client根据返回的IP和端口请求下载文件,Storage Server接收到请求后返回文件给Client。

安装

旧版FastDFS(FastDFS 2.0之前版本)没有直接使用epoll实现,而是通过libevent 实现(libevent 是一个用C语言编写的、轻量级的开源高性能网络库),而新的FastDFS网络IO这部分是重新用epoll实现。所以如果是FastDFS是2.0之前的版本,需要先安装好libevent环境(新版本不需要安装)。

安装libfastcommon

libfastcommon为FastDFS操作的基础库,FastDFS没有使用标准的库,而是封装了一套和FastDFS相关的库。安装FastDFS之前需要安装libfastcommon。

libfastcommon github地址:https://github.com/happyfish100/libfastcommon

# 解压
tar -zxvf libfastcommon-1.0.7.tar.gz  
# 进入源码目录
cd libfastcommon-1.0.7
# 编译
./make.sh
# 安装
sudo ./make.sh install

安装成功后,libfastcommon.so会被复制到/usr/lib64/路径下。

安装FastDFS

FastDFS github地址:https://github.com/happyfish100/fastdfs

FastDFS安装过程和libfastcommon是一样的

# 解压
tar -zxvf fastdfs-5.12.tar.gz 
# 进入源码目录
cd fastdfs-5.12
# 编译
./make.sh
# 安装
sudo ./make.sh install

可执行程序会被安装到/usr/bin/路径下

安装成功后,会自动在/etc/fdfs/下生成几个配置文件

fdfs_test命令可用来测试是否安装成功

配置

进入到/etc/fdfs/路径下进行配置,首先复制一份三个配置文件

cd /etc/fdfs/
sudo cp client.conf.sample client.conf
sudo cp storage.conf.sample storage.conf
sudo cp tracker.conf.sample tracker.conf

然后在家目录下创建fastdfs目录(可以自行指定,不必放在家目录下)后,在fastdfs下创建tracker storage client三个子目录

mkdir fastdfs
cd fastdfs
mkdir tracker storage client

Tracker配置

修改配置文件tracker.conf,这里主要列出几个重要的配置项

# 跟踪器绑定的ip,为空表示绑定本机所有ip
bind_addr=
# 绑定的端口号
port=22122
# log目录,使用之前创建的tracker文件夹 
base_path=/home/ifantsai/fastdfs/tracker/

Storage配置

修改配置文件storage.conf,这里主要列出几个重要的配置项

# 存储节点所属组
group_name=group1
# 存储节点绑定的ip,为空表示绑定本机所有ip
bind_addr=
# 绑定的端口号
port=23000
# log目录,使用之前创建的storage文件夹
base_path=/home/ifantsai/fastdfs/storage/
# 存储目录个数
store_path_count=1
# 存储目录,使用之前创建的storage文件夹
store_path0=/home/ifantsai/fastdfs/storage/
# 跟踪器的IP和端口 (注:不要使用:127.0.0.1)
tracker_server=192.168.43.146:22122

Client配置

修改配置文件client.conf,这里主要列出几个重要的配置项

# log目录,使用之前创建的client文件夹
base_path=/home/ifantsai/fastdfs/client/
# 跟踪器的IP和端口 (注:不要使用:127.0.0.1)
tracker_server=192.168.43.146:22122

启动测试

先启动跟踪器

fdfs_trackerd /etc/fdfs/tracker.conf

启动存储节点

fdfs_storaged /etc/fdfs/storage.conf

测试

fdfs_monitor /etc/fdfs/client.conf

执行后输出一对信息,如下图处显示ACTIVE表示存储节点已激活

上传文件

# 格式:fdfs_upload_file /etc/fdfs/client.conf 文件名
fdfs_upload_file /etc/fdfs/client.conf wallhaven-250247.jpg

返回的就是上传的文件的存储路径和经过哈希计算的文件名,group1表示是所属组,M00表示在storage.conf中配置的store_path0的值,所以该文件的完整路径为/home/ifantsai/fastdfs/storage/data/00/00/wKgrkly3NY-ANAP6AACEQjQtgEQ567.jpg

下载文件

# 格式:fdfs_download_file /etc/fdfs/client.conf 上创文件时返回的路径
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgrkly3NY-ANAP6AACEQjQtgEQ567.jpg

本文作者: Ifan Tsai  (菜菜) 本文链接: https://www.caiyifan.cn/p/fe7981af.html 版权声明: 本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!