#磁盘管理命令

yfscmd通过exec子命令管理数据盘,YFS定义了与SQL类似的DDL形式的磁盘管理语句。

Note:

共享集群安装完成后无法调整系统盘组(systemdg)相关配置,请在安装时按需调整{集群名称}.toml中[group.systemdiskgroup]区域的相应配置。

yfscmd交互模式下,请执行exec create diskgroup …;,交互模式下exec子命令支持多行输入直到遇到;结束。

yfscmd非交互模式下,磁盘管理语句必须使用引号包围,作为1个独立的参数传入,请执行yfscmd exec "create diskgroup …",且非交互模式下磁盘管理语句尾部的;可选。

# CREATE DISKGROUP

该语句用于创建一个新的diskgroup。

Note:

若共享集群配置了基于SCSI持久预留的IO Fencing,请在执行create diskgroup前调用fenceScsiCheck脚本对diskpath指定的磁盘进行能力检测,否则本次操作可能因硬件协议不支持等原因失败。

CREATE DISKGROUP::=

CREATE_DISKGROUP
CREATE DISKGROUP dgname EXTERNAL NORMAL HIGH REDUNDANCY disk_clause attribute_clause

disk_clause::=

DISK_CLAUSE
REGULAR QUORUM FAILGROUP fgname DISK qualified_disk_clause ,

qualified_disk_clause::=

QUALIFIED_DISK_CLAUSE
' diskpath ' NAME diskname SIZE size FORCE NOFORCE

attribute_clause::=

ATTRIBUTE_CLAUSE
ATTRIBUTE ' au_size ' = '1M' '4M' '8M' '16M' '32M'

# dgname

要创建的diskgroup名称,在YFS中该名称全局唯一,不可省略,且需符合YashanDB的对象命名规范

# REDUNDANCY

指定diskgroup的冗余度,可选值为EXTERNAL、NORMAL或HIGH,默认为NORMAL。

# disk_clause

该语句用于创建failuregroup,可重复指定该语句,语句之间通过空格分隔,表示创建多个failuregroup。

可以创建的failuregroup个数与diskgroup冗余度有关,failuregroup数量须大于等于副本数量,否则返回错误。

QUORUMREGULAR仅用于语法兼容,无实际意义。

# fgname

创建的failuregroup名称,diskgroup内唯一,需符合YashanDB的对象命名规范,在fg_def_clause中不可省略。

# qualified_disk_clause

该语句用于指定failuregroup下disk的数量及属性,指定多个disk使用,间隔。

一个diskgroup中所有failuregroup下的disk数量必须保持一致,否则返回错误。

一个disk只能属于一个failuregroup和一个diskgroup,不能被重复指定。

# diskpath

指定disk所在的YFS路径,本语句支持输入的路径最大长度为31。

Caution:

请确保主备节点diskpath一致且具有读写权限,否则会导致备节点进程退出。

# diskname

为disk指定一个diskgroup内唯一的名称,命名需符合YashanDB的对象命名规范。如省略diskname,则由系统自动生成默认名称。

# size

指定可以由diskgroup进行管理的disk大小,可省略,则默认为该disk的总大小。

本语句必须对一个diskgroup中所有failuregroup下的所有disk同时指定,且size值必须保持一致,否则返回错误。

如指定的size大于该disk总的大小则返回错误。

FORCE|NOFORCE

FORCE用于强制格式化磁盘,例如当YFS检测到磁盘上存在YFS文件系统时,默认会拒绝添加该磁盘以免误操作抹除磁盘上的数据,可通过FORCE强制添加磁盘。

NOFORCE仅用于语法兼容,无实际意义。

# attribute_clause

该语句用于指定YFS在创建的diskgroup上分配磁盘空间时的AU大小,可省略,则默认的AU size为1M。

指定AU size时,可选值为1M、4M、8M、16M或32M。

示例(共享集群)

CREATE DISKGROUP DG2 NORMAL REDUNDANCY 
DISK '/dev/DISK_NAME5' SIZE 70M 
FAILGROUP FG_1 DISK '/dev/DISK_NAME10' NAME disk4 SIZE 70M 
FAILGROUP FG_2 DISK '/dev/DISK_NAME4' SIZE 70M 
ATTRIBUTE 'au_size'='4M';

DROP DISKGROUP DG2;

CREATE DISKGROUP DG2 NORMAL REDUNDANCY 
FAILGROUP FG_1 DISK '/dev/DISK_NAME10' NAME disk4,'/dev/DISK_NAME12' 
FAILGROUP FG_2 DISK '/dev/DISK_NAME4','/dev/DISK_NAME11';

# ALTER DISKGROUP

该语句用于修改已有diskgroup的属性,包括卸载diskgroup、挂载diskgroup、增加disk、删除disk、修改disk名称等。

alter diskgroup::=

ALTER_DISKGROUP
ALTER DISKGROUP dgname DISMOUNT FORCE MOUNT ADD disk_clause DROP drop_disk_clause RENAME rename_disk_clause OFFLINE offline_disk_clause

Note:

若共享集群配置了基于SCSI持久预留的IO Fencing,请在执行ADD前调用fenceScsiCheck脚本对diskpath指定的磁盘进行能力检测,否则本次操作可能因硬件协议不支持等原因失败。

