天天看点

关于GlusterFS的卷更多精彩内容可在文末扫码查看

更多精彩内容可在文末扫码查看

GlusterFS术语

Brick:GlusterFS中的存储单元,通常是一个受信存储池中的服务器的一个目录。可以通过主机名和目录名来标识,如'SERVER:EXPORT'。

Node:一个拥有若干brick的设备。

Volume:一组bricks的逻辑集合。

Client:挂载了GlusterFS卷的设备。

GlusterFS 的卷

GlusterFS根据需求支持不同类型的卷,有些卷适合扩展存储大小,有些卷适合提高性能,有些卷则两者兼而有之。

1. 分布式卷

分布式卷-Distributed Glusterfs Volume,是GlusterFS默认的卷,在创建卷时,如果不指定创建卷的类型,则默认会创建分布式卷。在分布式卷里,文件存储在卷里面的单个Brick中,没有冗余备份。

这种模式的卷扩缩容方便且成本低,但是由于没有数据的冗余备份,一旦出现故障,就容易引起数据的丢失,必须依靠底层硬件进行数据丢失保护。

关于GlusterFS的卷更多精彩内容可在文末扫码查看

创建分布式卷命令:

# gluster volume create NEW-VOLNAME [transport [tcp | rdma | tcp,rdma]] NEW-BRICK...
           

例如,使用 TCP 创建具有四个存储服务器的分布式卷:

# gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
           

查看卷信息:

# gluster volume infoVolume Name: test-volumeType: DistributeStatus: CreatedNumber of Bricks: 4Transpor
           

2. 复制卷

复制卷-Replicated Glusterfs Volume,避免了分布式卷中存在的数据丢失风险。

在复制卷中,数据会在每一个Brick上保存一份副本。如不需要那么多份副本数,则可以在创建卷的时候指定保存的副本数量。

复制卷需要至少2个Brick来创建具有 2 个副本的卷,或者至少需要3个Brick来创建包含 3 个副本的卷。

这种卷的一个主要优点是,即使一个块发生故障,仍然可以从其复制的块访问数据。复制卷在数据的可靠性冗余性都优于分布式卷。

关于GlusterFS的卷更多精彩内容可在文末扫码查看

创建复制卷命令:

# gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp |rdma | tcp,rdma]] NEW-BRICK...
           

例如,创建具有三个存储服务器的复制卷:

# gluster volume create test-volume replica 3 transport tcp \
      server1:/exp1 server2:/exp2 server3:/exp3
           

3. 分布式复制卷

在分布式复制卷-Replicated Glusterfs Volume中,文件分布在复制的Brick上。Brick数必须是副本计数的倍数。此外,我们指定Brick的顺序也很重要,因为相邻的Brick成为彼此的复制品。

例如,如果卷有8个Brick并且副本计数为 2,那么前2个Brick就会互备,然后是接下来的2个Brick,依此类推。此体积表示为 4x2。同样,如果有8个Brick并且副本计数为 4,那么前4个Brick就会互备,此时体积表示为 2x4 体积。

当需要保证数据具有冗余性和存储的可扩展性来保证数据的高可用时,可选用此种卷。

关于GlusterFS的卷更多精彩内容可在文末扫码查看

创建分布式复制卷命令:

# gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp | rdma | tcp,rdma]] NEW-BRICK...
           

例如,创建一个有6个Brick,且副本数为3的卷:

# gluster volume create test-volume replica 3 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
           

4. 分散卷

分散卷-Dispersed Glusterfs Volume基于纠删码,它将文件的编码数据条带化,切割成若干份,并加了一些冗余,存储在跨卷中的多个Brick里。

分散卷具有可配置的可靠性水平,且空间浪费最小。创建卷时,可以指定卷中冗余Brick的数量。冗余的Brick数量决定了可以丢失多少块Brick而不会影响卷的操作。

关于GlusterFS的卷更多精彩内容可在文末扫码查看

创建分散卷的命令:

# gluster volume create test-volume [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport tcp | rdma | tcp,rdma] <NEW-BRICK>
           

例如,创建一个冗余级别为 1 的三个节点分散卷 (2 + 1):

# gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3
           

5. 分布式分散卷

分布式分散卷-Distributed Dispersed Glusterfs Volume与分布式复制卷是相似的,只是使用的分散子卷,而不是复制子卷。Brick的数量必须是第一个子卷的倍数,且必须至少有3个Brick。

这种卷能支持方便扩缩容卷的大小并将负载分布在各个Brick上。

关于GlusterFS的卷更多精彩内容可在文末扫码查看

创建分布式分散卷的命令:

# gluster volume create [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport tcp | rdma | tcp,rdma] <NEW-BRICK>
           

例如,创建一个冗余级别为 1、2 x (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数量,或者<COUNT>参数缺失,则整个卷将被视为由命令行中枚举的所有Brick组成的单个分散集;

如果未指定redundancy冗余数量,则会自动将其计算为最佳值。如果此值不存在,则假定为“1”,并显示一条警告消息:

There isn't an optimal redundancy value for this configuration. Do you want to create the volume with redundancy 1 ? (y/n)
           

在自动计算冗余且不等于“1”的所有情况下,将显示一条警告消息如:

# gluster volume create test-volume disperse 6 server{1..6}:/bricks/test-volume
The optimal redundancy for this configuration is 2. Do you want to create the volume with this value ? (y/n)
           

因为冗余必须大于0,并且Brick的总数必须大于2*冗余。所以分散卷必须至少有3个Brick。

相关链接:

本文内容梳理自GlusterFS官网:

https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/