设为首页 收藏本站
查看: 1181|回复: 0

[经验分享] GlusterFS 存储应用简介

[复制链接]

尚未签到

发表于 2019-2-1 11:14:43 | 显示全部楼层 |阅读模式
GlusterFS 分布式文件系统简介
GlusterFS 概述
GlusterFS (Gluster File System) 是一个开源的分布式文件系统,主要由 Z RESEARCH 公司负责开发。GlusterFS 是 Scale-Out 存储解决方案 Gluster 的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS 借助 TCP/IP 或 InfiniBand RDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS 基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
GlusterFS 总体架构与组成部分如图1所示,它主要由存储服务器(Brick Server)、客户端以及 NFS/Samba 存储网关组成。不难发现,GlusterFS 架构中没有元数据服务器组件,这是其最大的设计这点,对于提升整个系统的性能、可靠性和稳定性都有着决定性的意义。

  •   GlusterFS 支持 TCP/IP 和 InfiniBand RDMA 高速网络互联。
  •   客户端可通过原生 GlusterFS 协议访问数据,其他没有运行 GlusterFS 客户端的终端可通过 NFS/CIFS 标准协议通过存储网关访问数据(存储网关提供弹性卷管理和访问代理功能)。
  •   存储服务器主要提供基本的数据存储功能,客户端弥补了没有元数据服务器的问题,承担了更多的功能,包括数据卷管理、I/O 调度、文件定位、数据缓存等功能,利用 FUSE(File system in User Space)模块将 GlusterFS 挂载到本地文件系统之上,实现 POSIX 兼容的方式来访问系统数据。
图1. GlusterFS 总体架构

如图 1 中 GlusterFS 有非常多的术语,理解这些术语对理解 GlusterFS 的动作机理是非常重要的,表1给出了 GlusterFS 常见的名称及其解释。
表1. GlusterFS 常见术语
名称解释Brick最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用。Volume一个卷。在逻辑上由N个bricks组成。FUSEUnix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统。GlusterdGluster management daemon,要在trusted storage pool中所有的服务器上运行。POSIX一个标准,GlusterFS兼容。GlusterFS卷类型
为了满足不同应用对高性能、高可用的需求,GlusterFS 支持 7 种卷,即 distribute 卷、stripe 卷、replica 卷、distribute stripe 卷、distribute replica 卷、stripe Replica 卷、distribute stripe replica 卷。其实不难看出,GlusterFS 卷类型实际上可以分为 3 种基本卷和 4 种复合卷,每种类型的卷都有其自身的特点和适用场景。
基本卷:
(1) distribute volume 分布式卷
基于 Hash 算法将文件分布到所有 brick server,只是扩大了磁盘空间,不具备容错能力。由于distribute volume 使用本地文件系统,因此存取效率并没有提高,相反会因为网络通信的原因使用效率有所降低,另外本地存储设备的容量有限制,因此支持超大型文件会有一定难度。图2 是 distribute volume 示意图。
图2. Distribute volume示意图

(2) stripe volume 条带卷
类似 RAID0,文件分成数据块以 Round Robin 方式分布到 brick server 上,并发粒度是数据块,支持超大文件,大文件的读写性能高。图3 是 stripe volume 示意图。
图3. Stripe volume示意图

(3) replica volume 复制卷
文件同步复制到多个 brick 上,文件级 RAID1,具有容错能力,写性能下降,读性能提升。Replicated 模式,也称作 AFR(Auto File Replication),相当于 RAID1,即同一文件在多个镜像存储节点上保存多份,每个 replicated 子节点有着相同的目录结构和文件,replica volume 也是在容器存储中较为推崇的一种。图4 是 replica volume 示意图。
图4 . Replica volume示意图

复合卷:
(4) distribute stripe volume 分布式条带卷
Brick server 数量是条带数的倍数,兼具 distribute 和 stripe 卷的特点。分布式的条带卷,volume 中 brick 所包含的存储服务器数必须是 stripe 的倍数(>=2倍),兼顾分布式和条带式的功能。每个文件分布在四台共享服务器上,通常用于大文件访问处理,最少需要 4 台服务器才能创建分布条带卷。图5 是distribute stripe volume 示意图。
图5 . Distribute stripe volume 示意图

(5) distribute replica volume 分布式复制卷
Brick server 数量是镜像数的倍数,兼具 distribute 和 replica 卷的特点,可以在 2 个或多个节点之间复制数据。分布式的复制卷,volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。图6 是 distribute replica volume 示意图。
图6 . Distribute replica volume 示意图

