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 [
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
要求disperse
相对于分布式复制卷,经典分布式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