glusterfs系列-初探

Glusterfs是一款分布式文件系统,相对配置简单,高性能,无单点故障,适合作为基础服务打包到产品或系统中,提供文件系统服务。
本文将初步介绍Glusterfs的一些特性和适用场景。(•̀⌄•́)
                              —— By Jihan


Glusterfs官方文档
Glusterfs-github

分布式文件系统:分布式文件系统百度百科
一些需要使用分布式文件系统的情况:

  1. 高可用场景,有一主一备需要同步一些文件。
  2. 集群情况,可靠性和容量限制,需要一个统一的文件系统接口,为多个服务器提供服务。
  3. 磁盘容量限制,或者可靠性要求,需要多台设备统一对外提供和普通文件系统一样的服务。

简介

开源分布式横向扩展文件系统,可以根据存储需求快速调配存储,内含丰富的自动故障转移功能,且摈弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统,具有可扩展性、高性能、高可用性等特点。

特性

在选择一个分布式文件系统时,先明确需求,再看此分布式文件系统的特性师傅满足需求。
在此大致列出Glusterfs的一些特性:

功能点 GlusterFs
分布式文件系统架构模式 去中心化
是否支持快照,和主动复制 支持主动复制和快照
恢复机制是副本机制还是纠删码 多副本机制
擅长处理的文件类型(大中小文件) 由于基于文件系统,对于大量小文件不友好
擅长处理的数据特性(写多,读多…) 适合静态数据(视频,音频),无关系型数据
备份数据恢复方式 支持备份恢复,恢复时需要重新构建卷。
并发下读写如何处理,用锁机制还是actor模型 不保证数据强一致性,同时写入采用actor方式保证互斥。
支持的存储模式(对象存储,文件存储和块存储) 文件存储
是否需要支持事务 复制卷写入采用同步事务性操作。存在changelog
节点动态扩容支持,以及机制 Scale-Out架构和弹性hash都可以便捷进行扩容,支持容量扩展
活跃状态(社区活跃高,文档,star) 文档友好, 社区活跃度较低,4.1k star
部署维护便捷性 部署维护较为简单
性能 对于大文件读写有较好性能,主要限制取决于带宽
是否是轻量级 相对轻量
是否支持直接文件存储
已知可能存在的缺陷 基于Linux操作系统,跨系统很难支持

其他分布式文件系统

​ 常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

  1. GFS(Google File System)
    ​ Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。GFS是一个为Google内部设计的大数据分布式存储框架,由2003年Google发表的论文提出,遗憾的是Google并没有将其开源,但是基于GFS的设计理念,诞生了很多优秀的开源类GFS文件系统。

  2. HDFS(Hadoop Distributed File System)
    ​ HDFS是Hadoop(Apache开源项目)的专用文件系统, Hadoop是一个大数据计算框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集,是Google发表的MapReduce算法的实现,HDFS是GFS的开源实现。

  3. Ceph
    ​ Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统,并使用Ceph完成了他的论文。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。与其它分布式文件系统相比,ceph 性能最高,因为其使用C++编写而成。 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。自2007年毕业之后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境,经过十几年的发展,Ceph已经趋向于成熟。

  4. Lustre
    ​ Lustre是一个开源、分布式并行文件系统软件平台,具有高可扩展、高性能、高可用等特点。Lustre的构造目标是为大规模计算系统提供一个全局一致的POSIX兼容的命名空间,这些计算系统包括了世界上包含最强大的高性能计算系统。它支持数百PB数据存储空间,支持数百GB/s乃至数TB/s并发聚合带宽。

  5. GridFS
    GridFS 是MongDB的分布式存储系统,用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。

  6. MogileFS
    ​ MogileFS是一个开源的分布式文件存储系统,是由LiveJournal旗下的Danga Interactive公司开发。目前使用MogileFS的公司非常多,如日本排名先前的几个互联公司以及国内的Yupoo(又拍)、digg、豆瓣、大众点评、搜狗等,分别为所在的组织或公司管理着海量的图片。以大众点评为例,用户全部图片均有MogileFS存储,数据量已经达到500TB以上

  7. FastDFS(Fast Distributed File System)
    ​ FastDFS是一个开源的分布式文件系统,由纯C编写,性能很高。她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

  8. TFS(Taobao File System)
    ​ TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

参考

https://docs.gluster.org/en/latest/
https://www.cnblogs.com/zhijiyiyu/p/15339674.html
https://www.hellodemos.com/hello-glusterfs/glusterfs-demos.html
https://blog.csdn.net/qq_37862148/article/details/113999206

系列文章

glusterfs系列-初探
glusterfs系列-环境搭建
glusterfs系列-功能测试
glusterfs系列-性能测试方法

-------------本文结束感谢您的阅读-------------