文档章节

Glusterfs简介以及其工作流程的简单分析

老叮当猫
 老叮当猫
发布于 2013/11/16 15:05
字数 1751
阅读 1889
收藏 17

1. Glusterfs简介

GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand
RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。

2. Glusterfs特点

2.1 扩展性和高性能
GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解决方案。Scale-Out架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。Gluster弹性哈希(Elastic Hash)解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。
高可用性GlusterFS可以对件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。[吖Sool-社区 ]

2.2 全局统一命名空间
全局统一命名空间将磁盘和内存资源聚集成一个单一的虚拟存储池,对上层用户和应用屏蔽了底层的物理硬件。存储资源可以根据需要在虚拟存储池中进行弹性扩展,比如扩容或收缩。当存储虚拟机映像时,存储的虚拟映像文件没有数量限制,成千虚拟机均通过单一挂载点进行数据共享。虚拟机I/O可在命名空间内的所有服务器上自动进行负载均衡,消除了SAN环境中经常发生的访问热点和性能瓶颈问题。
2.3弹性哈希算法
GlusterFS采用弹性哈希算法在存储池中定位数据,而不是采用集中式或分布式元数据服务器索引。在其他的Scale-Out存储系统中,元数据服务器通常会导致I/O性能瓶颈和单点故障问题。GlusterFS中,所有在Scale-Out存储配置中的存储系统都可以智能地定位任意数据分片,不需要查看索引或者向其他服务器查询。这种设计机制完全并行化了数据访问,实现了真正的线性性能扩展。[吖Sool-社区 ]
2.4 弹性卷管理
数据储存在逻辑卷中,逻辑卷可以从虚拟化的物理存储池进行独立逻辑划分而得到。存储服务器可以在线进行增加和移除,不会导致应用中断。逻辑卷可以在所有配置服务器中增长和缩减,可以在不同服务器迁移进行容量均衡,或者增加和移除系统,这些操作都可在线进行。文件系统配置更改也可以实时在线进行并应用,从而可以适应工作负载条件变化或在线性能调优。
2.5基于标准协议
Gluster存储服务支持NFS,CIFS, HTTP, FTP以及Gluster原生协议,完全与POSIX标准兼容。现有应用程序不需要作任何修改或使用专用API,就可以对Gluster中的数据进行访问。这在公有云环境中部署Gluster时非常有用,Gluster对云服务提供商专用API进行抽象,然后提供标准POSIX接口。 [吖Sool-社区 ]

 

3 模块化堆栈式架构简介
GlusterFS采用模块化、堆栈式的架构,可通过灵活的配置支持高度定制化的应用环境,比如大文件存储、海量小文件存储、云存储、多传输协议应用等。每个功能以模块形式实现,然后以积木方式进行简单的组合,即可实现复杂的功能。比如,Replicate模块可实现RAID1,Stripe模块可实现RAID0,通过两者的组合可实现RAID10和RAID01,同时获得高性能和高可靠性。如下图所示:

 

 


每个功能模块就是一个Xlator,不同的xlator在初始化后形成树,每个xlator为这棵树中的节点,glusterfs要工作,就必然会涉及到节点之间的调用。
调用主要包括2个方面,父节点调用子节点,子节点调用父节点,如当父节点向子节点发出写请求则要调用子节点的写操作,当子节点写操作完成后,会调用父节点的写回调操作。父子节点的调用关系可用下图说明:


4 glusterfs整体工作流程
整体流程如下图所示:

 

 

1)    
首先是在客户端, 用户通过glusterfs的mount point 来读写数据, 对于用户来说, 集群系统的存在对用户是完全透明的,
用户感觉不到是操作本地系统还是远端的集群系统。
2)    
用户的这个操作被递交给 本地linux系统的VFS来处理。
3)    
VFS 将数据递交给FUSE 内核文件系统:在启动 glusterfs 客户端以前, 需要想系统注册一个实际的文件系统FUSE,如上图所示,该文件系统与ext3在同一个层次上面, ext3 是对实际的磁盘进行处理, 而fuse 文件系统则是将数据通过/dev/fuse 这个设备文件递交给了glusterfs client端。所以, 我们可以将 fuse文件系统理解为一个代理。
4)    
数据被fuse 递交给Glusterfs client 后, client 对数据进行一些指定的处理(所谓的指定,是按照client 配置文件据来进行的一系列处理, 我们在启动glusterfs client
时需要指定这个文件。
5)      
在glusterfs
client的处理末端, 通过网络将数据递交给 Glusterfs Server,并且将数据写入到服务器所控制的存储设备上。[吖Sool-社区  ]

