系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

开始搭建 FastDFS 环境。我们搭建单机版。

操作系统:CentOS7 X64,不懂的可以查看我的博客:https://blog.csdn.net/BiandanLoveyou/article/details/81113406

固定自己 CentOS 的 IP 地址,查看博客:https://blog.csdn.net/BiandanLoveyou/article/details/116384534

步骤1:下载安装 libfastcommon

1、确保 CentOS 安装 GCC

[root@localhost ~]# yum -y install gcc-c++

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

2、安装 libevent。FastDFS 依赖 libevent库,需要安装。

[root@localhost ~]# yum -y install libevent

3、安装 libfastcommon。libfastcommon 是FastDFS官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。

查看 FastDFS 版本:https://github.com/happyfish100/libfastcommon/releases

我们选择 1.0.39 的版本(不要选择太高版本,出问题很难排查!),并安装到目录:/usr/local/src/ 下。

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget -O libfastcommon-1.0.39.tar.gz  https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39 

如果报错:-bash: wget: 未找到命令  则先执行 yum -y install wget 安装 wget 命令。

4、解压

[root@localhost src]# tar -zxvf libfastcommon-1.0.39.tar.gz 

5、进入 libfastcommon-1.0.39 目录:

[root@localhost src]# cd libfastcommon-1.0.39

6、安装

[root@localhost libfastcommon-1.0.39]# ./make.sh

执行完之后,继续执行下面语句:

[root@localhost libfastcommon-1.0.39]# ./make.sh install

 

步骤2:安装 FastDFS

查看 FastDFS 版本:https://github.com/happyfish100/fastdfs/releases

我们选择 V5.11 版本(不要选择太高版本,出问题很难排查!)。

切换到下载目录:

[root@localhost libfastcommon-1.0.39]# cd /usr/local/src/

下载

[root@localhost src]# wget -O fastdfs-5.11.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11

解压:

[root@localhost src]# tar -zxvf fastdfs-5.11.tar.gz 

进入到 FastDFS 目录:

[root@localhost src]# cd fastdfs-5.11

安装:

[root@localhost fastdfs-5.11]# ./make.sh

发现报错,错误信息如下:

[root@localhost fastdfs-5.11]# ./make.sh
./make.sh:行120: perl: 未找到命令
./make.sh:行121: perl: 未找到命令
./make.sh:行122: perl: 未找到命令
./make.sh:行123: perl: 未找到命令
./make.sh:行124: perl: 未找到命令
cc  -c -o tracker_service.o tracker_service.c  -I../common -I/usr/local/include
tracker_service.c: 在函数‘tracker_service_init’中:
tracker_service.c:139:18: 错误:‘O_NOATIME’未声明(在此函数内第一次使用)
     O_NONBLOCK | O_NOATIME)) != 0)
                  ^
tracker_service.c:139:18: 附注:每个未声明的标识符在其出现的函数内只报告一次
make: *** [tracker_service.o] 错误 1
./make.sh:行129: perl: 未找到命令
./make.sh:行130: perl: 未找到命令
./make.sh:行131: perl: 未找到命令
./make.sh:行132: perl: 未找到命令
./make.sh:行133: perl: 未找到命令
cc  -c -o storage_service.o storage_service.c  -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
storage_service.c: 在函数‘storage_service_init’中:
storage_service.c:1665:18: 错误:‘O_NOATIME’未声明(在此函数内第一次使用)
     O_NONBLOCK | O_NOATIME)) != 0)
                  ^
storage_service.c:1665:18: 附注:每个未声明的标识符在其出现的函数内只报告一次
make: *** [storage_service.o] 错误 1

原因:未找到对应的命令,在通过查找安装相应的命令即可。 

解决:执行下面的语句:

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget

然后继续执行 ./make.sh

执行完之后,继续执行下面的语句:

[root@localhost fastdfs-5.11]# ./make.sh  install

默认安装方式安装后的相应文件与目录:

服务脚本:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

查看:[root@localhost fastdfs-5.11]# ls init.d/

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

 

配置文件(这三个是开发者给的样例配置文件)

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

命令工具在 /usr/bin/ 目录下

[root@localhost ~]# ls /usr/bin/

 

步骤3:配置 FastDFS 跟踪器(Tracker)

1、进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf

[root@localhost fastdfs-5.11]# cd /etc/fdfs/
[root@localhost fdfs]# cp tracker.conf.sample tracker.conf

 

2、编辑 tracker.conf ,修改 base_path,Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)。其它的默认即可。

[root@localhost fdfs]# vi tracker.conf

修改红色部分。其它配置可不改。建议修改端口号,默认是 8080,防止冲突,改为:9080 

# 配置文件是否不生效,false 为生效
disabled=false

# 提供服务的端口
port=22122

# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/fastdfs/tracker

# HTTP 服务端口 默认8080 ,建议修改 防止冲突
http.server_port=9080

 

3、创建tracker基础数据目录,即 base_path 对应的目录

[root@localhost fdfs]# mkdir -p /fastdfs/tracker

4、防火墙中打开跟踪端口(默认的22122)(开发阶段,建议关闭防火墙。上正式环境要开启防火墙!)

# vi /etc/sysconfig/iptables

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

重启防火墙:
# service iptables restart

