#磁盘管理
用户可以使用yfscmd工具进行YFS的磁盘管理,包括对diskgroup、failuregroup和disk的管理。
前提条件为:
- YFS服务已启动(通过ycsctl status查看)。
YASCS_HOME
环境变量已正确设置。
# 创建首个diskgroup
YashanDB的安装过程中将自动为YFS创建首个diskgroup,首个diskgroup的名称可由用户在安装过程中进行配置,未配置时的默认值为DG0。
$ yfscmd ls
DG0
Caution:
该diskgroup上已存储YashanDB默认创建的数据库实例信息,如果误将该diskgroup清理,数据库实例将故障,必须进行重建。
# 查看diskgroup
执行如下命令可以看到目前已创建的diskgroup。
# 在默认实例服务器上查看diskgroup
$ yfscmd -D $YASCS_HOME ls
DG0
# 在指定实例服务器上查看diskgroup,-D指定服务器HOME
$ yfscmd -D /home/yashan/ycs/ce-1-2 ls
DG0
所有diskgroup被虚拟为YFS根目录+
下一级目录,因此可以通过yfscmd
的子命令ls
查看diskgroup及其下文件和目录清单。
$ yfscmd -D $YASCS_HOME ls
DG0
$ yfscmd -D $YASCS_HOME ls DG0
ctrlfile0
ctrlfile1
ctrlfile2
redo1
redo10
redo11
redo12
redo2
redo3
redo4
redo5
redo6
redo7
redo8
redo9
swap
sysaux
system
temp
undo1
undo2
undo3
users
# 继续创建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
DG0
DG1
# 创建diskgroup不指定failuregroup
# 系统自动为每个disk创建failuregroup
YFSCMD > exec CREATE DISKGROUP DG2 EXTERNAL REDUNDANCY DISK '/dev/DISK_NAME5';
> ls
DG0
DG1
DG2
Warn:
disk只能指定为除YCR盘(YCR_DISK参数控制)和YCS投票盘(VOTING_DISK参数控制)之外的普通数据盘,否则将引发系统异常和崩溃。
同一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"
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'"
# 删除diskgroup
删除diskgroup前,请务必确认不再需要其中的数据。
当diskgroup中存在数据时,必须指定INCLUDING CONTENTS
选项才可成功删除。
删除diskgroup操作不可逆,其中所有数据都会被擦除,请谨慎操作。
# 删除无数据的diskgroup,如有数据,删除失败
$ yfscmd exec "DROP DISKGROUP DG1"
# 删除diskgroup,如有数据清除
$ yfscmd exec "DROP DISKGROUP DG1 INCLUDING CONTENTS"