ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FastDFS分布式文件系统

2021-11-28 23:03:28  阅读:279  来源: 互联网

标签:文件 FastDFS storage etc tracker 分布式文件系统 fdfs


第1章FastDFS入门

1.1 分布式文件系统

分布式文件系统 (Distributed File System) 是一个软件/软件服务器,这个软件可以用来管理文件。但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。

常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等。

分布式文件系统与传统文件系统对比

传统方式弊端

  • 如果用户数量多,IO操作比较多,对磁盘访问压力很大

  • 如果磁盘发生故障,会造成数据丢失

  • 存储容量有限

1.2 FastDFS简介

FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源。

FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等等。

FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.3 FastDFS发展历史

​ 2008年4月项目启动,7月发布第一个版本V1.00,两年时间内持续升级到V1.29

​ 2010年8月推出V2.00

​ 2011年6月推出V3.00

​ 2012年10月推出V4.0.0

​ 2013年12月推出V5.0.0

​ 截止目前最新版是V5.11(2017年6月发布)

​ FastDFS系统架构从第一个版本发布后一直没有大的调整,高版本完全兼容低版本的数据,可以做到平滑升级,推荐更新升级到最新版本

​ FastDFS代码托管在github上:https://github.com/happyfish100/fastdfs

1.4 FastDFS整体架构

​ FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端

​ 客户端通常指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供专有API访问,目前提供了C、Java和PHP几种编程语言的API,用来访问FastDFS文件系统。

​ 服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)

​ 跟踪器(tracker)主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。

​ 存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。

第2章FastDFS环境搭建

2.1 FastDFS安装

2.1.1 安装前的准备

(1) 检查Linux上是否安装了 gcc、libevent、libevent-devel

  • yum list installed | grep gcc

  • yum list installed | grep libevent

  • yum list installed | grep libevent-devel

(2) 如果没有安装,则需进行安装

yum install gcc libevent libevent-devel -y

2.1.2 安装 libfastcommon 库

libfastcommon 库是 FastDFS 文件系统运行需要的公共 C 语言函数库

注意:目前最新版本的v1.0.39和最新版的FastDFS5.11不兼容,所有我们这里使用的版本是v1.0.36 下载地址:https://github.com/happyfish100

(1) 将下载好的libfastcommon文件上传到Linuxs(/opt)

1638105369590

(2) 解压下载下来的tar.gz压缩包到当前目录

tar -zxvf libfastcommon-1.0.36.tar.gz

(3) 切换到解压后的libfastcommon目录

cd libfastcommon-1.0.36

(4) 执行make脚本进行编译

./make.sh

注意: make编译的时候如果报错,需解决错误后再次进行make,通常发生错误是由于Linux缺少某些依赖库导致,根据错误提示解决错误

(5) 执行make install进行安装

./make.sh install

1638105489472

至此 libfastcommon 库安装完毕

2.1.3 安装FastDFS

FastDFS没有Windows版本,不能在Windows下使用。

FastDFS需要安装部署在Linux环境下,我们这里使用的是fastdfs-5.11版本(201901)

下载地址:https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

(1)将下载好的FastDFS文件上传到Linux(/opt)

1638105537233

(2)解压下载下来的tar.gz压缩包到当前目录

tar -zxvf fastdfs-5.11.tar.gz

(3)切换到解压后FastDFS的目录

cd fastdfs-5.11

(4)执行make脚本进行编译

./make.sh

(5)执行make install进行安装

./make.sh install

1638105634630

至此FastDFS安装完成

所有编译出来的文件存放在/usr/bin目录下

所有配置文件存放在/etc/fdfs目录下

(6)查看安装后的效果

A、查看FastDFS相关的可执行程序
ll /usr/bin/fdfs*
1638105850479

/usr/bin是Linux的环境变量,可通过echo $PATH查看

B、查看FastDFS的配置文件
ll /etc/fdfs/

1638105865481

(7)另外注意需要把解压后的fastdfs-5.11/conf目录下的两个文件拷贝到/etc/fdfs/ ,否则后续会有很多奇怪问题不好解决

cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/

1638105907742

这两个文件后续需要用到,所以先拷贝过去

2.2 FastDFS配置

