#磁盘管理

共享集群/分布式集群安装时,会完成YFS上系统磁盘组(SYSTEM)和数据磁盘组(默认名称为DG0)的创建。在安装前以及安装过程中按需规划配置硬件设备、指定相应参数配置,安装完成后无需额外配置即可直接使用。

Caution:

系统盘组一旦创建,无法再对其进行扩容、故障磁盘更换等配置。

数据库安装完成后,上述两个磁盘组中已存储共享集群/分布式集群的YFS以及数据库实例相关信息,请勿清理磁盘组,否则可能会导致数据库无法正常启动或运行。

# 查看磁盘信息

查看YFS的磁盘配置、使用情况等信息,可以通过YFS管理工具yfscmd相关命令操作,也可以通过相应的动态视图获取相应信息。

在日常运维工作中,数据库管理员应定期关注磁盘使用情况,若数据盘组存储空间不足(例如磁盘组信息的usable_file_mb字段)需及时进行扩容;若发现磁盘状态异常(例如磁盘信息的status字段)则需及时进行更换、重新上线等维护操作。

# 通过yfscmd查看

# 前提条件

  • YASCS_HOME环境变量已正确设置。

  • YFS服务已启动(可通过ycsctl status命令查看YFS状态是否为online)。

# 操作步骤

  1. 以安装用户登录数据库安装服务器。

  2. 执行yfscmd命令查看磁盘组配置信息。

    $ yfscmd -D $YASCS_HOME ls
    SYSTEM
    DG0
    
    $ yfscmd -D $YASCS_HOME
    YFSCMD > ls
    SYSTEM
    DG0
    
    • SYSTEM:系统磁盘组,用于存储YFS自身元数据,YFS依赖该盘完成启动和初始化。
    • DG0:数据磁盘组,用于存储业务数据。该磁盘组的名称可由用户在安装过程中进行配置,未配置时的默认值为DG0。
  3. 查看磁盘读写信息。

    $ yfscmd -D $YASCS_HOME
    YFSCMD >  iostat
    id    name     group_number reads          writes         read_bytes           written_bytes        read_time_us   write_time_us  path
    0     SYSTEM_0 0            0              0              0                    0                    0              0              /dev/yfs/sys0
    1     SYSTEM_1 0            0              0              0                    0                    0              0              /dev/yfs/sys1
    2     SYSTEM_2 0            0              0              0                    0                    0              0              /dev/yfs/sys2
    3     DG0_0    1            3001           6              104017920            50766336             1277976        73832          /dev/yfs/data0
    
  4. 查看指定磁盘组的文件目录及文件。

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

# 通过视图查看

通过GV$YFS_DISKGROUP/V$YFS_DISKGROUPGV$YFS_FAILGROUP/V$YFS_FAILGROUP以及GV$YFS_DISK/V$YFS_DISK视图可以分别查询磁盘组、故障组以及磁盘的信息。

# 前提条件

数据库处于运行状态。

# 操作步骤

  1. 以DBA用户连接并登录数据库。

    $ yasql sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 按需查询相关视图的关注字段信息,本文仅列示部分常见场景。

    SELECT ID,NAME,TYPE,AU_SIZE,REDUNDANCY FROM V$YFS_DISKGROUP;
    
              ID NAME                              TYPE                                   AU_SIZE REDUNDANCY
    ------------ --------------------------------- --------------------------------- ------------ -----------------
               0 SYSTEM                            SYSTEM                                 1048576 NORMAL
               1 DG0                               USER                                   1048576 EXTERNAL
    
    SELECT NAME,GROUP_NUMBER FROM V$YFS_FAILGROUP;
    NAME                              GROUP_NUMBER
    --------------------------------- ------------
    SDG0_0                                       0
    DG0_0                                        1
    

# 数据磁盘组扩容

作为共享集群/分布式集群的核心数据存储与协同载体,YFS的存储容量不足易导致业务系统响应迟缓,冗余度不足则会加剧数据安全风险。因此,当出现存储空间告警(错误码YAS-05530)、冗余配置未达新业务数据的安全标准,或新增数据密集型业务模块时,数据磁盘组扩容的需求将变得尤为迫切。

扩容前后,磁盘组均需满足以下配置要求:

  • 如需将磁盘组的冗余度规划为Normal或High,同一磁盘组中所有磁盘的可用容量、每个故障组下的磁盘数量均要求一致。

  • 同一个磁盘只能属于一个故障组,不能被重复指定。

  • 每个故障组间应尽可能达成故障隔离

实际操作时,可根据需求选择以下方案:

