#磁盘管理

用户可以使用yfscmd工具进行YFS的磁盘管理,包括对diskgroup、failuregroup和disk的管理。

前提条件为:

  • YFS服务已启动(通过ycsctl status查看)。
  • YASCS_HOME 环境变量已正确设置。

# 创建首个diskgroup

YashanDB的安装过程中自动创建如下diskgroup:

  • SYSTEM diskgroup,YFS专用,请勿自行修改。
  • 用户diskgroup,用于保存用户数据,该diskgroup的名称可由用户在安装过程中进行配置,未配置时的默认值为DG0。数据库安装完成后,该diskgroup已存储了数据库实例相关信息,请勿自行清理该diskgroup,否则将丢失所有数据。
$ yfscmd ls
SYSTEM
DG0
Copied!

# 查看diskgroup

执行如下命令可以看到目前已创建的diskgroup。

#在默认实例上查看diskgroup
$ yfscmd -D $YASCS_HOME ls
SYSTEM
DG0

#在指定实例上查看diskgroup,-D 指定实例 HOME
$ yfscmd -D /home/yashan/ycs/ce-1-2 ls
SYSTEM
DG0
Copied!

所有diskgroup被虚拟为YFS根目录 + 下一级目录, 因此可以通过 yfscmd 的子命令 ls 查看diskgroup及其下文件和目录清单。

$ yfscmd -D $YASCS_HOME ls
SYSTEM
DG0
$ yfscmd -D $YASCS_HOME ls DG0
arch_files
dbfiles
redo11
redo12
redo13
redo21
redo22
redo23
system
sysaux
temp
swap
users
undo1
undo2
Copied!

# 继续创建diskgroup

除系统初始创建的diskgroup(名称DG0)外,用户可以自行增加diskgroup。

$ yfscmd

#创建 diskgroup 并指定 failuregroup
YFSCMD >  exec CREATE DISKGROUP DG1 NORMAL REDUNDANCY
> FAILGROUP FG11 DISK '/dev/DISK_NAME1' NAME disk1, '/dev/DISK_NAME2' NAME disk2
> FAILGROUP FG12 DISK '/dev/DISK_NAME3', '/dev/DISK_NAME4';

> ls
SYSTEM
DG0
DG1

#创建 diskgroup 不指定 failuregroup
#系统自动为每个 disk 创建 failuregroup
YFSCMD >  exec CREATE DISKGROUP DG2 EXTERNAL REDUNDANCY DISK '/dev/DISK_NAME5';

> ls
SYSTEM
DG0
DG1
DG2
Copied!

Warn

1.disk只能指定为除YCR盘(YCR_DISK参数控制)和YCS投票盘(VOTING_DISK参数控制)之外的普通数据盘,否则将引发系统异常和崩溃。

2.同一disk不能被重复添加至YFS,当同一disk被错误的配置到多个diskgroup或failgroup时,会造成系统崩溃、数据丢失等致命故障。

# 修改diskgroup

用户可以对一个已存在的diskgroup执行卸载、挂载、添加failuregroup等操作。

1.卸载、挂载 diskgroup

#卸载diskgroup
$ yfscmd -D $YASCS_HOME exec "ALTER DISKGROUP DG1 dismount"

#挂载diskgroup
$ yfscmd -D $YASCS_HOME exec "ALTER DISKGROUP DG1 mount"
Copied!

Caution

卸载某diskgroup后,将无法操作其上的数据,也无法对该diskgroup执行任何修改操作,重新挂载后才能访问。

2.添加failuregroup

YFS支持在创建diskgroup时创建failuregroup,也支持向已存在的diskgroup添加failuregroup。

#添加failuregroup,指定名称
$ yfscmd -D $YASCS_HOME exec "ALTER DISKGROUP DG1 ADD FAILGROUP FG13 DISK '/dev/DISK_NAME6'"

#添加failuregroup,不指定名称,系统自动为每个disk创建failuregroup
$ yfscmd -D $YASCS_HOME exec "ALTER DISKGROUP DG1 ADD DISK '/dev/DISK_NAME7'"
Copied!

# 删除diskgroup

删除diskgroup前,请务必确认不再需要其中的数据。

当diskgroup中存在数据时,必须指定INCLUDING CONTENTS选项才可成功删除。

删除diskgroup操作不可逆,其中所有数据都会被擦除,请谨慎操作。

#删除无数据的diskgroup,如有数据,删除失败。
$ yfscmd exec "DROP DISKGROUP DG1"
#删除diskgroup,如有数据清除。
$ yfscmd exec "DROP DISKGROUP DG1 INCLUDING CONTENTS"
Copied!