这样, 整个数据流的处理就完成了。


    (新浪博客同步:http://blog.sina.com.cn/s/blog_03dfc9330101fk61.html )

    新浪博客:http://blog.sina.com.cn/6yulanggongwu6(山东_小狼)

    新浪微博:http://weibo.com/uc64997683/home?wvr=5(山东_小狼)

      有兴趣的同学可以试用一下 吖Sool-社区 http://www.iesool.com  感谢支持!

  

 

© 著作权归作者所有

共有 人打赏支持
老叮当猫
粉丝 50
博文 26
码字总数 16153
作品 0
朝阳
高级程序员
私信 提问
加载中

评论(2)

老叮当猫
老叮当猫

引用来自“qinerg”的评论

GlusterFS的成熟度到底怎么样啊,可以用于生产环境吗?
如果用于虚拟机硬盘的底层存储,是否合适呢?

可以啊,不过真正商用的话必然要下功夫去优化,我正从事这方面的工作。而且我也接触过用glusterfs作为虚机的底层存储的,而且最新的3.4版本专门针对虚机做了优化~
qinerg
qinerg
GlusterFS的成熟度到底怎么样啊,可以用于生产环境吗?
如果用于虚拟机硬盘的底层存储,是否合适呢?
线上部署GlusterFS情况调研结果

还是有不少群友在选择GlusterFS版本时缺乏信心,所以在“GlusterFS技术交流”QQ群(234901333)里调研了一下线上部署GlusterFS情况。 先说明一下GlusterFS的应用场景: 纯基于GlusterFS创业也...

党志强
07/04
0
0
kubernetes中部署Heketi和GlusterFS

前言 在kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC-->Pod挂载PVC 如果要创建多个PV,则需要手动重复执行这些繁锁步骤,Heketi可以解...

Flywithmeto
07/01
0
0
Kubernetes中挂载GlusterFS的volume

Kubernetes可以直接挂载多种文件系统,其中包括GlusterFS(https://kubernetes.io/docs/concepts/storage/volumes/#glusterfs)。 这里采用最简单的方法,挂载宿主系统的GlusterFS卷给Kuber...

openthings
11/26
0
0
glusterfs的一些基本知识

基本概念 (1) brick:The brick is the storage filesystem that has been assigned to a volume. (2) subvolume:A brick after being processed by at least one translator. (3) volume:......

hncscwc
2014/03/20
0
0
GlusterFS 集群文件系统研究

1. GlusterFS 概述 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助...

红薯
2011/08/10
3.2K
7

没有更多内容

加载失败,请刷新页面

加载更多

windows 下 es安装ik后报错无法启动

1、没有安装分词器时可以正常启动 2、在安装分词器后就报错了 错误信息:Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "D...

zhu_kai1
9分钟前
0
0
ReactNative入门教程-组件生命周期函数

1.组件实例化阶段 defaultProps: 设置组件的初始属性值,比如设置默认Color,width等,可以在通过this.props获取相应的值 constructor(props): 这里通过this.props可以获取defaultProps设置的...

凌宇之蓝
12分钟前
0
0
java使用bytebuddy动态生成带泛型的DTO

我这人文笔很low,喜欢直接贴代码,大家将就着看 //TODO 文字描述,回头有空再补上 package com.valsong.bytebuddy;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.Type...

ValSong
15分钟前
3
0
智能支付稳定性测试实战

本文根据美团高级测试开发工程师勋伟在美团第43期技术沙龙“美团金融千万级交易系统质量保障之路”的演讲整理而成。主要介绍了美团智能支付业务在稳定性方向遇到的挑战,并重点介绍QA在稳定性...

美团技术团队
17分钟前
0
0
Visual Studio Code 相关插件

Vue 开发工具:Visual Studio Code 相关插件: Chinese Auto Close Tag Auto Rename Tag Vetur ESLint Vue VS Code Extension Pack TortoiseSVN Debugger for Chrome...

华山猛男
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部