#磁盘管理
用户可以使用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!