学习GlusterFS(一)
一、概述
1、GlusterFS是集群式NAS存储系统,分布式文件系统(POSIX兼容),Tcp/Ip方式互联的一个并行的网络文件系统,通过原生 GlusterFS 协议访问数据,也可以通过 NFS/CIFS 协议访问数据,没有元数据服务器,实现整个系统的性能、可靠性和稳定性。
2、GlusterFS 常见术语
名称 | 解释 |
---|---|
Brick | 最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用。 |
Volume | 一个卷。在逻辑上由N个bricks组成。 |
FUSE | Unix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统。 |
Glusterd | Gluster management daemon,要在trusted storage pool中所有的服务器上运行。 |
POSIX | 一个标准,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,不具有容错能力);
复制卷(replicated volume,生产常用,文件同步复制到多个brick上,文件级raid1,具有容错能力,w性能下降r性能提升);
条带卷(striped volume,不建议使用,单个文件分布到多个brick上,支持超大文件,类似raid0,rr方式round-robin,通常用于HPC(high performance compute)中的超大文件(>10G的单个文件)及高并发环境(多人同时访问同一个文件));
复合卷:
哈希复制卷(distributed replicated volume,生产常用,同时具有哈希卷和复制卷的特点);
哈希条带卷(distributed striped volume);
复制条带卷(replicated striped vlume);
哈希复制条带卷(distributed replicated striped volume);
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 客户端常用命令
命令 | 功能 |
---|---|
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 | 设定卷配额 |
创建卷
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倍),兼顾分布式和复制式的功能。
学习GlusterFS(一)的更多相关文章
- 学习GlusterFS(九)
环境说明: 3台机器安装 GlusterFS 组成一个集群. 使用 docker volume plugin GlusterFS 服务器: 10.6.0.140 10.6.0.192 10.6.0.1 ...
- 学习GlusterFS(八)
GlusterFS集群创建 一.简介 GlusterFS概述 Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够 ...
- 学习GlusterFS(七)
初始环境: 系统环境:centos73.10.0-514.26.2.el7.x86_64 机器数量:两台 硬盘:至少两块,一块为系统盘,另一块留作他用 命名规则:node1 node2 IP规划:19 ...
- 学习GlusterFS(六)
一.GlusterFS概述 分布式文件系统由来 在介绍之前我们先来看下文件系统及典型的NFS文件系统. 计算机通过文件系统管理,存储数据的.而现在数据信息时代中人们可获取数据成指数倍的增长,单纯通过增 ...
- 学习GlusterFS(五)
一,分布式文件系统理论基础 1.1 分布式文件系统出现 计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量 ...
- 学习GlusterFS(四)
基于 GlusterFS 实现 Docker 集群的分布式存储 以 Docker 为代表的容器技术在云计算领域正扮演着越来越重要的角色,甚至一度被认为是虚拟化技术的替代品.企业级的容器应用常常需要将重 ...
- 学习GlusterFS(三)
glusterfs,GNU cluster file system,创始人Anand Babu Periasamy,目标:代替开源Lustre和商业产品GPFS,glusterfs是什么: cloud ...
- 学习GlusterFS(二)
环境准备 3台机器,每个机器双网卡,每个机器还需要额外添加1个10GB的磁盘用于测试 机器系统版本是centos6.6 1 2 3 4 5 [root@gluster-1-1 ~]# uname -r ...
- GlusterFS最佳实践
标签(linux): glusterfs 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 今天我们来从实战中学习glusterfs 环境准备: gluster-s ...
随机推荐
- xlrd》操作excel 出现的问题:File "D:\python37\lib\site-packages\xlrd\formula.py", line 1150, in evaluate_name_formula assert len(tgtobj.stack) == 1
xlrd>操作excel 出现的问题 报错如下: D:\python37\python.exe D:/testWang/waimai/tools/get_excelData.py*** for ...
- One-Hot编码(转)
机器学习:数据预处理之独热编码(One-Hot) 前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女 ...
- 实现同比、环比计算的N种姿势
在做数据分析时,我们会经常听到同比.环比同比的概念.各个企业和组织在发布统计数据时,通常喜欢用同比.环比来和之前的历史数据进行比较,用来说明数据的变化情况.例如,统计局公布2022年1月份CPI同比增 ...
- java中的List接口(ArrayList、Vector、LinkedList)
一.List接口有三个常用的集合(ArrayList.Vector.LinkedList) ArrayList注意事项 ArrayList底层是用数组来实现数据存储的 底层是 transient Ob ...
- yum 安装时报错 Existing lock /var/run/yum.pid: another copy is running as pid 3192.
yum 安装时报错 由于yum的时候意外退出造成的,虽然也给出提示当前占用进行的id,但是执行kill -9 强制杀死进程后,情况没能改变. 解决方法:rm -f /var/run/yum.pid然 ...
- LGP5992题解
贪心和DP一样,上来先找规律 考虑一种特殊情况:菊花图. 很容易发现这是小学数学题,排序后取中点. 来考虑另一种情况:深度为 3 的完全二叉树. 假设这颗完全二叉树的节点编号是按照线段树编号的,给定权 ...
- centos5 源失效解决办法
将源文件备份 [base] name=CentOS-$releasever - Base failovermethod=priority baseurl=http://vault.centos.org ...
- Seata XA 模式示例分析
@ 目录 1 下载示例 2 示例结构 3 业务服务 business-xa 3.1 模块结构 3.2 Controller 层 3.3 Service 层 3.4 stock Feign 客户端 3. ...
- CSS自定义属性与前端页面的主题切换
基于级联变量的CSS自定义属性,已经出来很多年了. 虽然有less.sass等预处理器大行其道,但是自定义属性也有它的特点和用处,诸如在js中读写.作用域设置等等,在处理UI主题切换等功能上也发挥着很 ...
- Chartjs 初体验
I 官网 https://www.chartjs.org/ https://chartjs.bootcss.com/ 中文网址 简单易上手,支持的Chart 类型:折线图,饼图,柱状,雷达图,网状图 ...