分布式系统要做的任务就是把多台机器有机的组合、连接起来,让其协同完成一件任务,可以是计算任务,也可以是存储任务。如果一定要给近些年的分布式系统研究做一个分类的话,大概可以包括三大部分:

1. 分布式存储系统
2. 分布式计算系统
3. 分布式管理系统

这是一个范围比较广的话题,今天我们就来简单了解一下分布式存储系统的Gluserfs.

GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端,用户可以在全局统一的命名空间中使用NFS/CIFS等标准协议来访问应用数据。GlusterFS使得用户可摆脱原有的独立、高成本的封闭存储系统,能够利用普通廉价的存储设备来部署可集中管理、横向扩展、虚拟化的存储池,存储容量可扩展至TB/PB级理论和实践上分析,GlusterFS目前主要适用大文件存储场景,对于小文件尤其是海量小文件,存储效率和访问性能都表现不佳。

https://www.gluster.org/

官方文档: http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/

glusterfs安装部署

我们在四台linux服务器上部署glusterfs,每台服务器上需要有一个用于挂载的外挂盘。

1、统一主机名,关闭selinux和防火墙。

2、安装glusterfs

yum install –y centos-release-gluster37.noarch
yum --enablerepo=centos-gluster*-test install glusterfs-server \
glusterfs-cli glusterfs-geo-replication glusterfs -y
/etc/init.d/glusterd start

如果下载过程较慢,可以直接下载rpm包进行安装。

3、将存储主机(除本机之外的其他存储)加入信任存储池 (执行这一步后其他服务器也会自动生效)

gluster peer probe host2
gluster peer probe host3
gluster peer probe host4

4、查看存储连接状态

# gluster peer status
Number of Peers: 3Hostname: host2
Uuid: e8812107-a299-40a9-a5d2-c9983a5eec81
State: Peer in Cluster (Connected)Hostname: host3
Uuid: 5782682d-05ce-48c1-9f14-13f1e99200a3
State: Peer in Cluster (Connected)Hostname: host4
Uuid: a3370fd2-25ee-4ebf-9e61-6bed142afb58
State: Peer in Cluster (Connected)

5、格式化磁盘,安装xfs的支持包

yum -y install xfsprogs
fdisk  /dev/sdb
n
p
1
enter
w
# fdisk  -lDevice Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1305    10482381   83  Linux

6、格式化所有磁盘为xfs格式:

# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=655149 blks=                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=2620595, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

7、在所有机器上建立挂载目录,并将磁盘挂载

# mkdir -p /storage/brick1
# mount /dev/sdb1 /storage/brick1
# df -h

GlusterFS的分类

gluster有几种不同的卷类型,分别适用于不同的生产场景,比较常用的有这样几种:

Distributed:分布式卷,文件通过hash算法随机的分布到由bricks组成的卷上,每个卷上存放的文件是完整的,不同的文件可能分布在不同的卷上,容量是各卷之和,节省磁盘空间。

Replicated:复制式卷,类似raid1,replica数必须等于volume中brick所包含的存储服务器数,可用性高,相当于有一个完整的镜像副本。

Striped:条带式卷,类似与raid0,stripe数必须等于volume中brick所包含的存储服务器数,文件被分成数据块,以Round Robin的方式存储在bricks中,并发粒度是数据块,大文件性能好

Distributed Striped:分布式的条带卷,volume中brick所包含的存储服务器数必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。

Distributed Replicated:分布式的复制卷,volume中brick所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。

对于具体各个卷的含义和理解可以参考:

http://blog.163.com/szy8706@yeah/blog/static/62713185201351510303223/

GlusterFS的操作

创建分布巻:(指定文件分布在两台机器上,默认是分布巻)

gluster volume create gv1 host1:/storage/brick1 host2:/storage/brick1 force

创建复制卷:

gluster volume create gv1  replica 2 host1:/storage/brick2  host2:/storage/brick2 force

创建分布式条带卷:(生产场景一般不用,这个目前还不太成熟,有丢失数据的风险)

gluster volume create gv1 stripe 2  host3:/storage/brick1 host4:/storage/brick1 force

创建分布式复制卷:(如果直接使用的是挂载点创建,需要加上force 参数)

