租户的跨 Zone 资源管理是一种通过调整资源池的 Zone 分布范围来调整租户每一份数据的副本数,进而改变租户数据容灾能力的资源管理方式。
对资源池的 ZONE_LIST 支持如下集中类型的操作:
ZONE_LIST变更分裂资源池
合并资源池
ZONE_LIST 的变更
调整资源池的 ZONE_LIST,可以调整资源池在 Zone 维度的使用范围,从而调整租户数据在 Zone 维度的服务范围。
调整资源池 ZONE_LIST 的示例语句如下:
obclient> CREATE RESOURCE POOL pool1 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> CREATE RESOURCE POOL pool2 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');
obclient> ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2');
ZONE_LIST 的变更可以分为两类,即扩大 Zone 维度的使用范围和缩小 Zone 维度的使用范围。示例语句 ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4'); 是扩大 Zone 维度使用范围,示例语句 ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2'); 是缩小 Zone 维度使用范围。
扩大 Zone 维度的使用范围
扩大 Zone 维度的使用范围通常使用在以下两个场景中:
场景 1 :租户副本数升级,以提高租户的可用性。
场景 2:数据从一个机房(Zone)搬迁到另一个机房(Zone)时,在新机房中进行数据补全。
下面通过示例介绍这 2 种使用场景:
场景 1:副本数升级示例
需要将租户
tt从 3 副本升级为 5 副本,数据范围从'z1', 'z2', 'z3'扩大到'z1','z2','z3','z4','z5',以便提高租户的可用性。obclient>CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient>CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient>ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据 obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4','z5'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4,F@z5";//在 z5 上为租户 tt 增加数据场景 2:在新机房中补全数据
新机房内的数据补全是数据在机房内搬迁的一个子操作,假设租户期望将机房
z1的数据搬迁到z4,则新机房的数据补全的具体操作如下:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); // 以下为新机房中数据补全子操作 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据 // 接着再从旧机房中删除数据的子操作可以参考缩小 Zone 维度的使用范围以上操作帮助租户先在
z4机房内添加数据,完成了数据在机房间搬迁过程中,在新机房补全数据的操作。
缩小 Zone 维度的使用范围
缩小 Zone 维度的使用范围通常使用在以下 2 个场景中:
场景 1:租户副本数降级,以减少租户的存储资源使用量。
场景 2:数据从一个机房(Zone)搬迁到另一个机房(Zone)时,在旧机房中删除数据。
下面通过示例介绍这 2 种使用场景:
场景 1:副本数降级示例
需要将租户 tt 从 5 副本降级为 3 副本,数据范围从
'z1','z2','z3','z4','z5'缩小到'z1','z2','z3'。减少租户存储资源使用量。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1','z2','z3','z4','z5'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z5 上为租户 tt 删除数据 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); // 为资源池删除 z5 obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3";//在 z4 上为租户 tt 删除数据 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3'); // 为资源池删除 z4场景 2:从旧机房中删除数据示例
旧机房内的数据删除是数据在机房内搬迁的另一个子操作,假设租户期望将机房
z1的数据搬迁到z4。则旧机房的数据删除的具体操作如下:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); // 以下为新机房中数据补全子操作 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//在 z4 上为租户 tt 增加数据 // 以下为旧机房中数据删除子操作 obclient> ALTER TENANT tt locality="F@z2,F@z3,F@z4";//先在 z1 上为租户 tt 删除数据 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z2','z3','z4');上面的操作帮助租户先在
z4机房内添加数据,然后在z1机房内删除数据,将租户数据从z1搬迁到z4。
分裂资源池
分裂资源池操作可将一个资源池分裂为多个资源池,分裂资源池操作的基本语法和示例如下:
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 SPLIT INTO ('pool10','pool11','pool12') ON ('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool10 UNIT='uc1';
obclient> ALTER RESOURCE POOL pool11 UNIT='uc2';
obclient> ALTER RESOURCE POOL pool12 UNIT='uc3';
分裂资源池的操作主要应用在如下场景中:资源池 pool1 的当前使用范围是 z1、z2、z3,而资源配置规格均为 uc0,由于 z1、z2、z3 等 3 个 Zone 上的物理机规格可能有较大差别,3 个 Zone 内如果使用同一个资源规格 uc0,无法充分利用每个 Zone 内物理机的资源。分裂资源池可以将一个多 Zone 资源池分裂为多个单 Zone 资源池,再为每个单 Zone 资源池配置各自的资源配置规格。
在该示例中,将一个 'z1','z2','z3' 跨度的多 Zone 资源池pool1 分裂成三个单 Zone 的资源池 pool10(ZONE_LIST 为 z1,并继承 pool1之前在 z1 上的资源单元)、pool11(ZONE_LIST 为 z2,并继承 pool1 之前在 z2 上的资源单元)和 pool12 (ZONE_LIST 为 z3,并继承 pool1 之前在 z3 上的资源单元)。分裂完成后,pool10、pool11、pool12 的默认资源配置仍然为 pool1 的资源配置 uc0,用户可根据各 Zone 的资源情况自行调整各新资源池的资源配置。
合并资源池
合并资源池操作可以将多个资源池分裂为一个资源池,合并资源池操作的基本语法和示例如下:
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1');
obclient> CREATE RESOURCE POOL pool2 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z2');
obclient> CREATE RESOURCE POOL pool3 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z3');
obclient> ALTER RESOURCE POOL MERGE ('pool1','pool2','pool3') INTO ('pool0');
合并资源池是分裂资源池的逆操作。合并资源池的操作主要应用在如下场景中:资源池 pool1 的当前使用范围是 z1,资源配置为 uc0;资源池 pool2 的当前使用范围是 z2,资源配置为 uc0,资源池 pool3 的当前使用范围是 z3,资源配置规格为 uc0。由于 pool1、pool2、pool3 这 3 个资源池使用相同的资源配置规格,可以将多个资源池合并为一个资源池,降低资源池的管理和运维成本。
在该示例中,将三个单 Zone 资源池 pool1、pool2、pool3 合并成一个多 Zone 资源池 pool0。
合并资源池有以下两个限制:
被和并的资源池的
UNIT_NUM需要相等。被合并的资源池的资源配置需要是同一个。




