GlusterFS 之 Dispersed Volume(纠错卷)

Dispersed Volume是基于ErasureCodes(纠错码)的一种新类型的卷,类似RAID5/6。这种卷通过配置冗余Redundancy级别来提高可靠性,在保证较高可靠性的同时还可以提升物理存储空间的利用率。

文件被分割成大小相同的单位:Chunk(块),每个块又被分割成fragment,而冗余信息的Fragment也随之生成,且同一个Fragment只会保存在一个Brick上。

Redundancy是均匀分布存储在所有的Brick,磁盘的有效空间是Brick-Redundancy。

在数据恢复时,只要Brick-Redundancy个Fragment(可以是数据,也可以是冗余信息)可用,就能正常恢复数据,如下图所示。

 

 

 

一. 特性

1.  可配置的Redundancy

若Redundancy设置为0时,DispersedVolume等同于分布式卷;若Redundancy设置为brick/2时,Dispersed Volume等同于复制卷。具体Redundancy的配置,根据具体的应用场景,在存储利用和可靠性做均衡选择。

官方经典的配置为:6个Brick配置2个Redundancy。

2. 读写开销

读时,在数据未丢失下,一般不会去读取冗余信息,而是直接读取有效数据,额外开销为0。

写时,需要访问每一个可用的Brick,并且需要读取冗余信息,开销如下图所示。

二. 创建卷

创建规则1,同一个peer,只允许存在one brickof a disperse set。

1. 创建disperse卷

#gluster volume create [disperse []][redundancy ] [transport tcp | rdma | tcp,rdma]

disperse至少配置为2,redundancy配置至少为1,所以配置disperse卷最少需要3brick。

如果不指定disperse的数量,所有的volume被认为就是一个disperse集合。如果不指定redundancy数量,系统将根据disperse计算出最佳的redundancy count。

例1:以下这个命令,未具体配置disperse和redundancy数量,系统会提示用户,并计算出最佳配置(4  brick配置1  redundancy)。

#glustervolume create test-volume disperse 4 pc{1..4}:/bricks/test-volume

2. 创建Distributed Dispersed Volumes

#glustervolume create disperse [redundancy ] [transport tcp|rdma | tcp,rdma]

要求disperse必填,redundancy 数量和dispersed volume相同。

 

总结

相对于分布式复制卷,经典分布式EC卷的优点是较高的磁盘利用率和容错性,但是其IOPS性能下降较多。

若用户对磁盘利用率有较高期望的时,我们可以采用分布式EC集群搭建GlusterFS服务。

若用户对IOPS要求较高时,分布式复制GlusterFS集群是最优选择。

实例:

创建disperse卷:

[root@pc3home]# gluster

gluster>volume create test-volume disperse 4 pc1:/home/t1 pc2:/home/t1 pc3:/home/t1pc4:/home/t1 force

Thereisn't an optimal redundancy value for this configuration. Do you want to createthe volume with redundancy 1 ? (y/n) y

volumecreate: test-volume: success: please start the volume to access data

gluster>volume start test-volume

volumestart: test-volume: success

gluster>volume status

Statusof volume: test-volume

Glusterprocess                             TCPPort  RDMA Port  Online Pid

------------------------------------------------------------------------------

Brickpc1:/home/t1                         49153     0          Y       9005

Brickpc2:/home/t1                         49153     0          Y      8724

Brickpc3:/home/t1                         49152     0          Y       22153

Brickpc4:/home/t1                         49153     0          Y       9281

Self-healDaemon on localhost              N/A       N/A        Y      22173

Self-healDaemon on pc1                    N/A       N/A        Y      9026

Self-healDaemon on pc2                    N/A       N/A        Y      8744

Self-healDaemon on pc4                    N/A       N/A        Y      9301

TaskStatus of Volume test-volume

------------------------------------------------------------------------------

Thereare no active volume tasks

下面把卷挂在到pc3:/mnt/test-disperse上

[root@pc3home]# mkdir /mnt/test-disperse

[root@pc3home]# mount -t glusterfs pc1:/test-volume /mnt/test-disperse

[root@pc3home]# df -h

文件系统             容量  已用  可用 已用% 挂载点

/dev/mapper/cl-root   50G  11G   40G   22% /

devtmpfs             852M     0 852M    0% /dev

tmpfs                868M  100K 868M    1% /dev/shm

tmpfs                868M  9.0M 859M    2% /run

tmpfs                868M     0 868M    0% /sys/fs/cgroup

/dev/sda1           1014M  174M 841M   18% /boot

/dev/mapper/cl-home   65G 889M   64G    2% /home

tmpfs                174M     0 174M    0% /run/user/0

tmpfs                174M  20K  174M    1% /run/user/1000

pc1:/test-volume      37G  12G   25G   33% /mnt/test-disperse

在/mnt/test-disperse上创建文件

[root@pc3test-disperse]# ls

[root@pc3test-disperse]# touch file1

[root@pc3test-disperse]# ls

file1

[root@pc3test-disperse]# clush -a ls /home/t1/

pc2:file1

pc4:file1

pc1:file1

[root@pc3test-disperse]# ls /home/t1

file1

 

 

 

 

 

 

引用:

hwwtp://blog.csdn.net/daydayup_gzm/article/details/52748812

你可能感兴趣的:(Glusterfs学习笔记)