gluster volume create gv1  replica 2  host1:/storage/brick2 host2:/storage/brick2 force

根据生产需要创建指定的卷之后,启动创建的卷:

gluster  volume start gv1

查看创建卷的属性:

gluster volume info

挂载卷到目录,有两种挂载方式,

  • 直接mount挂载:

mount -t  glusterfs 127.0.0.1:/gv1 /mnt

显示方式:

df -h
127.0.0.1:/gv1   10G   33M   10G   1% /mnt
  • NFS的方式挂载:

mount -o mountproto=tcp -t nfs host3:/gv1 /mnt/

显示方式:

df -h
host3:/gv1      10G   32M   10G   1% /mnt

GlusterFS容量扩充和收缩


当有新的服务器需要加进来时,对glusterfs扩容使用 add-brick 命令:

gluster volume add-brick gv2 replica 2 host3:/storage/brick2 host4:/storage/brick2 force

gv2为已经存在的卷,将brick2的两个磁盘加入gv2

使用df -h 查看,发现gv2容量增大:

df -h
/dev/sdb1        10G   33M   10G   1% /storage/brick1
host13:/gv2      20G   65M   20G   1% /mnt

注意:当你给分布式复制卷和分布式条带卷中增加bricks时,你增加的bricks的数目必须是复制或者条带数目的倍数,例如:你给一个分布式复制卷的replica为2,你在增加bricks的时候数量必须为2、4、6、8等。

虽然已经新加入了磁盘,但是数据在存储的时候一般还会存储在之前旧的磁盘上,并不能均衡的写到新加入的磁盘中,造成磁盘的读写不均衡,这时就要对卷做磁盘存储平衡。

磁盘存储的平衡

平衡布局是很有必要的,因为布局结构是静态的,当新的bricks加入现有卷,新创建的文件会
分布到旧的bricks中,所以需要平衡布局结构,使新加入的bricks生效。布局平衡只是使新布局生效,
并不会在新的布局移动老的数据,如果你想在新布局生效后,重新平衡卷中的数据,还需要对卷中的数
据进行平衡。

执行数据布局平衡命令:

gluster volume rebalance gv2 start

查看平衡状态:

gluster volume rebalance gv2 status

此时可以看到数据已经平衡分布,在新加磁盘的服务器brick中已经有了数据。

移除brick

如果我们要想在线缩小卷的大小,例如:当硬件损坏或者网络故障的时候,你可能想在卷中移除相关的bricks。
注意:当你移除bricks的时候,你在 gluster的挂载点将不能继续访问数据,只有配置文件中的信息移除
后你才能继续访问bricks的数据。当移除分布式复制卷或者分布式条带卷的时候,移除的bricks数目必须
是replica或者stripe的倍数。例如:一个分布式条带卷的stripe是2,当你移除bricks的时候必须
是2、 4、6、8等。

操作命令:

停止卷:停止卷会使所有数据下线,不可连接

 gluster volume stop gv2

移除brick:

gluster volume remove-brick gv2 replica  2 host3:/storage/brick2 host4:/storage/brick2 force

当移除的复制卷不是互为备份的brick时,会报错:

volume remove-brick commit force: failed: Bricks not from same subvol for replica

当移除brick成功后,就可以卸载磁盘取出修复了。

删除卷

如果想要删除卷,可以采用下面的命令:

移除挂载

umount /mnt
gluster volume stop gv1
gluster volume delete gv1
gluster volume info gv1

存储池中移除服务器节点:

# gluster peer detach hostname

参考链接:http://www.zhihu.com/question/23645117/answer/124708083

转载于:https://blog.51cto.com/tryingstuff/1862468