不懂防火墙命令?查看博客:https://blog.csdn.net/BiandanLoveyou/article/details/116399225

5、启动 Tracker。下面3条命令任意一条都可以启动,我们选择第三条吧:systemctl start fdfs_trackerd

[root@localhost fdfs]# /etc/init.d/fdfs_trackerd start
[root@localhost fdfs]# service fdfs_trackerd start
[root@localhost fdfs]# systemctl start fdfs_trackerd

初次成功启动,会在 /fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录。

可以使用命令查看:

[root@localhost fdfs]# ls /fastdfs/tracker/

结果: 

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

6、查看 FastDFS Tracker 是否已成功启动

[root@localhost fdfs]# systemctl status fdfs_trackerd

结果:

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

7、设置 Tracker 开机启动

[root@localhost fdfs]# chkconfig fdfs_trackerd on

 

8、关闭 Tracker 命令

[root@localhost fdfs]# systemctl stop fdfs_trackerd

 

Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:

${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
| |__trackerd.log: tracker server 日志文件

 

步骤4:配置 FastDFS 存储 (Storage)

1、进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf

[root@localhost fdfs]# cd /etc/fdfs/
[root@localhost fdfs]# cp storage.conf.sample storage.conf

 

2、编辑 storage.conf,红色的部分需要修改,其它可以不改。

[root@localhost fdfs]# vi storage.conf

# 配置文件是否不生效,false 为生效
disabled=false 

# 指定此 storage server 所在 组(卷)
group_name=group1

# storage server 服务端口
port=23000

# 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30

# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)  (注 :这里不是上传的文件存放的地址,之前版本是的,在某个版本后更改了)
base_path=/fastdfs/storage/base

# 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。
store_path_count=1


# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/fastdfs/storage

# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256

# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行。IP地址请根据实际情况修改
tracker_server=192.168.0.105:22122

# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59
# 访问端口 默认8888 ,我们改成 9888
http.server_port=9888

 

3、创建Storage基础数据目录,对应base_path目录

[root@localhost fdfs]# mkdir -p /fastdfs/storage/base

下面是配置的store_path0路径,有多个要创建多个

[root@localhost fdfs]# mkdir -p /fastdfs/storage

4、防火墙中打开存储器端口(默认的 23000) (开发环境建议关闭防火墙,上线了要开启)

[root@localhost fdfs]# vim /etc/sysconfig/iptables

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

重启防火墙:
[root@localhost fdfs]#  service iptables restart

 

5、启动 Storage。启动 Storage 前确保 Tracker 是启动的。初次启动成功,会在 /fastdfs/storage/base (base_path) 目录下创建 data、 logs 两个目录。

下面2条启动命令都可以启动,建议用第 2 条。systemctl start fdfs_storaged

[root@localhost fdfs]# /etc/init.d/fdfs_storaged start
[root@localhost fdfs]# systemctl start fdfs_storaged

查看 Storage 是否成功启动:

[root@localhost fdfs]# netstat -unltp|grep fdfs

23000 端口正在被监听,说明 Storage 启动成功,效果图:

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

6、关闭Storage。2条命令都可以关闭。

[root@localhost fdfs]# systemctl stop fdfs_storaged
[root@localhost fdfs]# /etc/init.d/fdfs_storaged stop

7、设置 Storage 开机启动

[root@localhost fdfs]# chkconfig fdfs_storaged on

8、查看Storage和Tracker是否在通信

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

结果图: 

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

 

9、storage 在 store_path0=/fastdfs/storage 的 data 目录下创建了 N*N 个子目录。

[root@localhost fdfs]# ls /fastdfs/storage/data/

效果图: 

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

 

步骤5:上传测试

1、修改 Tracker 服务器中的客户端配置文件 

[root@localhost fdfs]# cd /etc/fdfs/
[root@localhost fdfs]# cp client.conf.sample client.conf

2、修改 client.conf 配置

[root@localhost fdfs]# vi client.conf

# Client 的数据和日志目录
base_path=/fastdfs/client
 
# Tracker端口,IP地址请根据实际情况修改
tracker_server=192.168.0.105:22122

然后创建配置的 base_path=/fastdfs/client 这个目录(这一步不能少,否则报错 ERROR - file: ../client/client_func.c, line: 257, "/fastdfs/client" can't be accessed, error info: No such file or directory):

[root@localhost fdfs]# mkdir -p /fastdfs/client

3、上传测试

我们先创建一个测试文本:

[root@localhost ~]# cd /etc/fdfs/
[root@localhost fdfs]# vi 2021-6-8.txt

输入自己想要的内容:

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

然后执行下面的语句:

[root@localhost fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/2021-6-8.txt

效果图:

系列学习分布式文件系统 FastDFS 之第 2 篇 —— Linux 环境下搭建 FastDFS 的 Tracker 和 Storage

返回的文件ID由 group(group1)、存储目录(M00)、两级子目录(00/00)、fileid(wKgAaWC-V_iAOJ6FAAAAUGRQkJI740)、文件后缀名(txt)(由客户端指定,主要用于区分文件类型)拼接而成。

 

 

OK,Linux 环境下就搭建好了 FastDFS。

 

 

 

 

上一篇:FastDFS分布式文件系统安装教程(图文)


下一篇:(十一)整合 FastDFS 中间件,实现文件分布式管理