扩容方案 配置约束 方案优缺点
为现有磁盘组新增磁盘 若磁盘组的冗余度为Normal或High,需为磁盘组的每个故障组添加相同数量的磁盘 优点:无需调整数据库中各类文件的存储位置(即业务“无感知”)。
为现有磁盘组新增故障组 需根据磁盘组的冗余度新增副本数的整数倍个数的故障组 优点:无需调整数据库中各类文件的存储位置(即业务“无感知”)。

缺点:基于新的故障组需与现有各故障组间故障隔离原则,实际需增加对应数量的存储设备,扩容所需硬件成本较高
新增磁盘组 无其他特殊约束 优点:可单独根据业务数据的安全标准、硬件利用率等因素为每个新磁盘组配置合理的冗余度。

缺点:要求人工调整新数据的存储位置至新磁盘组(即业务“有感知”)。

扩容操作始终不会对存量数据产生影响(包括冗余度、存储位置)。

# 前提条件

  • 针对新磁盘的准备工作如下:

  • YASCS_HOME环境变量已正确设置。

  • YFS服务已启动(可通过ycsctl status命令查看YFS状态是否为online)。

# 为现有磁盘组新增磁盘

  1. 以安装用户登录数据库安装服务器。

  2. 获取新磁盘的路径信息。

    $ ll /dev/yfs
    
  3. 查看目标磁盘组的当前配置以及相关信息。

    $ yfscmd -D $YASCS_HOME
    YFSCMD > show diskgroup
    id name     type     level    au_size  stat     block_size  total_mb    free_mb     usable_file_mb
    0  SYSTEM   SYSTEM   1        1.00MB   MOUNTED  4096        3072        2397        799        
    1  DG0      USER     0        32.00MB  MOUNTED  4096        20480       16960       16960
    
    YFSCMD >  show failgroup
    id name     dgid
    0  SDG0_0   0
    1  DG0_0    1
    

    需记录数据磁盘组的名称、其故障组的名称以备后续操作使用。

  4. 执行ALTER DISKGROUP命令,为数据磁盘组添加磁盘。

    # 本文以为磁盘组DG0的故障组DG0_0添加1个磁盘为例
    
    YFSCMD > exec ALTER DISKGROUP DG0 ADD FAILGROUP DG0_0 DISK '/dev/yfs/data1';
    

    若目标磁盘组存在多个故障组,需重复本操作为每个故障组添加相同数量的磁盘。

# 为现有磁盘组新增故障组

  1. 以安装用户登录数据库安装服务器。

  2. 获取新磁盘的路径信息。

    $ ll /dev/yfs
    
  3. 查看目标磁盘组的当前配置以及相关信息。

    $ yfscmd -D $YASCS_HOME
    YFSCMD > show diskgroup
    id name     type     level    au_size  stat     block_size  total_mb    free_mb     usable_file_mb
    0  SYSTEM   SYSTEM   1        1.00MB   MOUNTED  4096        3072        2397        799        
    1  DG0      USER     0        32.00MB  MOUNTED  4096        20480       16960       16960
    
    YFSCMD >  show failgroup
    id name     dgid
    0  SDG0_0   0
    1  DG0_0    1
    

    需记录数据磁盘组的名称、冗余度以备后续操作使用。

  4. 执行ALTER DISKGROUP命令,为数据磁盘组添加故障组。

    # 新增的故障组个数必须为冗余度所对应的副本数的整数倍
    
    YFSCMD > exec ALTER DISKGROUP DG0 ADD FAILGROUP DG0_1 DISK '/dev/yfs/data1';
    
  5. 再次查看故障组列表。

    YFSCMD >  show failgroup
    id name     dgid
    0  SDG0_0   0
    1  DG0_0    1
    2  DG0_1    1
    

# 增加新的磁盘组

  1. 以安装用户登录数据库安装服务器。

  2. 获取新磁盘的路径信息。

    $ ll /dev/yfs
    
  3. 查看当前的磁盘组列表。

    $ yfscmd -D $YASCS_HOME
    YFSCMD > ls
    SYSTEM
    DG0
    
  4. 执行CREATE DISKGROUP命令,添加新的数据磁盘组。

    YFSCMD > exec CREATE DISKGROUP DG1 NORMAL REDUNDANCY 
    > FAILGROUP DG1_0 DISK '/dev/yfs/data10' NAME DG1_DISK10, '/dev/yfs/data11' NAME DG1_DISK11 
    > FAILGROUP DG1_1 DISK '/dev/yfs/data12' NAME DG1_DISK12, '/dev/yfs/data13' NAME DG1_DISK13;
    
  5. 再次查看磁盘组列表。

    $ yfscmd -D $YASCS_HOME
    YFSCMD > ls
    SYSTEM
    DG0
    DG1
    
  6. 为新的业务数据合理规划存储路径,详情请查阅逻辑空间管理

