`
sunzixun
  • 浏览: 74687 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

<cloud>Gluster ABC

阅读更多

 

(可以直接转载 注明出处 有ppt 和pdf 如有需要请留言)

 

 

前言

Glusterfs 是一个只需要软件的高效 可扩展 集中化管理的分布式存储系统。可以用于公有云,私有云环境。
 这里就说企业私有云,公有云是收费的。
 对于为创建一个灵活,经济,表现出色并且高效的分布式存储为前提的私有云环境,Glusterfs 提供了相当优秀的解决方案。他的好处有:
 高效的本地和远程数据备份
 对于存储扩展只需要线性开销
 快速部署
 云共享
 POSIX的语义( 应用不需要修改直接可用)
 免费
 灵活易扩展
Gluster提供企业 将物理存储变成虚拟化,标准化 按需调整的分布式存储 ,就像使用本地盘一样方便。

 

 

 

Glusterfs的特性

扩展性和表现
 GlusterFS 通过改变一系列的组合特征来推动TB 到PB数据量的扩展。规模扩展的结构设计允许根本按需增加资源。磁盘,节点,网络都可以被独立的添加并且支持更高的网络(10GB以上如InfiniBand )。Gluster的弹性哈希算法移除了原数据服务器。

全局命名空间
 独一无二的命令空间用来整合磁盘和资源成为一个简单的池。存储资源可以在分布式存储中按需弹性的增加和减少。比如作为存储的虚拟机可以映射没有数目限制的镜像,并且一个挂载点可以被上千个虚拟机共享。 虚拟机的IO吞吐可以动态的做到负载均衡 检测热点和瓶颈在SAN环境中显得尤为重要。
 
 弹性哈希算法
 比起使用一个集中的分布式元数据索引服务器。Glusterfs 使用了一个弹性的hash算法用来定位分布式存储中的具体数据。 通常元数据服务器是一个公共的IO资源瓶颈 并且在其超大的存储系统中显得很脆弱。Glusterfs 可以智能的定位数据块而不用通过另外一台服务器查找 . 而从实现全并行化的数据进入达到线性的扩展表现。
 
弹性行卷管理
 数据被存储在来自硬件或者其他逻辑分区的抽象逻辑卷中。就算数据服务在线也不需要中断上层的应用,存储服务器就可以增加或者减少个数 。卷组也可以在运行过程中增加或者减少空间 或者 在分布式存储的配置中迁移达到负载平衡。文件系统的配置也可以在运行的时候立刻改变以适应负载条件变化,从而达到在线性能调整。
 
协议支持
 Glusterfs 服务器支持NFS和私有协议 ,也包括CIFS HTTP FTP. 同时Glusterfs 完全遵从Posix 标志,实现数据操作 不需要任何私有的API 这样现在有系统完全不需要修改就可以直接运行在云计算的环境中。 这尤其有用当你部署glusterfs的时候,因为他提供了标准Posix接口。而Hadoop 却是私有API,需要用其提供的类库来编写应用代码。


管理磁盘配额
 
 在Glusterfs 中目录配额允许你设置磁盘空间限制根据目录和卷组。分布式存储管理员 可以在目录和卷组基本 控制磁盘的使用率
 注意 只有硬件限制被支持 ,这个限制不能被超过或者企图使用更多的块和inode节点。超过的设置将会失败。当然系统管理员可以监控资源的使用限制。
 
卷的级别和目录等级

 Glusterfs 是一个开源的分布式文件系统,可以处理 PB级别的数据和为上千的客户端同时服务。 Glusterfs 可以在TCP/IP RDMA等网络上搭建集群,整合磁盘和内存资源 并且把所有的数据通过一个全局命令空间管理。Glusterfs基于栈结构化的用户空间设计,从而在不同的负荷下都有优异的表现。

云备份(Geo-replication)

Glusterfs 提供了 一种从一个网络域到另一个网络域 :连续的 异步的 和增量的复制服务。
可以使用Glusterfs 在自己的存储环境中建立数据冗余,应对灾难恢复 。

Glusterfs 使用了 “主-从” 模式, 在下面的角色之间完成数据复制 镜像重建
主:Glusterfs 卷组
从:备份的Glusterfs 卷组或者一个简单的挂载点(甚至可以不用安装glusterfs)

 
 
Geo-replication的 缺点
 
同步未完成

 描述: Glusterfs 的GEO 未完成数据同步。
 解决: 你可以增强 一个数据完成的同步通过擦除下标并且重启


虚拟的云计算环境

 GlusterFS 被设计用来为今天的高性能 虚拟化的云计算环境服务。
 传统数据中心随着扩大和减小都要按需租赁。而Glusterfs 把云计算的能力整合到了自己的结构核心中, 并且提供了本地的 NFS 协议支持。
 
 
 每一个GlusterFS 模块 都被当作"卷组"对待。 GlusterFS 更进一步的增加了弹性的卷组管理能力(后台服务进程) 和控制台管理(gluster 命令行接口) 。 通过使用弹性的卷组管理, 管理员可以动态的增加 扩展 减少 和迁移下面的组卷。 命令行接口额外的提供了一个交互式的Shell界面 可以配合脚本实现合适的自动化工作。
 
GlusterFS 管理介绍
  GlusterFS 提供一个简单的命令行工具 作为Gluster的控制台管理,这样可以简化配置和管理你的分布式存储环境。 Gluster 控制台提供了类似于LVM 的那种命令行接口,但是它是跨存储服务器的。你可以在线使用,不论卷组是否被挂载或者使用。
 通过使用Gluster 控制台界面 ,管理员可以随时创建新的卷组, 启动卷组, 停止卷组。 管理员还是增加 存储块 到卷组里面,或者移除已经有的存储块 。甚至包括解释器 的设置。
 Gluster在多个Gluster服务器之间 动态的同步 卷组配置信息 ,管理员同样可以使用提供的命令来创建脚本做到这些,同样使用命令作为API 来允许整合第三方的应用。


创建信任存储池
 
 在配置GlusterFS卷组之前你需要创建一个性能分布式存储池 它由很多节点组成,然后再由他们构成卷组。一个分布式存储池可以看作一组信任的存储节点。 当你启动一个节点, 存储池就只包含那个节点。 然后通过增加节点来扩充这个存储池 ,你可以使用 'probe ' 命令来加入多个节点
注意:GlusterFS 服务只能运行在你要加入的那些节点服务器上。

配置GlusterFS卷组
 
配置分布式卷组
 
 分布式卷组 通过在集群节点上分布文件, 你可以使用分布式卷组在归档环境中随时调整存储规模,短暂的失去响应是可以接受的。
 注意: 对于分布式卷组磁盘失败可能导致一系列的数据丢失,因为目录内容在整个集群中是随机分布式的。
 
配置分布式拷贝卷组
 
 分布式拷贝卷组 复制数据在2个或者多个集群节点之间, 你可以在需要高效和可靠的环境中,使用分布式拷贝卷组。在大多数环境中,分布式拷贝卷组同样提供了增强的读性能。
 
配置分布式条带化卷组
 
 分布式条带化卷组 可以把数据按条带的保存在集群中的多个节点上,为了能有好的效果,你可以使用分布式条带化卷组 但仅仅在需要高并发且对象是大文件的情况下。

注意: Gluster 建议设置  rpc-auth-allow-insecure  = ON 如果卷组中有太多的 存储块 或者有很多系统服务已经占有了特权端口(1024) 。只要你的部属需要就请使用这个选项。


配置Gluster 解释器
 
解释器 默认选项 有效的值
服务器端  
锁 trace off On / Off
读写线程 thread-count 16 1 to 64
 idle-time 1 
卷组标记 volume-uuid UUID of the volume 
 timestamp-file path 
 xtime off On / Off
 quota off On / Off
磁盘状态 dump-fd-stats off On / Off
 latency-measurement off On / Off
 count-fop-hits off On / Off
 log-level NONE DEBUG, TRACE, NONE, WARNING, ERROR, CRITICAL
客户端  
延迟写 flush-behind on On / Off
 cache-size/window-size 1MB 512 KB to 1 GB
 disable-for-first-nbytes 0 0 to 1 MB
 enable-O_SYNC disable Enable / Disable
 enable-trickling-writes on On / Off
预读 force-atime-update false True / False
 page-count 4 1 to 16
IO操作缓存 priority 1 
 cache-timeout/force-revalidate-timeout 1 sec 0 sec to 60 secs
 cache-size 32 MB 4 MB to 6 GB
 min-file-size 0 
 max-file-size 1 Limited by the underlying File System
读取缓存 priority 1 cache-size 128 MB 0 KB to 6 GB
 cache-timeout 1 1 sec to 60 secs
 max-file-size 64 KB 0 KB to 1 MB

分析 GlusterFS负载
 使用GlusterFS卷组 的‘TOP’和 ‘Profile’命令可以监控不同的负载,据此你可以计划和改变你的GlusterFS卷组达到更好的表现。还可以查看和找到卷组中每一个存储块出热点和瓶颈。

内部的实现:

 

可以想象。 任何区分通过本地原数据来区分数据的设计都和表现和可靠性互相制约。
因此gluster设计了一个不需要原数据的系统 ,无论是集中式还是分布式。

Gluster 通过算法定位数据, 仅仅通过路径名和文件名。在Gluster存储平台中任何需要读取数据的存储系统节点和客户端访问文件时都表现为通过一个算法操作来获得文件属主。换言之没有原数据的必要,因为文件路径可以被独立的确定。

这个算法称之为 弹性哈希算法。 它是Gluster独一无二的优势。对于这个算法的解太复杂了。就举一个简单的例子吧。

 

 


在真实的环境中, 槽糕的事情经常发生 :磁盘坏道, 资源耗尽 文件需要被重新分布 等等。

Gluster 解决这些挑战 通过:

 1 设置一个非常大数目的虚拟卷组
 2 使用哈希算法来指定文件对应的虚拟卷组
 3 使用一个独立的进程指定虚拟卷组到多个物理磁盘

因此 当磁盘或者节点被增加或者减少,算法本身不需要改变。 同时,虚拟卷组可以随时被迁移或者安排到一个新的物理位置

 

模块化栈化架构
 
 Gluster 设计为模块化和栈化的架构。 对于大文件,多数目文件,小片文件等等不同的分布式存储场景, Gluster都可以简单的做到特定配置包含需要的模块。
 为了稳定性的原因, 一些配置可以在系统使用中不会生效(比如,一个人希望移除一个复制功能,但是高可用的环境中需要这个功能)。

 


 
 
 弹性卷组管理
 
  因为用一个弹性的哈希算法指定文件到对应的逻辑卷。可能有一个疑问“Gluster是如何安排逻辑卷到物理卷的”在Gluster中,卷管理是非常弹性化的, 存储的卷组对于底层可增长减少迁移的硬件是抽象的。 存储系统可以动态增加或者移除数据。运行中文件系统配置的改变是可行的。
 

 
重命名和移除文件
 
 如果一个文件被改名字了,那么Gluster的哈希算法肯定会产生不同的值 这样就导致文件被安排在不同的逻辑卷组上, 它自身就可以被存储在了不同的物理设备上。
 因为文件的扩大重写或者移动 通常不是一个实时操作, Gluster解决以上问题,通过在文件被重名命的时候创建一个文件连接,这样客户端可以查找新名字 然后被重新定向到原始的磁盘位置, Gluster在背后会偷偷的把文件迁移过去,完成了再把重定向到的连接除去。
高可用
 
 通常的说, Gluster建议使用 镜像(2,3 或者更多)来确保高可用 。在这种情况下 每一个存储节点 都被复制到另一个存储节点,而这一切都是异步的。这个策略的好处就是可以做到错误允许。单点失败是对Gluster的客户端来说完全是透明的。 另外读者可以快读的切换在多个镜像中。GlusterFS 可以支持没有数量限制的镜像。当弹性哈希算法安排文件到独一无二的逻辑卷时 Gluster 确保每个文件都被保存到为至少2个以上的节点中 。没有分布式的镜像也是可以的 只要二个节点就能完成。



 
 .


疑问解答:

FUSE 模块的表现如何?

Gluster反馈给linux社区的一种方式就是维护内核FUSE模块 ,有专门的工程师在做着一块工作,所以问题不大。我们里面有人。

网络级别的Raid 5 分布式冗余

在Gluster的不同版本之间升级有问题吗? 在线呢?

更新不同的Gluster版本是非常容易的, 而且对于复制过的卷组来说没有延迟,如果你没有复制的卷组,那么会有一点点的时延 。

Gluster有API支持吗?
 现在还是用命令的,不过很快就有了 叫做 RESTfulAPI。


Gluster的限制是什么?
  因为没有中心化的数据存储,没有原数据并且只在文件基本操作 理论上没有什么限制。
但是在真实的服务器和IP管理上 ,集群对于大多数节点 只能有250个服务器能加入一个简单的卷组。如果你有1000个节点 100PB的集群可以给告诉 Gluster测试,请告诉他们,他们会给你一个Gluster的衣服和水杯。。。


有32位支持吗? 有 GUI么? 云备份可以支持压缩么
 
  3.2之后就没有可用的3.2版本了, 以后会有GUI, 以后会有,现在是增量复制,所以其实很快。
 
 
当云备份(geo-replication)通过管道立刻传递数据的话,会发生什么?

 

 .
 
 

 
 
总 结

 
 Gluster 可以用于需要通过数据冗余来实现数据备份的分布式文件系统。
通过不同机架 ,不同地域的主机配合形成 云存储备份(geo-replication)。
 
 
 由于既提供了卷组级别的备份,又提供了主机级别的备份。 这样可以根据客户的需要和提供的方案来决定数据备份的组合方式。
 

 
 
 同时可以在 lvm 之上搭建 gluster 然后将GFS提供的卷组,通过Samba NFS ISCSI 等主机文件传输协议提供给win os 做磁盘文件夹映射。
 
 
 

 
 Gluter 并不提供真正意义上的动态的主机切换 ,和负载均衡 一切都依赖于管理员通过命令实现。 而且只提供了磁盘状态,并不能考虑网络负载 CPU 内存负载 这一切很大程度是因为自身的 弹性Hash算法 和必须遵守 Poxis 协议。 所以有得必有失。
 
 鉴于此 gluster 不太适合用于做web存储服务器,比起Hadoop  因为不能做到动态响应 动态切换等功能。单纯的做存储服务器还是比较适合的。

 

下面是我询问gluste对LD的解释 有兴趣可以看看

 

faye.zixun

Can gulsterfs locate the file by loadbalance? I mean to find the nearest server to get the file.

I know glusterfs saving and finding file by its elastic hash algorithm . But if I replicate it on several replicated volumes ,can glusterfs fetch the file from the best performance Server which have been saved a  replicated volume?   
  • 0 Comments
  • 1 Answer
  • 2 votes
Yes this is the intended default behavior. Elastic hashing leads the lookup call to a particular replicated group. Within the group, lookup calls are sent to all the mirrored members. Based on which ever server responds first, consecutive I/O calls will follow that particular server. 

Load balancing happens at the file (inode) level. When you read multiple files concurrently, load gets distributed to all the active-active replicated pairs. This improves better utilization of cache, read-ahead and also eliminates disk contention. 

There is also a hidden static option in replicate to forcefully prioritize a particular set of servers. My recommendation is to leave it to GlusterFS defaults. 

  • 大小: 223.2 KB
  • 大小: 163.4 KB
  • 大小: 199.6 KB
  • 大小: 238 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics