Linux|Linux新手入门系列:FastDFS概念和原理


Linux|Linux新手入门系列:FastDFS概念和原理
文章图片
Linux|Linux新手入门系列:FastDFS概念和原理
文章图片
Linux|Linux新手入门系列:FastDFS概念和原理
本文为FastDFS的基本概念和原理 。


本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来 , 内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署 , 希望能够帮到一些初学者 , 少走一些弯路 。
注意:

Linux下区分大小写;
Linux多用户多线程;
Linux下每个文件和目录都有访问权限;
FastDFS概念和原理本文为FastDFS的基本概念和原理 。
#FastDFS#、#FastDFS概念#、#FastDFS原理#、#FastDFS简介#、#FastDFS特点#、#FastDFS架构#、#FastDFS文件上传下载流程#
1.FastDFS简介FastDFS是一款开源的分布式文件系统 , 功能主要包括:文件存储、文件同步、文件访问(文件上传、文件下载)等 , 解决了文件大容量存储和高性能访问的问题 。 FastDFS特别适合以文件为载体的在线服务 , 如图片、视频、文档等等 。
FastDFS作为一款轻量级分布式文件系统 , FastDFS用C语言实现 , 支持Linux、FreeBSD、MacOS等类UNIX系统 。 FastDFS类似google FS , 属于应用级文件系统 , 不是通用的文件系统 , 只能通过专有API访问 , 目前提供了C和Java SDK , 以及PHP扩展SDK 。
FastDFS为互联网应用量身定做 , 解决大容量文件存储问题 , 追求高性能和高扩展性 。 FastDFS可以看做是基于文件的key value存储系统 , key为文件ID , value为文件内容 , 因此称作分布式文件存储服务更为合适 。
2.FastDFS特点1)分组存储 , 简单灵活;
2)对等结构 , 不存在单点;
3)文件ID由FastDFS生成 , 作为文件访问凭证 。 FastDFS不需要传统的name server或meta server;
4)大、中、小文件均可以很好支持 , 可以存储海量小文件;
5)一台storage支持多块磁盘 , 支持单盘数据恢复;
6)提供了nginx扩展模块 , 可以和nginx无缝衔接;
7)支持多线程方式上传和下载文件 , 支持断点续传;
8)存储服务器上可以保存文件附加属性 。

3.FastDFS架构说明
FastDFS系统由跟踪服务器(Tracker server)、存储服务器(Storage server)和客户端(Client)构成 。 (1)跟踪服务器(Tracker server)Tracker server:跟踪服务器 , 主要做调度工作 , 起负载均衡的作用 。 在内存中记录集群中所有存储组和存储服务器的状态信息 , 是客户端和数据服务器交互的枢纽 。 相比GFS中的master更为精简 , 不记录文件索引信息 , 占用的内存量很少 。
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的心跳信息 , 生成元数据信息来提供读写服务 。
(2)存储服务器(Storage server)Storage server:存储服务器(又称:存储节点或数据服务器) , 主要提供容量和备份服务 。 文件和文件属性(Meta Data)都保存到存储服务器上 。 Storage server直接利用OS的文件系统调用管理文件 。
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的数据存储目录 。