学习GlusterFS(一)

一、概述

1、GlusterFS是集群式NAS存储系统,分布式文件系统(POSIX兼容),Tcp/Ip方式互联的一个并行的网络文件系统,通过原生 GlusterFS 协议访问数据,也可以通过 NFS/CIFS 协议访问数据,没有元数据服务器,实现整个系统的性能、可靠性和稳定性。

2、GlusterFS 常见术语

3、GlusterFS卷类型

基本卷:

(1)  distribute volume:分布式卷

(2)  stripe volume:条带卷

(3)  replica volume:复制卷

复合卷:

(4)  distribute stripe volume:分布式条带卷

(5)  distribute replica volume:分布式复制卷

(6) stripe replica volume:条带复制卷

(7) distribute stripe replicavolume:分布式条带复制卷

基本卷:

哈希卷(distributed volume,文件通过hash算法在所有brick上分布,文件级raid0,不具有容错能力);

wKioL1fSIDKRNDlSAABjmzAmCOU103.jpg

复制卷(replicated volume,生产常用,文件同步复制到多个brick上,文件级raid1,具有容错能力,w性能下降r性能提升);

wKiom1fSIT_gl93yAABfm1QA8uw032.jpg

条带卷(striped volume,不建议使用,单个文件分布到多个brick上,支持超大文件,类似raid0,rr方式round-robin,通常用于HPC(high performance compute)中的超大文件(>10G的单个文件)及高并发环境(多人同时访问同一个文件));

wKioL1fSIVHD7nKbAABhvP0fQvM575.jpg

复合卷:

哈希复制卷(distributed replicated volume,生产常用,同时具有哈希卷和复制卷的特点);

wKiom1fSIV_QhvaBAAB9HyGzJ2U126.jpg

哈希条带卷(distributed striped volume);

wKiom1fSIXTAnw12AAB8siauzu4848.jpg

复制条带卷(replicated striped vlume);

wKioL1fSIY2iFsV3AAB4B03V1cg556.jpg

哈希复制条带卷(distributed replicated striped volume);

wKiom1fSIZ-zTyj6AACZg3riPyE346.jpg

 4、开源并行FS比较(glusterfs VS moosefs VS lustre VS ceph):

比较维度

Glusterfs

Moosefs

Lustre

Ceph

成熟度

2005年发布第一个GA版1.2.3,2013年GA版3.3.2,具有成熟的系统架构和完整的工程代码

2008年发布第一个开源版本v1.5,13年发布GA版v1.6.27,稳定,比较成熟的开源DFS

2003发布第一个版本lustre1.0,2013年发布v2.4.0,相当成熟,在HPC领域占有绝大比例

2013年发布v0.71,并已添加到linux kernel中作实验内核,目前不成熟有较多bug,更新稳定都是实验版

稳定性

较稳定,无重大bug,已有较多组织或机构应用于生产环境

较稳定,无重大bug

很稳定,在HPC领域应用很多

核心组件RADOS较稳定,每3个月更新一次稳定版,有部分企业用于生产环境

复杂度

简单,无元数据服务,用户空间实现,架构清晰,xlator树形结构

简单,用户空间实现,代码规模较小,高度模块化

复杂度较高,依赖内核实现

较复杂,c++实现,功能较多

高性能

解除元数据瓶颈,并行化数据访问

元数据单点瓶颈

高性能,HPC领域表现卓越

数据分布均衡,并行化度高

扩展性

弹性hash代替元数据服务,线性扩展,可轻松扩展到数百PB量级,支持动态扩容

可增加存储server,不能增加MDS

高扩展性,容量可达数百PB,可在不打断任何操作的情况下,通过增加新的OSS来实现动态扩展

高扩展性,支持10-1000台server,支持TB到PB的扩展,当组件发生变化时(添加或删除),自动进行数据的重分布

可用性

多元数据服务设计,数据分布提供三种方式的分割:AFR、DHT、stripe,支持自动复制和自动修复

