介绍
介绍
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
Storage server
Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。
以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很长。
group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。
storage接受到写文件请求时,会根据配置好的规则,选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
Tracker server
Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。
Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。
安装
准备
准备packages目录
mkdir /packages cd /packages
安装gcc
yum -y install gcc gcc-c++ make
安装依赖库
yum -y install perl-devel unzip
下载
从github下载
https://github.com/happyfish100/fastdfs
https://github.com/happyfish100/libfastcommon
安装tracker
安装libfastcommon
cd libfastcommon-master/ sh make.sh sh make.sh install cd ..
安装fastdfs
cd fastdfs-master/ sh make.sh sh make.sh install cp -r conf /etc/fastdfs cd ..
配置tracker
进入/etc/fastdfs目录
cd /etc/fdfs/ cp tracker.conf.sample tracker.conf
编辑tracker.conf,设置base_path为存储根目录
base_path=/data/my_fdfs
安装storage
安装storage的方法和tracker一样,这里就不再阐述了
配置storage
进入/etc/fastdfs目录
cd /etc/fdfs/ cp storage.conf.sample storage.conf
编辑storage.conf
设置base_path为存储根目录
base_path=/data/my_fdfs
设置store_path,如果有多个就写多个,将最后的数字+1即可
store_path0=/data/my_storage
设置store_path_count,前面设置了多少store_path就写多少
store_path_count=1
设置tracker_server,如果有多个就写多个
tracker_server=10.16.1.161:22122
使用