GlusterFS分布式文件系统相关推荐

  1. glusterfs分布式文件系统初探

    公司有几台就服务器,正好有个项目对磁盘的容量以及性能有一定的要求,故而寻求分布式文件系统方面的知识,最终采用了glusterfs.以下对部署以及测试过程潦做记录. glusterfs分布式文件系统采用 ...

  2. GlusterFS分布式文件系统群集

    GlusterFS分布式文件系统群集 技能展示 理解GlusterFS工作原理 理解弹性HASH算法心 掌握几种类型的GlusterFS卷 掌握部署GlusterFS的方法 简介 在企业中,一些重要的 ...

  3. glusterfs分布式文件系统详细原理

    http://blog.csdn.net/yujin2010good/article/details/75268877 1.Glusterfs简介 GlusterFS是Scale-Out存储解决方案G ...

  4. 十三章——GlusterFS分布式文件系统群集(应用——linux防护与群集)

    三期总目录链接 目录 一.GlusterFS相关知识介绍 (一)简介 1. GlusterFS介绍 二.glusterFs实例 (一)准备环境 1.分区 2.node1~node4 安装软件--yum ...

  5. GlusterFS 分布式文件系统

    目录 引言 一.文件系统简介 1. 组成 2. 作用 3. 文件系统的挂载使用 二.GFS 分布式文件系统概述 1. GFS 简介 2. GFS 的特点 3. GFS 专业术语 4. 模块化堆栈式架构 ...

  6. 案例部署——GlusterFS分布式文件系统群集

    前言:大部分分布式解决方案都是通过元服务器存放目录结构等元数据,元数据服务器提供了整个分布式存储的索引工作.但是一单元数据服务器损坏,整个分布式存储页将无法工作.本次将介绍一款无元服务器的分布式存储解 ...

  7. 企业级别应用--GFS分布式文件系统(GlusterFS工作原理、弹性 HASH 算法 、GlusterFS卷的类型、 部署GlusterFS)

    文章目录 一. GlusterFS 概述 1.1 GlusterFS 简介 与传统分布式相比的优点 1.2 GlusterFS 的特点 扩展性和高性能 高可用性 全局统一命名空间 弹性卷管理 基于标准 ...

  8. GFS 分布式文件系统从入门到实践

    文章目录 一.GlusterFS 概述 1.1 GlusterFS简介 1.2 GlusterFS的特点 (一)扩展性和高性能 (二)高可用性 (三)弹性卷管理 (四)基于标准协议 二.Gluster ...

  9. 浅识一下GFS分布式文件系统

    GFS分布式文件系统 什么是GFS分布式文件系统 GFS(GlusterFS) 是一个开源的分布式文件系统. 由存储服务器.客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成. 没有 ...

最新文章

  1. Netty 解决粘包和拆包问题的四种方案
  2. wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString 以及system(command)...
  3. 回馈粉丝,包邮送一台全新iPad
  4. 深入理解Java虚拟机(第三弹)- JVM 内存分配与回收策略原理,从此告别 JVM 内存分配文盲
  5. lnmp环境脚本自动配置
  6. [数据库] Oracle使用CASE判断解决多值问题
  7. 我们公司今天组织去清远漂流,哈哈!
  8. 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)
  9. FreeRTOS-时间片轮转调度
  10. 2020 IJCAI 接受论文 list 分类排列(一)
  11. 科技爱好者周刊(第 167 期):广告拦截器太过分了
  12. 安卓音频开发(四)使用lame把wav转mp3
  13. opencv无法打开摄像头
  14. Leetcode PHP题解--D38 463. Island Perimeter
  15. 程序员不得不知道的 API 接口常识
  16. Unit 和 Int转换 Unit转Int Int转Unit
  17. 唐伯虎点秋香之不共戴天铃声 唐伯虎点秋香之不共戴天手机铃声...
  18. layui ajax初始化,layui-滑块验证的动态修改及初始化
  19. 腾讯云服务器压力测试注意事项
  20. 对称密码技术的密钥分配

热门文章

  1. 蓝桥杯 ADV-94算法提高 复数归一化
  2. 运行tuxedo自带例子simpapp,测试tuxedo安装
  3. 使用NoSQL Manager for MongoDB客户端连接mongodb
  4. Centos 6中模拟破坏MBR救援模式下修复
  5. 可用性测试的权衡之道
  6. 【懒人有道】在asp.net core中实现程序集注入
  7. 数据可视化图表ECharts
  8. SQL数据库的使用:创建表结构
  9. Python 的lambda表达式的一些小细节
  10. 另类网页设计:30个复古怀旧风格的网站作品