文件系统中存储的数据分为数据和元数据两部分,数据是指文件中的实际数据,即文件的实际内容;而元数据是用来描述一个文件特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等。如果文件是一张图片,元数据就是图片的宽,高等等。
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 installlibfastcommon 默认安装在 /usr/lib64 和 /usr/include/fastcommon 两个目录中,并且会在 /usr/lib 目录中创建软链接。
安装 FastDFS
上传资源 fastdfs-master.zip 至服务器 /usr/local/src 目录后并解压。
# 解压 fastdfs 至当前所在目录 unzip fastdfs-master.zip
编译并安装。
# 进入解压后的 libfastcommon-master 目录 cd fastdfs-master # 编译并安装 ./make.sh && ./make.sh installfastdfs 默认安装在以下位置:
/usr/bin:可执行文件
/etc/fdfs:配置文件
/etc/init.d:主程序代码
/usr/include/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.sampleclient.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