fastDFS分布式文件系统的搭建
Posted 德古拉的杂货铺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastDFS分布式文件系统的搭建相关的知识,希望对你有一定的参考价值。
fastDFS是一个开源的轻量级分布式文件系统框架,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
分布式文件系统
一般地,我们的电脑上装的Windows或者linux操作系统,都会自带一个文件系统(比如fat32,ntfs,ext3,ext4等格式),用来管理和存储电脑上的文件。当然,如果你电脑上装了双系统,那每个操作系统都各自有一个文件系统。
如果一台电脑的磁盘空间不够了,可以继续加硬盘,但这种本地扩容的手段很难满足大规模数据的存储。而分布式文件系统突破了这个限制,通过将存储节点放在不同的主机上,不同的主机组成网络,用户不用关心数据到底存放在哪台主机上,只要像使用本地文件系统一样使用它就好了。
fastDFS概述
fastDFS是淘宝架构师余庆用C语言编写的一款开源的分布式文件系统,它为互联网应用量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。借助fastDFS可以很容易地搭建一套高性能的文件服务器集群,提供文件上传、下载等服务。
fastDFS属于应用层级的文件系统,不能进行挂载、卸载的mount操作(U盘的插拔就属于这种操作)。
fastDFS架构
在fastDFS文件系统中对应了三个角色:客户端(client)、追踪器(tracker)、存储节点(storage)。
这三个角色的关系可以这样描述:
client和storage主动连接tracker
storage主动向tracker报告自身状态信息
磁盘剩余情况
文件同步状况
文件上传、下载次数
storage会启动一个单独的线程来完成对一台tracker的连接和定时报告
client需要上传文件时
先向tracker发送上传连接请求,tracker返回某个存储空间足够的目标storage的ip和端口,client与tracker断开连接
向目标storage上传文件(包括文件名和文件数据),storage存储文件后,向client返回重新编码后的file_id(包含存储路径信息和文件名),storage与client断开连接
client需要下载文件时
先向tracker发送下载连接请求,tracker查询后返回目标storage的ip和端口,client与tracker断开连接
向目标storage发送需要下载的文件的file_id,storage向client发送文件,storage与client断开连接
storage和client之间基于TCP协议进行文件传输
fastDFS集群
集群(cluster)技术可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。一个客户端与集群相互作用时,集群表现得像是一个独立的服务器。
fastDFS通过集群配置提高文件系统的可用性和可缩放性。
tracker集群
多个tracker server之间是相互平等关系同时提供服务,tracker server之间进行数据同步
通过集群,tracker server不存在单点故障。
client请求Tracker server时采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
storage集群
storage集群采用了分组存储方式,由一个或多个组(group)构成
集群存储总容量为集群中所有组的存储容量之和
一个组由一台或多台storage存储服务器组成,组内的storage server之间是平等关系,组内的storage进行数据同步,冗余备份;不同组的Storage server之间不会相互通信
一个组的存储容量为该组内storage存储服务器容量最小的那个
通过添加group组进行文件系统的容量扩充——横向扩容
组内添加storege节点进行数据备份——纵向扩容
Linux环境下fastDFS的安装与配置
fastDFS安装
新建安装包的存放路径,下载安装包并解压
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz -SO libfastcommon.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz -SO fastdfs.tar.gz
#解压命令 tar -xf xxx.tar.gz小提示:提示权限不够时,一般都可以在命令前加上sudo 解决。
编译安装基础库包 libfastcommon
cd libfastcommon-1.0.39
./make.sh
./make.sh install
#可能需要创建动态库软连接
#sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so编译安装fastDFS
cd fastdfs-5.11
./make.sh
./make.sh install
安装结束后的二进制命令默认放在/usr/bin目录下,而配置文件是在/etc/fdfs目录下,可以通过fdfs_test命令测试是否安装成功。
fastDFS配置
需要对fastDFS的配置文件进行修改,才能正常使用。一般不直接对提供的示例配置文件进行修改,所以会先复制一份。
复制client、tracker、storage的配置文件
cd /etc/fdfs
sudo cp tracker.conf.sample tracker.conf
sudo cp storage.conf.sample storage.conf
sudo cp client.conf.sample client.conf修改tracker的配置文件tracker.conf
bind_addr=192.168.82.253
绑定当前主机IP
port=22122
绑定的端口,一般先检查端口空闲
base_path=/home/robin/fastDFS/tracker
日志文件log存放的目录,需为可用的路径
修改完成之后,就可以启动tracker服务了
修改storage的配置文件
group_name=group1
该存储节点所属的组名
bind_addr=192.168.82.253
绑定当前的IP
port=23000
绑定的端口
base_path=/home/robin/fastDFS/storage
日志文件log存放的目录,需为可用的路径
store_path_count=1
存储目录的个数
store_path0=/home/robin/fastDFS/storage
具体的存储目录,需可用,且与存储目录个数对应
tracker_server=192.168.82.253:22122
连接的tracker的IP和端口
修改完成之后,就可以启动storage服务了
修改client的配置文件
base_path=/home/robin/fastDFS/client
日志文件log存放的目录,需为可用的路径
tracker_server=192.168.82.253:22122
连接tracker时候需要的iP和端口信息
检测当前fdfs环境是否搭建成功
fdfs_monitor/etc/fdfs/client.conf
#启动
tracker:fdfs_trackerd /etc/fdfs/tracker.conf
#重启
fdfs_trackerd /etc/fdfs/tracker.conf restart
#关闭
fdfs_trackerd /etc/fdfs/tracker.conf stop
fdfs_storaged /etc/fdfs/storage.conf
fdfs_storaged /etc/fdfs/storage.conf restart
fdfs_storaged /etc/fdfs/storage.conf stop
配置完成之后,就可以测试分布式文件系统的文件上传、下载了。
客户端文件上传:
下载上传的文件:
删除上传的文件:
结束语
至此,基于fastDFS的分布式文件存储系统就搭建完成了。分布式存储系统通常作为后台服务器的一部分而出现。
一般地,我们需要在程序代码中实现文件的上传、下载等操作,实现方法有两个:
通过阅读fastDFS的源代码,利用fastDFS提供的api实现;
创建子进程,在子进程中执行fdfs_upload_file等命令。
第一时间获取杂货铺的
想法灵感和好文章推荐
喜欢请戳一戳右下角
以上是关于fastDFS分布式文件系统的搭建的主要内容,如果未能解决你的问题,请参考以下文章