# dgname

指定一个已存在的diskgroup的名称。

# DISMOUNT|MOUNT

该语句用于对diskgroup执行挂载或去挂载操作。

Caution:

挂载操作时,请确保主备节点间磁盘名称一致且具有读写权限,否则挂载时备节点进程会退出。

# FORCE

如果diskgroup中的文件已被打开暂未关闭,将无法DISMOUNT该diskgroup,需明确指定FORCE强制执行。

Caution:

强制DISMOUNT diskgroup可能引起数据库异常、丢失数据,请慎用该操作

# ADD disk_clause

该语句用于向diskgroup内的failuregroup添加磁盘。

  • 如果指定的failuregroup名称已存在,则向已有failuregroup内添加磁盘。

  • 如果指定的failuregroup名称不存在,或未指定failuregroup名称,则创建新的failuregroup并为其添加磁盘。

其他同CREATE DISKGROUP中描述一致。

# drop_disk_clause

该语句用于删除diskgroup中的一块或多块盘。也可以删除diskgorup的中一个或多个failuregroup。

Caution:

  • 仅允许删除空磁盘,无法删除含YFS元数据的磁盘BOOT_DISK。
  • 删除磁盘后,剩余failuregroup数量必须满足diskgorup冗余度要求,且剩余各failuregroup的disk数量一致。
  • 被删除的磁盘会立即与其伙伴磁盘解除关系,可能会导致部分磁盘缺少可用的伙伴磁盘创建数据副本,无法满足冗余度要求,该磁盘空间将不可用。此时,可向diskgroup增加足量的磁盘(可通过查询V$YFS_DISK视图获取磁盘的伙伴关系),新增磁盘后系统将为该类磁盘自动分配新的伙伴磁盘。
drop_disk_clause
REGULAR QUORUM DISK disk_name FORCE NOFORCE , DISKS IN REGULAR QUORUM FAILGROUP failuregroup_name FORCE NOFORCE ,

QUORUMREGULARFORCENOFORCE仅用于语法兼容,无实际意义。

# rename_disk_clause

该语句用于对diskgroup内的disk重命名,可以指定若干disk重命名(手动指定新名称),也可以对diskgroup的所有disk自动重命名(名称由系统指定,格式为DGNAME_DISKID)。

磁盘名称规范如下:

  • 磁盘名称最长31字符。
  • 新磁盘名称diskgroup内唯一。
rename_disk_clause
DISKS ALL DISK old_disk_name TO new_disk_name ,

# offline_disk_clause

该语句用于离线diskgroup中的一块或多块盘。也可以离线diskgorup的中一个或多个failuregroup。

Caution:

  • 离线磁盘后,剩余failuregroup数量必须满足diskgorup冗余度要求.
  • 磁盘离线操作需谨慎,当前该操作不可逆(即无法online),磁盘离线后磁盘组已有文件的冗余度可能会降级。
offline_disk_clause
REGULAR QUORUM DISK disk_name , DISKS IN REGULAR QUORUM FAILGROUP failuregroup_name ,

QUORUMREGULAR仅用于语法兼容,无实际意义。

示例(共享集群)

-- 卸载diskgroup
ALTER DISKGROUP DG2 DISMOUNT;
-- 挂载diskgroup
ALTER DISKGROUP DG2 MOUNT;
-- 添加磁盘
ALTER DISKGROUP DG2 ADD FAILGROUP FG_3 DISK '/dev/DISK_NAME13' NAME DISK13,'/dev/DISK_NAME14' NAME DISK14 FAILGROUP FG_4 DISK '/dev/DISK_NAME15' NAME DISK15,'/dev/DISK_NAME16' NAME DISK16;
-- 删除failuregroup所有磁盘
ALTER DISKGROUP DG2 DROP DISKS IN  FG_3, FG_4;
-- 删除指定磁盘
ALTER DISKGROUP DG2 DROP DISK DISK13, DISK14;
-- 重命名指定磁盘
ALTER DISKGROUP DG2 RENAME DISK DISK13 TO DISK13NEW, DISK14 TO DISK14NEW;
ALTER DISKGROUP DG2 RENAME DISKS ALL;
-- 离线磁盘
ALTER DISKGROUP DG2 OFFLINE DISK DISK13, DISK14;
ALTER DISKGROUP DG2 OFFLINE DISKS IN FAILGROUP FG_3, FG_4;

# DROP DISKGROUP

该语句用于删除一个diskgroup。

要删除的diskgroup必须处于MOUNT状态,否则删除失败,可通过ALTER DISKGROUP语句改变diskgroup的状态。

drop diskgroup::=

DROP_DISKGROUP
DROP DISKGROUP dgname INCLUDING CONTENTS FORCE

# dgname

指定一个已存在的DG的名称。

# INCLUDING CONTENTS

如diskgroup中有文件或目录,需明确指定INCLUDING CONTENTS才能强制删除,否则删除失败。

# FORCE

如果diskgroup中的文件被打开但未关闭,将无法DROP该diskgroup,需明确指定FORCE强制执行。注意,强制DROP diskgroup可能引起数据库异常,请慎用该操作。

示例(共享集群)

DROP DISKGROUP DG2;

DROP DISKGROUP DG2 INCLUDING CONTENTS;
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流