0. FastDFS简介
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
0.1 什么是分布式文件系统
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
通俗来讲:
- 传统文件系统管理的文件就存储在本机。
- 分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。无论是上传或者访问文件,都需要通过管理中心来访问
0.2 什么是FastDFS
FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:
- 文件存储
- 文件同步
- 文件访问(上传、下载)
- 存取负载均衡
- 在线扩容
适合有大容量存储需求的应用或系统。同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。
0.3 FastDFS 的架构
FastDFS两个主要的角色:Tracker Server 和 Storage Server 。
- Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。
- Storage Server:存储服务器,保存文件和文件的meta data(元数据),每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息
- Group:文件组,多台Storage Server的集群。上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。不同组的服务器,保存的数据不同,而且相互独立,不进行通信。
- Tracker Cluster:跟踪服务器的集群,有一组Tracker Server(跟踪服务器)组成。
- Storage Cluster :存储集群,有多个Group组成。
0.4 上传下载流程
上传
- Client通过Tracker server查找可用的Storage server。
- Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
- Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
- 上传完成,Storage server返回Client一个文件ID,文件上传结束。
下载
- Client通过Tracker server查找要下载文件所在的的Storage server。
- Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
- Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
- 下载文件成功。
1. CentOS6.X下使用 FastDFS
1.1 安装 gcc
FastDFS 是 C 语言开发的,安装 FastDFS 需要先安装 gcc
yum -y install gcc-c++
# 查询是否安装成功
rpm -qa | grep gcc
# 后面会用到解压命令(unzip),所以这里可以用yum把unzip 也装一下
yum install -y unzip zip
1.2 安装 libevent
yum -y install libevent
1.3 上传安装文件
在 /usr/local 下新建目录 fastdfs
将以上几个文件上传到该目录中
1.4 安装 libfastcommon
libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需的一些基础库
进入刚才上传的文件的所在位置
cd /usr/local/fastdfs
将其解压
unzip libfastcommon-master.zip
进入解压目录
cd libfastcommon-master/
编译并安装
./make.sh
./make.sh install
# 注意: libfastcommon 安装好后会自动将库文件拷贝至 /usr/bin64 下,由于 FastDFS 程序引用的时 /usr/lib 目录,使用需要将 /usr/lib64 下的库文件 libfastcommon.so 拷贝到 /usr/lib 下:
cp /usr/lib64/libfastcommon.so /usr/lib
查找当前目录是否包含指定文件
1.5 安装 FastDFS_v5.08(tracker+storage)
注意:此处我们把 tracker(跟踪踪器) 和 storage(存储服务器) 配置在同一台服务器上,真实环境中考虑到高可用,此时应该把它们部署在多台服务器上
进入压缩包所在目录
cd /usr/local/fasfdfs
解压
tar -zxf FastDFS_v5.08.tar.gz
进入解压目录
cd FastDFS/
编译安装
./make.sh
./make.sh install
# 此时我们的 /etc/fdfs 目录下会出现三个文件
tarcker.conf.sample
是tracker的配置文件模板storage.conf.sample
是storage的配置文件模板client.conf.sample
是客户端的配置文件模板
# 安装成功后将安装目录下的 conf 文件中的所有内容拷贝到 /etc/fdfs/ 目录下。(nginx)
当前所在目录:/usr/local/fastdfs/FastDFS
进入conf目录
cd /usr/local/fastdfs/FastDFS/conf/
拷贝
cp * /etc/fdfs/
此时我们来看一下 /etc/fdfs 下的文件有哪些
其实 storage.conf.sample 等文件 和 storeage.conf 是一样的,只是后缀不同而已
进入目录查看文件,tracker文件是自动生成的,如果没有自行创建即可
cd /usr/local/fastdfs/FastDFS/tracker
等下我们会把 tracker 服务的数据和日志都放到该目录中
1.6 配置并启动tracker服务
1)配置 tracker 服务。修改 /etc/fdfs/tracker.conf 文件
进入 tracker.conf 文件
vim /etc/fdfs/tracker.conf
2)修改的内容如下:
# 跟踪服务存储数据和日志的地址
base_path=/usr/local/fastdfs/FastDFS/tracker
# 然后保存退出即可
3)启动 tracker 服务
启动tracker服务器: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重启: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_trackerd 指令是安装 FastDFS 时自动写入到 /usr/bin目录下的(上面有截图)
不过安装过程中,fdfs已经被设置为系统服务,我们可以采用熟悉的服务启动方式:
service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop
检查FastDFS Tracker Server是否启动成功:
ps -ef | grep fdfs_trackerd
设置tracker服务开机启动:
chkconfig fdfs_trackerd on
1.7 配置并启动 storage 服务
如果时在不同的服务器安装,则 【1.5】和【1.6】两步需要重新执行
1)进入要存放 storage 服务的数据和日志的目录,将路径复制出来
cd /usr/local/fastdfs/FastDFS/storage
2)修改 storage.conf 文件
vim /etc/fdfs/storage.conf
3)修改的内容如下
# 这个路径是我们第一步复制的那个路径,用于存放 storage 的数据和日志
base_path=/usr/local/fastdfs/FastDFS/storage
store_path0=/usr/local/fastdfs/FastDFS/storage
# 指定跟踪服务的地址(这里的ip设置为跟踪服务器的id,端口使用默认的即可)
tracker_server=192.168.193.128:22122
4)启动 storage 服务,此处可能会时间长一些
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
# 查看是否启动成功
# 推荐使用
service fdfs_storaged start # 启动fdfs_storaged服务,停止用stop
# 设置 storage 服务开机自启
chkconfig fdfs_storaged on
# 此时我们进入 /usr/local/fastdfs/FastDFS/tracker/ 目录下,该目录下有很多个文件,在 data 文件中有 256x256 个文件,这是我们刚才启动 storage 服务时自动创建的,以后上传的文件就会保存到 data 目录中
1.8 配置客户端并测试
1)将 /usr/local/FastDFS/client 里面的 libfdfsclient.so 拷贝到 /usr/lib 目录中,这一步非常重要!!
cp /usr/local/fastdfs/FastDFS/client/libfdfsclient.so /usr/lib
如果已存在,则覆盖
2)修改配置文件 /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
# 修改的内容如下:
# 保存日志信息的地址
base_path=/usr/local/fastdfs/FastDFS/client/
# 指定追踪器的url,ip为当前追踪器在的Linux的ip
tracker_server=192.168.193.128:22122
保存并退出即可
3)测试
- 我们在 /root 目录下创建一个文件, 【hi.html】
# 进入 root 目录 cd ~ # 创建并修改文件 vim hi.html # 文件内容 hi, FastDFS !!!
- 上传文件
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/hi.html
解读:
- 上传结果
根据上传成功的url查询打开文件位置
cd /usr/local/fastdfs/FastDFS/storage/data/00/00
此时我们在主机上访问这个地址,是无法访问这个资源的
FastDFS本身是无法处理HTTP协议的,此时我们就需要Nginx了
大家安装过程中如果遇到其它问题可以百度,也可以私我一起解决;还有以上所需的安装包大家可以自行百度下载,也可以私我然后发给你们
我下期将教大家如何使用nginx来和FastDFS搭配使用,使之可以通过地址访问