01、Fast DFS 基本简介

 

 

Fast DFS是一个开源的分布式文件系,它文件行管理,功能包括:文件存、文件同步、文件访问(文件上、文件下)等,解决了大容量存负载均衡的问题。特适合中小文件(建:4KB < file size <500MB),以文件为载体的在线服务,如相册网站、视频网站等等

Fast DFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用Fast DFS很容易搭建一套高性能的文件服器集群提供文件上、下等服

1、Fast DFS简介

Fast DFS端有两个角色:跟踪器(tracker)和存节点storage)。跟踪器主要做度工作,在访问上起负载均衡的作用。

储节点存文件,完成文件管理的所有功能:就是这样的存、同步和提供存取接口,Fast DFS时对文件的metadata进行管理。所谓文件的metadata就是文件的相关属性,以键值对key value pair)方式表示,如:width=1024,其中的keywidthvalue1024。文件metadata文件属性列表,可以包含多个键值对

跟踪器和存储节点都可以由一台或多台服器构成。跟踪器和存储节点中的服器均可以随增加或下线而不会影响线上服。其中跟踪器中的所有服器都是等的,可以根据服器的力情况随增加或减少。

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

在卷中增加服,同步已有的文件由系完成,同步完成后,系将新增服器切线上提供服

当存不足或即将耗尽,可以动态添加卷。只需要增加一台或多台服器,并将它配置一个新的卷,这样大了的容量。

Fast DFS中的文件标识两个部分:卷名和文件名,二者缺一不可。

 

2、Fast DFS 架构介绍

FastDFS由客端,跟踪服器和存器构成,基本架构如下所示

 

 

2.1、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的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中

2.2Tracker Server

    Tracker是Fast DFS的协调者(跟踪者),负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表

    Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务

2.3、Client 

    客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互

3、Fast DFS 存储策略

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

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量

参考资料

 

Fast DFS Google Code http://code.google.com/p/fastdfs/ 

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章