FastDFS 分布式文件系统详解 (3)

  文件系统中存储的数据分为数据元数据两部分,数据是指文件中的实际数据,即文件的实际内容;而元数据是用来描述一个文件特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等。如果文件是一张图片,元数据就是图片的宽,高等等。

  

FastDFS 存储策略

  

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

  当组中增加了新的服务器时,系统会自动同步已有的文件,同步完成后,系统自动将新增的服务器切换至线上提供服务。

  当存储空间不足时,可以动态添加组,只需要增加一台或多台服务器,并将它们配置为一个新的组,即可扩大存储系统的容量。当你的某个应用或者模块(对应的 group)的并发过高的时候,可以直接在 group 中增加若干个 Storage 来实现负载均衡。

  为了避免单个目录下的文件数太多,当 Storage 第一次启动时,会在每个数据存储目录中创建 2 级子目录,每级 256 个,总共 65536 个目录,上传的文件会以 hash 的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录。

  

FastDFS 安装

  

下载资源

  

  直接通过 Github:https://github.com/happyfish100 下载 libfastcommon,fastdfs,fastdfs-nginx-module 三个项目对应的压缩包或者使用 git 命令下载,或者通过资源地址:https://sourceforge.net/projects/fastdfs/files/ 下载。

libfastcommon:从 fastdfs 项目和 fastdht 项目中提取出来的公共 C 函数库。

fastdfs:FastDFS 核心项目。

fastdfs-nginx-module:Nginx 整合 FastDFS 时 Nginx 需要添加的模块资源。

  

安装依赖

  

  FastDFS 是基于 C 语言开发的,安装它之前必须先安装它所依赖的环境。

yum install -y make cmake gcc gcc-c++

  

安装公共函数库

  

  上传资源 libfastcommon-master.zip 至服务器 /usr/local/src 目录后并解压。

# 安装 unzip 用于解压 yum install -y unzip # 解压 libfastcommon 至当前所在目录 unzip libfastcommon-master.zip

  

  编译并安装。

# 进入解压后的 libfastcommon-master 目录 cd libfastcommon-master # 编译并安装 ./make.sh && ./make.sh install

  libfastcommon 默认安装在 /usr/lib64 和 /usr/include/fastcommon 两个目录中,并且会在 /usr/lib 目录中创建软链接。

FastDFS 分布式文件系统详解

  

安装 FastDFS

  

  上传资源 fastdfs-master.zip 至服务器 /usr/local/src 目录后并解压。

# 解压 fastdfs 至当前所在目录 unzip fastdfs-master.zip

  

  编译并安装。

# 进入解压后的 libfastcommon-master 目录 cd fastdfs-master # 编译并安装 ./make.sh && ./make.sh install

  fastdfs 默认安装在以下位置:

/usr/bin:可执行文件

/etc/fdfs:配置文件

/etc/init.d:主程序代码

/usr/include/fastdfs:插件组

FastDFS 分布式文件系统详解

  

启动 Tracker

  

  tracker 和 storage 其实都是 fastdfs,只不过启动时通过不同的配置文件启动,所扮演的角色不同而已。也就是说,安装 tracker 和 storage 就是在安装 fastdfs,然后通过每个角色具体的配置文件启动即可。

  查看 /etc/fdfs 目录下所有配置文件。

[root@localhost ~]# ls /etc/fdfs/ client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf.sample

client.conf.sample:客户端的配置文件,测试用

storage.conf.sample:存储器的配置文件

tracker.conf.sample:跟踪器的配置文件

  

  编辑 tracker.conf 配置文件。

# 拷贝文件 tracker.conf.sample 并重命名为 tracker.conf cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf # 编辑 tracker.conf 配置文件 vi /etc/fdfs/tracker.conf

  配置文件中的配置项还是蛮多的,这里暂且关注以下几个即可,后期根据实际情况再对其他配置项作出调整。

# 允许访问 tracker 服务器的 IP 地址,为空则表示不受限制 bind_addr = # tracker 服务监听端口 port = 22122 # tracker 服务器的运行数据和日志的存储父路径(需要提前创建好) base_path = /fastdfs/tracker # tracker 服务器 HTTP 协议下暴露的端口 http.server_port = 8080

  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsszgx.html