2.2.1去掉/etc/fdfs/目录下FastDFS配置文件的后缀名

1638106568797

2.2.2修改tracker.conf文件

默认指向的FastDFS作者余庆的目录,因为在我们的机器上不存在,所有手动改一下

base_path=/opt/fastdfs/tracker #配置tracker存储数据的目录

1638108628224

2.2.3修改storage.conf文件

base_path=/opt/fastdfs/storage          #storage存储数据目录

store_path0=/opt/fastdfs/storage/files     #真正存放文件的目录

tracker_server=192.168.137.142:22122    #注册当前存储节点的跟踪器地址

2.2.4在Linux服务器上创建上面指定的目录

/opt/fastdfs/tracker

/opt/fastdfs/storage

/opt/fastdfs/storage/files
1638108886664

2.2.5然后启动FastDFS

2.3 FastDFS启动

FastDFS服务启动需要启动两个脚本:

2.3.1启动FastDFS的tracker服务

在任意目录下执行:

fdfs_trackerd /etc/fdfs/tracker.conf

1638109108869

2.3.2启动FastDFS的storage服务

在任意目录下执行:

fdfs_storaged /etc/fdfs/storage.conf

1638109130244

2.3.3查看启动进程

有启动的执行命令即为启动成功

1638109174234

2.3.4查看storage是否已经注册到了tracker下

fdfs_monitor /etc/fdfs/storage.conf

1638109212077

2.3.5首次启动storage后,会在配置的路径下创建存储文件的目录

1638109270952

2.4 FastDFS重启

2.4.1重启tracker

fdfs_trackerd /etc/fdfs/tracker.conf restart

2.4.2重启storage

fdfs_storaged /etc/fdfs/storage.conf restart

2.5 FastDFS关闭

2.5.1关闭tracker执行命令

在任意目录下执行:

fdfs_trackerd /etc/fdfs/tracker.conf stop

2.5.2关闭storage执行命令

在任意目录下执行:

fdfs_storaged /etc/fdfs/storage.conf stop

2.5.3或者kill关闭fastdfs,但不建议在线上使用 kill -9 强制关闭,因为可能会导致文件信息不同步问题

2.6 FastDFS测试

​ FastDFS安装完成之后,可以使用fdfs_test脚本测试文件上传

2.6.1测试之前,需要修改client.conf配置文件,修改两个配置

  • base_path=/opt/fastdfs/client

  • tracker_server=192.168.179.128:22122

    1638110056128
  • 在/opt/fastdfs/目录下创建client

    1638110092651

2.6.2测试文件上传

  • 准备需要上传的文件

    1638110327595

  • 执行上传命令

fdfs_test /etc/fdfs/client.conf upload /root/aa.txt 

1638110344376

This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2021-11-28 22:37:52] DEBUG - base_path=/opt/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group: 
	server 1. group_name=, ip_addr=192.168.137.142, port=23000

group_name=group1, ip_addr=192.168.137.142, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463.txt
source ip address: 192.168.137.142
file timestamp=2021-11-28 22:37:52
file size=15
file crc32=3529255
example file url: http://192.168.137.142/group1/M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463.txt
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463_big.txt
source ip address: 192.168.137.142
file timestamp=2021-11-28 22:37:52
file size=15
file crc32=3529255
example file url: http://192.168.137.142/group1/M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463_big.txt
  • 切换到存储目录查看文件上传情况

    1638110421157

2.6.3FastDFS生成的文件目录结构及名称示例

1638110436863

2.6.4测试文件删除

fdfs_delete_file /etc/fdfs/client.conf group1/要删除的文件路径

之前上传的文件主文件:M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463.txt 和从文件: M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463_big.txt -m那个文件是属性信息文件

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463.txt
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKiJjmGjlECAErA4AAAADwA12ic463_big.txt

1638110723178

2.6.5注意

  • 没有搭建集群默认只有一个组group1

  • 后缀名包含-m的为属性文件(meta)

  • 在Linux中并没有磁盘一说,是虚拟的

标签:文件,FastDFS,storage,etc,tracker,分布式文件系统,fdfs
来源: https://www.cnblogs.com/g0rez/p/15617086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有