GlusterFS Dispersed Volume(纠错卷)总结
https://blog.csdn.net/daydayup_gzm/article/details/52748812
一、概念
Dispersed Volume是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),类似于RAID5/6。通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率。
文件是被分割成大小相同的Chunk(块),而每个Chunk又被分割成fragment,而冗余信息的Fragment也随之生成,且同一个Fragment只会保存一个Brick上。
Redundancy是均匀分布存储在所有的Brick,磁盘的有效空间是Brick-Redundancy。
在数据恢复时,只要Brick-Redundancy个Fragment(可以是数据,也可以是冗余信息)可用,就能正常恢复数据,如下图所示。
二、特性
1、可配置的Redundancy
若Redundancy设置为0时,DispersedVolume等同于分布式卷;若Redundancy设置为brick/2时,DispersedVolume等同于复制卷。具体Redundancy的配置,根据具体的应用场景,在存储利用和可靠性做均衡选择。
官方经典的配置为:6个Brick配置2个Redundancy。
2、读写开销
读时,在数据未丢失下,一般不会去读取冗余信息,而是直接读取有效数据,额外开销为0。
写时,需要访问每一个可用的Brick,并且需要读取冗余信息,开销如下图所示。
三、创建disperse卷
创建规则1,同一个peer,只允许存在onebrick of a disperse set
1、创建disperse卷
#glustervolume create [disperse [<count>]] [redundancy <count>] [transporttcp | rdma | tcp,rdma]
disperse至少配置为2,redundancy配置至少为1,所以配置disperse卷最少需要3brick。
如果不指定disperse的数量,所有的volume被认为就是一个disperse集合。如果不指定redundancy数量,系统将根据disperse计算出最佳的redundancycount。
例1:以下这个命令,未具体配置disperse和redundancy数量,系统会提示用户,并计算出最佳配置(4 brick配置1 redundancy)。
#gluster volume create test-volume disperse 4 server{1..4}:/bricks/test-volume
例2:系统计算得到6 brick配置2 redundancy
#gluster volume create test-volume disperse 4 server{1..4}:/bricks/test-volume
2、创建Distributed Dispersed Volumes
#glustervolume create disperse <count> [redundancy <count>] [transport tcp| rdma | tcp,rdma]
要求disperse<count>必填,redundancy 数量和dispersedvolume相同。
四、Volume性能分析
根据官方文档的例子,对比经典分布式EC卷和分布式复制卷的几项性能。
硬盘环境如下:6台服务器,每台配置4个4TB的SATA磁盘(总容量为96TB),每个磁盘的IOPS为90,且每个磁盘只配置一个brick
1、【场景1】分布式+ Replica 2 卷
磁盘可利用空间:48TB
读IOPS:2160(6*4*90)
写IOPS:1080
Maximum failedbricks: 1
Maximum failedservers: 1
2、【场景2】分布式+ EC 6.2卷
经典模式,6个Brick中2个做冗余,如下图所示
磁盘可利用空间:64TB(96*4/6)
读IOPS:540
写IOPS:360
Maximum failedbricks: 2
Maximum failedservers: 2
五、个人总结
从上述的性能分析示例中,可以得到,相对于分布式复制卷,经典分布式EC卷的优点是较高的磁盘利用率和容错性,但是其IOPS性能下降较多。
若用户对磁盘利用率有较高期望的时,我们可以采用分布式EC集群搭建GlusterFS服务。
若用户对IOPS要求较高时,分布式复制GlusterFS集群是最优选择。
---------------------
作者:dream-wing
来源:CSDN
原文:https://blog.csdn.net/daydayup_gzm/article/details/52748812
版权声明:本文为博主原创文章,转载请附上博文链接!
GlusterFS Dispersed Volume(纠错卷)总结的更多相关文章
- k8s volume存储卷(四)
介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价,首先,kubernetes中的v ...
- k8s volume存储卷
k8s volume存储卷 介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价, ...
- Docker容器学习梳理 - Volume数据卷使用
之前部署了Docker容器学习梳理--基础环境安装,接下来看看Docker Volume的使用. Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker ...
- Docker学习笔记之docker volume 容器卷的那些事(二)
预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...
- glusterfs分布式复制扩容卷以及平衡卷
随着数据量的增长,需要扩容满足使用.今天测试下glusterfs磁盘扩容的具体步骤 1.扩容 之前用的2台计算机的分布式复制卷.需要同时之两个服务器增加一块磁盘并格式化,挂载并扩容 热添加磁盘 ech ...
- GlusterFS创建volume失败的解决方法(* or a prefix of it is already part of a volume)
问题描写叙述: 之前已经创建了一个replicated的volume gv0,replica=2,两个文件夹为:/test/data1和/test/data2,之后发现这两个文件夹不太合适,想在/te ...
- docker进阶篇(一) ---- Volume(数据卷)
引言 docker的镜像是由多个只读的文件系统叠加在一起形成的.当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层.这时如果修改正在运行的容器中已有的 ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)
引言 本文通过对卷类型的分析对比,来帮助读者选取生产环境最符合服务的挂载存储,命令可结合<glusterfs详解及kubernetes 搭建heketi-glusterfs>进行实验,下面 ...
随机推荐
- git pull时的冲突解决方式; git stash; git fetch
git fetch指令: https://www.yiibai.com/git/git_pull.html 发现远端有更新,git pull时,如果你本地分支修改了东西,导致git pull有冲突,失 ...
- [转帖]Linux中buff/cache内存占用过高解决办法
Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...
- golang使用json格式实现增删查改
需求和思路 在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中 ...
- 构建helm chart应用
使用helm命令创建基础目录 helm create t2cp [root@node04 ~]# tree t2cp t2cp ├── charts ├── Chart.yaml ├── templa ...
- ComPtr的介绍以及使用
ComPtr是为COM而设计的智能指针.它支持WindowsRT,也支持传统Win32.相比ATL里的CComPtr类,它有了一些提升. ComPtr包含在Windows 8.x SDK and Wi ...
- rabbitmq监控之消息确认ack
rabbitmq springboot ack 监控 一.测试环境 二.启动测试 一直以来,学习rabbitmq都是跟着各种各样的教程.博客.视频和文档,撸起袖子就是干!!!最后,也成功了. 当然,成 ...
- 学习网络BGP必备基础知识
外部网关协议,使用TCP作为传输层协议,支持CIDR,增量更新,距离矢量路由协议,无环路,路由策略丰富,可防止路由震荡,易于扩展. BGP概述 #BGP工作原理 之 报文类型 TCP三次握手 open ...
- python中configparser模块读取ini文件
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...
- JavaScript之控制标签属性
var pic=document.getElementById('pic'); var obtn=document.getElementById('btn'); console.log(pic.get ...
- koa2--session的实现
koa2原生功能只提供了cookie的操作,但是没有提供session操作.session只能自己实现或者通过第三方中间件实现. 如果session数据量很小,可以直接存在内存中 如果session数 ...