# 数据磁盘组故障处理

依托于磁盘组的冗余度属性,只要仍存在一个可用的数据副本,即可保障数据库持续正常运行。但数据库管理员仍需要对磁盘的运行状态定期进行巡检,一旦发现磁盘故障应及时更换故障磁盘并重建冗余,以避免故障蔓延影响业务。

在YFS层面,监控磁盘状态可关注show disk命令回显信息中的status字段或GV$YFS_DISK/V$YFS_DISK视图的MOUNT_STATUS字段,具体查看操作请参考查看磁盘信息

# 更换故障磁盘

更换磁盘时,需遵循以下规则:

  • 无法对系统磁盘组(名为SYSTEM)执行该操作。

  • 待操作的目标磁盘组已挂载。

  • 单次操作仅可更换1块已离线的磁盘。

  • 新磁盘不能为已在某个磁盘组中的盘。

  • 每个磁盘不允许同时存在多个进行中的修复类操作任务,此类任务包括:上线(ONLINE)、更换(REPLACE)。

  • 每个磁盘组最多支持64个修复类操作任务并存(执行中或排队中)。

Note:

  • 更换磁盘操作的本质为更新磁盘组中某个磁盘的路径 + 重新上线该磁盘。若某个更换任务中断(例如被人为取消),可能磁盘路径已发生变化,YFS不会自行回退该变化,如有需要,需人工介入再次发起更换任务将路径还原成原路径。

  • 更换磁盘时,若误将新盘的磁盘路径指定为disk_name对应磁盘原本的路径,YFS不会报错与拦截,但此时操作会退化为仅重新上线目标磁盘。

# 前提条件

  • 针对新磁盘的准备工作如下:

  • YASCS_HOME环境变量已正确设置。

  • YFS服务已启动(可通过ycsctl status命令查看YFS状态是否为online)。

# 操作步骤

  1. 以安装用户登录数据库安装服务器。

  2. 获取新磁盘的路径信息。

    $ ll /dev/yfs
    
  3. 获取故障盘相关信息。

    $ yfscmd -D $YASCS_HOME
    YFSCMD >  show disk
    

    需记录故障磁盘所属数据磁盘组的名称、故障磁盘的名称和路径以备后续操作使用。

  4. 执行ALTER DISKGROUP命令,使用新磁盘替换故障磁盘。

    # 本文以/dev/yfs/data14更换DG1磁盘组中的磁盘DG1_DISK12为例
    
    YFSCMD > exec ALTER DISKGROUP DG1 REPLACE DISK DG1_DISK12  WITH '/dev/yfs/data14' POWER 10;
    

    可根据业务负载情况指定当前任务的数据迁移强度(POWER关键字的值),数值越大强度越大,任务完成速度越快但资源占用也会越高。

  5. 执行以下命令,查看修复计划的进展。

    YFSCMD > show job
    

    当目标计划的status字段变为FINISH时,表示当前计划已执行完成。此后,可移除故障磁盘硬件。

# 磁盘重新上线

正常状态的磁盘被误操作离线后可将其重新上线,具体操作规则如下:

  • 无法对系统磁盘组(名为SYSTEM)执行该操作。

  • 待操作的目标磁盘组已挂载。

  • 单次操作仅可上线1块已离线的磁盘。

  • 每个磁盘不允许同时存在多个进行中的修复类操作任务,此类任务包括:上线(ONLINE)、更换(REPLACE)。

  • 每个磁盘组最多支持64个修复类操作任务并存(执行中或排队中)。

# 前提条件

  • YASCS_HOME环境变量已正确设置。

  • YFS服务已启动(可通过ycsctl status命令查看YFS状态是否为online)。

# 操作步骤

  1. 以安装用户登录数据库安装服务器。

  2. 获取目标磁盘相关信息。

    $ yfscmd -D $YASCS_HOME
    YFSCMD >  show disk
    

    需记录目标磁盘所属数据磁盘组的名称和目标磁盘的名称以备后续操作使用。

  3. 执行ALTER DISKGROUP命令,重新上线目标磁盘。

    # 本文以重新上线DG1磁盘组中的磁盘DG1_DISK10为例
    
    YFSCMD > exec ALTER DISKGROUP DG1 ONLINE DISK DG1_DISK10 POWER 10;
    

    可根据业务负载情况指定当前任务的数据迁移强度(POWER关键字的值),数值越大强度越大,任务完成速度越快但资源占用也会越高。

  4. 执行以下命令,查看修复计划的进展。

    YFSCMD > show job
    

    当目标计划的status字段变为FINISH时,表示当前计划已执行完成。

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流