元数据+日志服务器,保障元数据server,运行时元数据放内存,可设置副本

元数据集群,可部署主备切换工作方式,无副本设计,OSS之间可利用共享存储实现自动故障恢复

元数据集群,没有单点故障,多数据副本,自动管理、自动修复,monitor监控集群中所有节点状态,且可有多个monitor保证可靠性

可管理性

部署简单,易于管理和维护,使用底层FS,ext3/zfs,客户端负载增加;提供管理工具,如卷的扩容、数据LB、目录配额及相关监控等

部署简单,提供web gui监控界面,元数据恢复,文件恢复,回收站功能,快照

部署复杂,需升级kernel等,提供管理工具,如设置目录stripe

部署较复杂,提供工具对集群进行监控管理,包括集群状态,各组件状态等

研发成本

用户空间实现,模块化堆栈式架构

用户空间实现,小规模

高,内核空间实现,且代码规模大

较高,代码规模大,功能多

适用性

适用以文件为对象的存储体系,适合大文件存储

小规模集群,元数据瓶颈,内存消耗大

大文件,HPC领域

 

NAS兼容

支持NFS、CIFS、HTTP、FTP、gluster原生协议,与POSIX标准兼容

支持CIFS、NFS,支持标准POSIX接口

支持CIFS、NFS,支持标准POSIX接口

支持CIFS、NFS,支持标准POSIX接口

采用指数

☆☆☆☆

☆☆☆

☆☆☆

☆☆

二、配置安装

1、环境

192.168.1.11     gluster-1-1

192.168.1.12     gluster-1-2

192.168.1.13     gluster-1-3

注意:hosts文件添加解析,时间同步,关闭iptables和SELinux,三台各加10G硬盘做存储数据。

2、下载gluster相关软件包

vim /etc/yum.repos.d/gfs.repo
http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64
依赖包:rpcbind libaio lvm2-devel 服务端:yum install glusterfs-server glusterfs glusterfs-cli glusterfs-fuse glusterfs-libs glusterfs-api 客户端:yum install glusterfs glusterfs-fuse glusterfs-libs
磁盘分区:mkfs.ext4 -L /brick1 /dev/sdb 分区、标签、格式化

3、部署

1)创建目录并启动服务
mkdir /brick1
/etc/init.d/glusterd start

2)添加gluster节点服务器
gluster peer probe gluster-1-2
gluster peer probe gluster-1-3

3)查看节点服务器
gluster  peer  status

4、创建卷

1)创建testvol卷(默认是哈希卷)
gluster volume create testvol gluster-1-1:/brick1/b1 哈希卷
gluster volume create gs2 replica 2 gluster-1-1:/brick1/b1  gluster-1-2:/brick1/b2 复制卷
2)启动卷 gluster volume start testvol 3)查看卷 gluster volume info

4)删除卷
gluster volume remove-brick testvol gluster-1-2:/brick1/b2

5、客户端测试

1)客户端挂载卷
mount -t glusterfs gluster-1-1:/testvol /mnt

2)测试
df -h   mount    等
touch  {1..9}.txt
rm 4.txt

6、节点操作

1)删除节点服务器
gluster peer detach gluster-1-2 不能删除自己

2)添加节点服务器
gluster peer probe gluster-1-2
gluster volume add-brick testvol gluster-1-2:/brick1/b2 (b2下面不能有文件)

3)重新LB,要在闲时做,分两步,先fix-layout将hash算法重分配,再将数据重分配
gluster volume rebalance testvol fix-layout start
gluster volume rebalance testvol start

4)查看rebalance平衡状态
gluster volume rebalance testvol status

7、删除卷

1)卸载挂载点
umount /mnt -lf
2)删除卷
gluster volume stop testvol
gluster volume delete testvol (卷删除后,内容还在)
rm -rf /brick1/b1 

8、恢复卷信息

1)卷信息的目录
ll /var/lib/glusterd/vols/testvol/

2)恢复命令
gluster volume sync gluster-1-1  all