(6) stripe replica volume 条带复制卷
类似 RAID 10,同时具有条带卷和复制卷的特点。图7 是 distribute replica volume 示意图。
图7 . Stripe replica volume 示意图

(7) distribute stripe replica volume:分布式条带复制卷
三种基本卷的复合卷,通常用于类 Map Reduce 应用。图8 是 distribute stripe replica volume 示意图。
图8 . Distribute stripe replica volume 示意图

GlusterFS 常用命令
GlusterFS 客户端提供了非常丰富的命令用来操作节点、卷,表2给出了常用的一些命令。在与容器对接过程中,通过我们需要创建卷、删除卷,以及设定卷的配额等功能,并且后续这些功能也需要 REST API 化,方便通过HTTP请求的方式来操作卷。
表2. GlusterFS 客户端常用命令
命令功能gluster peer probe添加节点gluster peer detach移除节点gluster volume create创建卷gluster volume start启动卷gluster volume stop停止卷gluster volume delete删除卷gluster volume quota enable开启卷配额gluster volume quota enable关闭卷配额gluster volume quota limit-usage设定卷配额  

GlusterFS 分布式文件系统安装与配置
GlusterFS 集群搭建
  Server:192.168.1.10    gfs01
Client1:192.168.1.20    gfs02
Client2:192.168.1.30    gfs03
  

  系统环境centos6.5
  glusterfs 版本3.10
  更新yum源

  下载 CentOS-Gluster-3.10.repo 放在/etc/yum.repos.d/目录下
  下载 RPM-GPG-KEY-CentOS-SIG-Storage 放在/etc/pki/rpm-gpg/目录下
yum clean all
yum makecache  集群安装、配置
yum -y install glusterfs-server glusterfs glusterfs-fuse
service glusterd restar
#在服务端将gfs02、gfs03节点加入gluster集群中,并创建存储卷:[root@gfs01 ~]# gluster peer probe gfs02
[root@gfs01 ~]# gluster peer probe gfs03
#创建 条带复制卷
[root@gfs01 ~]# gluster volume create Main stripe 2 replica 2 transport tcp gfs02:/gluster_storage/storage01 gfs03:/gluster_storage/storage01 gfs02:/gluster_storage/storage02 gfs03:/gluster_storage/storage02 force
#启动
[root@gfs01 ~]# gluster volume start Main
#查看状态
[root@gfs01 ~]# gluster volume status
Status of volume: Main
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick gfs02:/gluster_storage/storage01      49152     0          Y       9233
Brick gfs03:/gluster_storage/storage01      49152     0          Y       9158
Brick gfs02:/gluster_storage/storage02      49153     0          Y       9252
Brick gfs03:/gluster_storage/storage02      49153     0          Y       9177
Self-heal Daemon on localhost               N/A       N/A        Y       10239
Self-heal Daemon on gfs02                   N/A       N/A        Y       9272
Self-heal Daemon on gfs03                   N/A       N/A        Y       9197
Task Status of Volume Main
------------------------------------------------------------------------------
There are no active volume tasks

[root@gfs01 ~]# gluster peer status
Number of Peers: 2
Hostname: gfs03
Uuid: d7ab04f2-4358-4d1c-8aed-489aeae14a62
State: Peer in Cluster (Connected)
Hostname: gfs02
Uuid: ba07e12d-da70-4b6d-bcd1-5e340a97631b
State: Peer in Cluster (Connected)  挂载:
[root@gfs01 ~]# mkdir -p /gluster_storage/storage
[root@gfs01 ~]# mount -t glusterfs gfs01:/Main /gluster_storage/storage
#修改挂载文件:/etc/fstab,在文件末尾加入以下内容
gfs01:/Main     /gluster_storage/storage    glusterfs       defaults,_netdev       0 0  测试:
[root@gfs01 ~]# cd /gluster_storage/storage/
[root@gfs01 storage]# time dd if=/dev/zero of=hello bs=1000M count=1
1+0 records in
1+0 records out
1048576000 bytes (1.0 GB) copied, 31.1961 s, 33.6 MB/s
real0m31.211s
user0m0.001s
sys0m1.139s  客户端查看:

[root@gfs03 ~]# tree /gluster_storage/
/gluster_storage/
├── lost+found
├── storage01
│   └── hello
└── storage02
    └── hello
3 directories, 2 files  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670391-1-1.html 上篇帖子: 文件同步 下篇帖子: 集群文件系统GlusterFS安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表