Gluster卷属于可信存储池中服务器的集合,每个服务器上的glusterd守护进程管理brick进程(glusterfsd),该进程会与xfs文件系统存在交互。挂载卷的客户端进程和bricks进程的栈中加载了转换器。将来自应用程序的I/O通过这些转换器路由到不同的bricks。
一、卷类型
GFS支持不通类型的卷,一些卷对扩展性友好,一些卷对性能友好,一些卷能兼顾性能和扩展。
1、Distributed Glusterfs Volume(分布式卷)
创建卷的时候如果不指定卷类型默认采用该类型。该类型下文件会被分发到卷中不同的bricks。所以文件有可能被分发到brick1或者brick2,但不会在两个brick中均存在,因此没有数据冗余。这种类型的卷能简单并廉价的进行扩展。这也就意味着brick的损坏会导致整个数据的丢失,且需要依赖硬件底层的数据保护机制。
创建卷示例-分布式卷4个节点通过TCP:
- 创建
gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
- 卷信息
gluster volume info
2、Replicated Glusterfs Volume(副本卷)
该部分主要避免分布式卷数据丢失的问题,该卷数据是维护在所有的bricks上。卷中副本的数目可以由客户端在创建卷的时候决定。所以如果想实现2副本需要至少2个bricks,如果需要实现3副本则至少需要3个bricks。在该卷下,即便其中一个brick损坏,数据仍可被访问,这样的卷用于更好的可靠性和数据冗余。
创建卷示例-创建副本卷
- 创建卷
gluster volume create test-volume replica 3 transport tcp \
server1:/exp1 server2:/exp2 server3:/exp3
3、Distributed Replicated Glusterfs Volume(分布式副本卷)
在该卷中,文件分布在bricks的副本中,bricks的数量必须是副本数的倍数。此外,我们指定砖块的顺序也很重要,因为相邻的brick会成为彼此的副本。如果有8个brick,开始的两个成为彼此的副本,后面的按顺序依次生效。
创建卷示例-6个节点的分布式副本卷:
- 创建卷
gluster volume create test-volume replica 3 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
4、Dispersed GFS卷(分散卷)
Dispersed依赖于纠删码,他对文件编码数据进行条带化,在卷中的不同的bricks中同时附带相应的冗余配置。您可以使用分散的卷以获得可配置的可靠性级别,同时减少空间浪费。卷中冗余块的数量可以由客户端在创建卷时决定。冗余bricks决定了在不中断卷操作的情况下可以损失多少bricks。
创建卷示例-创建dispersed卷:
- 创建卷:
gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3
5、Distributed Dispersed Glusterfs Volume(分布式分散卷)
Distributed Dispersed Glusterfs Volume 相当于Replicated Glusterfs Volume,但是使用dispersed subvolumes而不副本卷。brick的数量必须是第一个subvol的倍数。该类型的卷容易进行卷的扩展和均摊负载到不同的多个bricks。
创建卷示例-6个节点的distributed dispersed 卷冗余级别1,2*(2+1)=6:
- 创建卷:
gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
注:
- 可以通过指定分散集(disperse set)中的brick数量,或指定冗余brick的数量,或同时指定两者来创建分散卷。
- 如果分散集未指定,或者没有COUNT值,那么整个卷将被视为一个分散集,其组成由命令行中枚举的bricks。
- 如果没有指定冗余,它会自动计算为最优值。如果该值不存在,则假定它为’1’,并显示一条警告消息。
- 在所有自动计算冗余且不等于’1’的情况下,都会显示一条警告消息。
- 冗余度必须大于0,且brick总数必须大于2 *冗余。这意味着一个分散卷必须至少有3bricks。