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>进行实验,下面 ...
随机推荐
- Install Teamviewer on 14.04? [repost]
Ref: http://askubuntu.com/questions/453157/how-to-install-teamviewer-on-14-04 TeamViewer 是一款优秀的跨平台免费 ...
- matlab循环中显示figure时窗口跳动
在Matlab中,当在一个循环内部利用figure显示图片时,有时候会出现窗口跳动,尤其是两个显示器的时候, 具体就是每次循环中显示的figure的位置都出现在屏幕的不同位置,导致看起来灰常不爽 go ...
- webStrom中React语法提示,React语法报错处理
1,webStrom中React语法报错 ①, 取消Power Save Mode的勾选 File——Power Save Mode ②,webstorm开发react-native智能提示 随便在一 ...
- 【LEETCODE】67、分治递归,medium&hard级别,题目:215、312
我被这些题整哭了,你呢??? 日了狗啊...... 好难啊.... 按照这个样子搞,不用找工作了,回家放牛去....... package y2019.Algorithm.divideandconqu ...
- 配置 web 内容的访问
在您的 system1 上的 web 服务器的 DocumentRoot 目录下,创建一个名为 private 的目录,要求如下: 1.从 http://server.group8.example.c ...
- 小程序canvas绘制base64数据格式图片
翻了微信小程序官方文档,看了看画板drawImage的用法,官方对所要绘制的图片资源路径并没有很详细,模棱两可,没说支持什么格式的路径.今天我就试一下支不支持base64格式的图片 随便找张图片从网上 ...
- 《JAVA高并发编程详解》-Thread start方法的源码
Thread start方法的源码:
- MVC的Views中使用递归生成Html【转】
在开发过程中往往会有一个需求,就是将一个树状的数据结构在视图中表示出来.例如最传统的多级分类,系统中有一系列根分类,每个分类中又带有一些子分类,而我们的目标便是在页面上生成一个由ul和li嵌套组成的H ...
- Python DBUtils 连接池对象 (PooledDB)
数据处理框架用到 mysql, 需要在多进程中的多线程中使用 mysql 的连接 使用到的模块: DBUtils 实现: 使用 DBUtils 中的 PooledDB 类来实现. 自己写一个类, 继承 ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...