9、其他

1)允许可信任客户端IP
gluster volume set testvol auth.allow 192.168.1.*

2)关闭gluster的nfs功能
ps -ef | grep nfs
gluster volume set testvol nfs.disable on

10、故障

1)复制卷数据不一致
故障现象:双副本卷数据出现不一致
故障模拟:删除其中一个brick数据
修复方法
  cat 文件
 触发自修复:遍历并访问文件
 find /mnt -type f -print0 | xargs -0 head -c1

2)glusterfs集群节点配置信息不正确
恢复复制卷 brick
 故障现象:双副本卷中一个brick损坏
 恢复流程
a、重新建立故障brick目录
  mkdir b2
b、设置扩展属性(参考另一个复制 brick)
 getfattr -d -m . -e hex b1/  获取扩展属性
 setfattr -n trusted.glusterfs.volume-id -v 0x1fa96ed0a0624ccf9e4f07cb9d84296f b2
 setfattr -n trusted.gfid -v 0x00000000000000000000000000000001  b2
 setfattr -n trusted.glusterfs.dht -v 0x000000010000000000000000ffffffff b2
c、重启 glusterd服务
 /etc/init.d/glusterd restart
 gluster volume stop testvol
 gluster volume start testvol
d、触发数据自修复
 find /mntpoint -type f -print0 | xargs -0 head -c1 >/dev/null


3)修复磁盘数据(在使用server1时宕机,使用server2替换,执行数据同步)
gluster volume replace-brick testvol server1:/brick1/b1 server2:/brick1/b1 commit force
gluster volume heal testvol full

  GlusterFS 客户端常用命令

 

创建卷

1、创建分布卷
 gluster volume create dis_vol  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2   gluster-1-3:/brick1/b3
 
2、创建复制卷
 gluster volume create rep_vol replica 2 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

3、创建条带卷
 gluster volume create str_vol  stripe 3 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

4、创建分布条带卷
 gluster volume create dir_str_vol stripe 4  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

5、创建分布复制卷
 gluster volume create dir_rep_vol replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

6、创建分布条带复制
 gluster volume create dis_str_rep_vol stri  2 repl 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

7、创建条带复制卷
 gluster volume create str_rep_vol stripe 2 replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

8、创建分散卷(不常用)
 gluster volume create disperse_vol disperse 4 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

资源定义

Brick: 存储的基本单元,表现为服务器上可信存储池的导出目录
Volume: 卷是bricks的逻辑集合
Cluster: 一组计算机组成的集群
Distributed File System: 允许多个客户端通过网络并发访问的文件系统
GFID: 每个GlusterFs中的文件或者目录都有一个128bit的数字标识称为GFID
glusterd: 管理守护进程需要运行在所有的提供授信存储池的服务器上
Namespace: 名称空间是被创建的一个抽象容器或环境用来保存唯一标识符号
Quorum: 设置一个可信的存储池中最多失效的主机节点数量
Quota: 允许通过目录或者卷设置对磁盘空间使用的限制
Posix: 可移植操作系统接口是IEEE定义的一系列相关api标准
Vol File: Vol文件是glusterfs进程使用的配置文件
Distributed: 分布卷
Replicated: 复本卷
Distributed Replicated: 分布式复制卷
Geo-Replication: 异地备份为站点通过局域网、广域网、互联网提供一个连续的异步的和增量复制服务
Metedata: 元数据定义为关于数据的数据描述信息,在GlusterFs没有专用的元数据存储内容
Extended Attributes: 扩展属性是文件系统的一个特性 
FUSE: 用户空间的文件系统是一个用于类Unix操作系统的可加载内核模块,以允许非特权用户在适用内核代码的情况下创建自己的文件系统。实现了在用户空间下运行文件系统代码

创建volume

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倍),兼顾分布式和复制式的功能。

 

 

posted on 2018-12-06 16:24  五光十色  阅读(2191)  评论(1编辑  收藏  举报

导航