红帽存储管理2――volume类型与创建
三、volume的管理
红帽存储服务器管理的对象主要就是volume,volume是brick逻辑上的集合,这种集合的方法也有多种,不同的集合方式代表不同的volume类型,主要有七大类型
1、volume类型
Distributed
分布式:将文件平均分配到不同的bricks中(以文件个数平均分配),如果一个volume只包含1个brick,也叫做distributed volume,所以distributed volume至少要包含1个brick
Replicated
复制式 将文件以复制的性质保存在不同的bricks中,由于文件是以复制的形式存在,那么relicated volume 至少需要2个brick,如果一个文件要以复制的形式保存在2个brick中,叫two-way replicated volume,如果是保存在3个brick中,叫three-wayreplicated volume,那么three-way至少要有3个brick
Striped
片段式 将文件分成等长度的片段保存在不同的bricks中。Stripedvolume要求至少有2个brick,首先将一个文件按照指定的长度分成若干个文件片段,然后将这些文件片段分布的存储在不同的brick中,见下图,在brick中,不同片段还是以原文件的文件名形式存在的,但是只是文件的一部分,不是全部。
Distributed replicated volume
将分布式和复制式结合在一起,之前说过,distribute至少需要1个brick,replicated至少需要2个brick,那么一个distributed replicated volume则至少需要1×2=2个brick,这种也可以这样叫:distributed×replicated=1×2,那么上面图6.2就是一个1×2的distributedreplicated volume,图6.3就是一个1×3的distributed replicated volume。下图就是一个2×2的distributedreplicated volume。存储过程:首先在创建2×2的distributed replicated volume的时候就已经将4个brick划成两个部分了(distributed=2),然后每一个部分中有两个brick,这两个brick是(two-way)复制型的,存放相同的文件。那么如果我们有两个文件,首先将两个文件分布成两个部分(distributed=2),然后将每一个文件都复制成两个文件(replicated=2),然后分别存入不同的brick中。图6.5是一个2×3的distributed replicated volume。
Distributed striped volume
将分布式和片段式结合在一起,distributed至少需要1个brick,striped至少需要2个brick,1个Distributed striped volume则至少需要1×2=2个brick,图6.6就是一个1×2的distributed stripedvolume。下图是一个2×2的distributed striped volume。存储过程:首先在创建2×2的distributed stripedvolume的时候就已经将4个brick划成两个部分了(distributed=2),然后每一个部分中有两个brick,这两个brick是striped=2片段式存储型的,假如有两个文件要存入这个volume中,首先将这两个文件分成两块(distributed=2),然后将每一个文件分成等大小的片段,然后分别存入brick中。
Striped replicated volume
将片段式和复制式结合起来,下图是一个2×2的striped replicated volume,存储数据时,先将文件拆成多个片段,将这些片段按照规则分成两部分(striped=2),然后将这两部分分别复制(replicated=2)存入不同brick中。
Distributed striped replicated volume
上图6.8也可以说是1×2×2的distributedstriped replicated volume,数据存储先分布再片段再复制。下图就是一个2×2×2的distributed striped replicated volume,它需要2×2×2=8个brick。
总结
其实三种基本类型都是以distributed为基础的
distributed模式是分布前不对文件做任何操作
replicated模式是将文件复制成多个文件再做分布操作
striped模式是将文件拆分成多个片段再降片段做分布操作
2、Volume创建与管理
创建volume之前我们要清楚我们要创建的volume类型,此类型需要多少个brick,brick的大小等,我们都要事先规划好。
创建volume的基本命令(也就是创建distributed型volume)
gluster volume create VOLUME_NAME BRICK_NAME…
举例:创建一个含有2个brick的distributedvolume
[root@rhs0 ~]# gluster volume create new_volume [transporttcp|rdma|tcp,rdma] rhs0:/bricks/brick1/brick/ rhs1:/bricks/brick11/brick volume create: new_volume: success: please start the volume to accessdata [root@rhs0 ~]# gluster volume info Volume Name: new_volume Type: Distribute Status: Created Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: rhs0:/bricks/brick1/brick/ Brick2: rhs1:/bricks/brick11/brick
创建replicated型volume
基本命令
gluster volume create VOLUME_NAME [transport tcp|rdma|tcp,rdma] replicaCOUNT BRICK_NAME…
创建一个包含2个brick的two-wayreplicated volume
[root@rhs0 ~]# gluster volume create rep replica 2 \ > rhs0:/bricks/brick1/brick/ \ > rhs1:/bricks/brick11/brick volume create: rep: success: please start the volume to access data [root@rhs0 ~]# gluster volume info Volume Name: rep Type: Replicate Volume ID: d7fdb75b-9451-41f7-93f0-48df06b103a7 Status: Created Snap Volume: no Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: rhs0:/bricks/brick1/brick Brick2: rhs1:/bricks/brick11/brick Options Reconfigured: performance.readdir-ahead: on snap-max-hard-limit: 256 snap-max-soft-limit: 90 auto-delete: disable
创建striped型volume的基本命令
gluster volume create VOLUME_NAME [transport tcp|rdma|tcp,rdma] stripe COUNTBRICK_NAME
与创建replicated volume相比,只是将replica COUNT 改成了stripe COUNT,其他的不变。
那么我们如果要创建混合型的volume,怎么配置呢?
我们已经知道了,volume默认是distributed型的,所以我们只要在replicated或者striped基础上保证添加所需要的brick数量就可以了,例如我们要创建2×2的distributedreplicated volume我们只要在创建replicated volume命令基础上添加4个brick就会自动变成distributedreplicated volume,此时即为2×2的distributedreplicated volume,如果我们添加6个brick,就成为3×2的distributedreplicated volume。同理distributed stripedvolume也是一样的。
举例:
[root@rhs0 ~]# gluster volume create rep replica 2 \ > rhs0:/bricks/brick1/brick/ \ > rhs1:/bricks/brick11/brick/ \ > rhs2:/bricks/brick21/brick/ \ > rhs3:/bricks/brick31/brick/ volume create: rep: success: please start the volume to access data [root@rhs0 ~]# gluster volume info Volume Name: rep Type: Distributed-Replicate Volume ID: d7fdb75b-9451-41f7-93f0-48df06b103a7 Status: Created Snap Volume: no Number of Bricks: 2 x 2 = 4 Transport-type: tcp Bricks: Brick1: rhs0:/bricks/brick1/brick Brick2: rhs1:/bricks/brick11/brick Brick2: rhs2:/bricks/brick21/brick Brick2: rhs3:/bricks/brick31/brick Options Reconfigured: performance.readdir-ahead: on snap-max-hard-limit: 256 snap-max-soft-limit: 90 auto-delete: disable
创建striped replicated volume
基本命令
gluster volume create VOLUME_NAME [transport tcp|rdma|tcp,rdma] stripe COUNTreplica COUNT BRICK_NAME…
如果是2×2的striped replicatedvolume,那么COUNT值都为2,BRICK_NAME要有4个brick。在这里我就不实际操作了。
创建distributed stripedreplicated volume
在striped replicated volume命令基础上加上足够数量的brick,就会自动成为distributed stripedreplicated volume,上面我们加4个brick就是2×2的striped replicatedvolume,那么如果是加上8个brick就会自动成为2×2×2的distributed stripedreplicated volume
Distributed、replicated、striped三种类型的特点
Distributed只是根据文件个数来平均分布文件,但是如果一个服务器宕机,数据将丢失
Replicated将文件复制之后存于多个服务器中,可以降低宕机带来数据丢失的风险
Striped主要是应用于含有较多大文件的环境中,可以弥补distributed以文件个数来分布的缺点
创建volume中需要注意的问题
1、服务器必须开启glusterd服务
2、服务器必须在可信任存储池中
3、Volume中添加的brick是brick挂载点下的一个目录
4、同一个brick只能出现在一个volume中
5、如果创建volume失败,所添加的brick需要重新卸载,然后重新格式化,格式化的时候要加-f强制格式化,然后重新挂载,然后在挂载点创建子目录,然后才能重新使用brick。
具体步骤:
[root@rhs0~]# umount /bricks/brick1 [root@rhs0~]# mkfs.xfs �CI size=512 /dev/vg_bricks/brick1 �Cf [root@rhs0~]# mkdir /bricks/brick1 �Cp [root@rhs0~]# mount �Ca [root@rhs0~]# mkdir /bricks/brick1/brick
另外一种方法是先卸载brick,再移除lv,再使用脚本创建一个新brick