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(纠错卷)总结的更多相关文章

  1. k8s volume存储卷(四)

    介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价,首先,kubernetes中的v ...

  2. k8s volume存储卷

    k8s volume存储卷   介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价, ...

  3. Docker容器学习梳理 - Volume数据卷使用

    之前部署了Docker容器学习梳理--基础环境安装,接下来看看Docker Volume的使用. Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker ...

  4. Docker学习笔记之docker volume 容器卷的那些事(二)

    预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...

  5. glusterfs分布式复制扩容卷以及平衡卷

    随着数据量的增长,需要扩容满足使用.今天测试下glusterfs磁盘扩容的具体步骤 1.扩容 之前用的2台计算机的分布式复制卷.需要同时之两个服务器增加一块磁盘并格式化,挂载并扩容 热添加磁盘 ech ...

  6. GlusterFS创建volume失败的解决方法(* or a prefix of it is already part of a volume)

    问题描写叙述: 之前已经创建了一个replicated的volume gv0,replica=2,两个文件夹为:/test/data1和/test/data2,之后发现这两个文件夹不太合适,想在/te ...

  7. docker进阶篇(一) ---- Volume(数据卷)

    引言 docker的镜像是由多个只读的文件系统叠加在一起形成的.当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层.这时如果修改正在运行的容器中已有的 ...

  8. Docker学习笔记之docker volume 容器卷的那些事(一)

    预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...

  9. GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)

    引言 本文通过对卷类型的分析对比,来帮助读者选取生产环境最符合服务的挂载存储,命令可结合<glusterfs详解及kubernetes 搭建heketi-glusterfs>进行实验,下面 ...

随机推荐

  1. Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch

    Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch,运行Hypergraph Neural Networks(HGNN) https://github.c ...

  2. LRU缓存实现

    LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高” 在java中可以采用Linke ...

  3. C/C++ 每日一题

    超长正整数的相加,题目链接:https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId #include<al ...

  4. Golang 读写文件

    读文件 func ReadFile_v1(filename string) { var ( err error content []byte ) fileObj,err := os.Open(file ...

  5. vue css module

    步骤 module <style> -> <style module> class='header' -> :class='$style.header' <t ...

  6. HBase 系列(三)—— HBase 基本环境搭建

    一.安装前置条件说明 1.1 JDK版本说明 HBase 需要依赖 JDK 环境,同时 HBase 2.0+ 以上版本不再支持 JDK 1.7 ,需要安装 JDK 1.8+ .JDK 安装方式见本仓库 ...

  7. SessionChange

    protected override void OnSessionChange(SessionChangeDescription changeDescription) { System.IO.File ...

  8. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  9. nginx+rsync实现本地yum源以及公网yum源

    1.配置nginx的autoindex模块,开启目录浏览功能 2.使用rsync同步公网源上的软件包,至本地目录中 3.配置客户端指向即可 1.nginx提供目录浏览功能 [root@xuliangw ...

  10. 重要知识点angularjs $http.get 和 $http.post 传递参数(!!!格式不一样!!!!)

    $http.get请求数据的格式 $http.get(URL,{ params: { "id":id } }) .success(function(response, status ...