2、管理ASM磁盘

  本节简单给大家描述下关于ASM磁盘组的管理操作,关于ASM磁盘组的管理其实非常简单(也非常少),主要是由于10gR2中这个东西透明 度不够 ,ORACLE提供的功能有限,因此我们能够做的操作就更加有限了,因此三思决定随便写个几百W字节大家凑和着看看就得了,不深入了。

  OK ,下面步入正题。

  ASM 磁盘组的管理方式呢也比较多,比如像DBCA、EM、SQL*PLUS等均可操作(不同工具 易用性不同,不过 功能也有差异),除此之外ORACLE还专门提供了ASMCMD命令行方式,像操作文件系统一样来操作磁盘组。本节操作主要使用sql*plus命令行工具,关于asmcmd命令行中的命令,感兴趣的朋友可以期待本文外传~~~

  在管理ASM之前不得不提与ASM相关的动态性能视图,这些视图将对我们后面的操作起到重要作用,查询数据库中ASM相关视图可以通过下列SQL语句:

    SQL> select * from dict where table_name like ¨V$ASM_%¨;

     

    TABLE_NAME                     COMMENTS

    ------------------------------ ------------------------------------------

    V$ASM_ALIAS                    Synonym for V_$ASM_ALIAS

    V$ASM_CLIENT                   Synonym for V_$ASM_CLIENT

    V$ASM_DISK                     Synonym for V_$ASM_DISK

    V$ASM_DISKGROUP                Synonym for V_$ASM_DISKGROUP

    V$ASM_DISKGROUP_STAT           Synonym for V_$ASM_DISKGROUP_STAT

    V$ASM_DISK_STAT                Synonym for V_$ASM_DISK_STAT

    V$ASM_FILE                     Synonym for V_$ASM_FILE

    V$ASM_OPERATION                Synonym for V_$ASM_OPERATION

    V$ASM_TEMPLATE                 Synonym for V_$ASM_TEMPLATE

     

    9 rows selected

  这其中,V$ASM_ALIAS视图中记录文件别名信息,V$ASM_CLIENT返回当前连接的客户端实例信息,V$ASM_DISK*相关视图中记录的是ASM管理的磁盘及磁盘组信息,V$ASM_OPERATION记录当前磁盘的操作信息,例如:

    SQL> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;

    GROUP_NUMBER NAME                           STATE         TOTAL_MB    FREE_MB

    ------------ ------------------------------ ----------- ---------- ----------

               1 ASMDISK1                       MOUNTED          20472      18667

               2 ASMDISK2                       MOUNTED          16378      14621

    SQL> select header_status,name,failgroup,path,total_mb,free_mb from v$asm_disk where GROUP_NUMBER in(1,2);

    HEADER_STATU NAME                           FAILGROUP                      PATH                             TOTAL_MB    FREE_MB

    ------------ ------------------------------ ------------------------------ ------------------------------ ---------- ----------

    MEMBER       ASMDISK2_0000                  ASMDISK2_0000                  /dev/raw/raw5                        8189       7309

    MEMBER       ASMDISK2_0001                  ASMDISK2_0001                  /dev/raw/raw6                        8189       7312

    MEMBER       ASMDISK1_0000                  ASMDISK1_0000                  /dev/raw/raw1                       10236       9333

    MEMBER       ASMDISK1_0001                  ASMDISK1_0001                  /dev/raw/raw2                       10236       9334

  在真正开始操作ASM之前呢,我觉着还是有必要先描述一下关于ASM磁盘总的原则供参考。

添加或删除磁盘的影响

  当发生添加/删除磁盘组中磁盘的操作时,ASM能够自动平衡。对于普通的删除操作(无force选项),被删除的磁盘在该上数据被有效处理前并不会立刻释放,同样,新增磁盘时,在重分配工作完成前,该盘也不会承担I/O负载的工作。

ASM 如何处理磁盘故障

  ASM 中的磁盘组在三思看来可以分成两类:普通磁盘组和failure磁盘组,后者又与ASM的冗余方式有所关联。普通磁盘组就是标准的存储单元,ASM可以向其可访问的磁盘组中读写数据,failure磁盘组是为了提高数据的高可用性。ASM中的磁盘冗余策略非常简单,概要成三类:外部冗余、标准冗余和高度冗余,其中前者与failure磁盘组无关,如果设置了后者,那么该磁盘组就必须拥有failure磁盘组。听起来像在说failure磁盘组是普通磁盘组的子集,其实差不多可以这么理解,外部冗余的话磁盘属于磁盘组,内部冗余的话,磁盘属于磁盘组的同时,还属于某个(并且只能是一个)failure磁盘组。

  比如说对于标准冗余(Normal Redundancy),ASM要求该磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护,对于同一份数据(ASM中镜像单位不是磁盘,也不是块,而是一种AU的单位,该单位大小默认是1M)将有主从两份镜像,并且ASM通过算法来自动确保主、从镜像不会存在于同一份failure磁盘组,这样就保障了就算整个failure磁盘组都损坏,数据也不会丢失。至于高度冗余(High Redundancy)就更安全了,它至少需要三个failure磁盘组,也就是一份AU有一主多从的镜像,理论上将更加安全。

  如果磁盘发生损坏,那么损坏的磁盘默认自动offlice并被drop掉,不过该磁盘所在的磁盘组仍将保持MOUNT状态,如果该盘有镜像的话,那么应用不会有影响,镜像盘将自动实现接管--只要不是所有failure磁盘组都损坏掉,否则的话,该磁盘组将自动DISMOUNT。举个例子吧,某标准冗余的failure组有6个盘(对应6个裸设备),假如说此时坏了一块盘,没关系,操作继续,坏了那块会被自动dropped,剩下的5块盘仍然能够负担起正常的读写操作。

ASM 扩展性

  • 最多支持63个磁盘组;
  • 最多支持10000个磁盘;
  • 最大支持4pb/磁盘;
  • 最大支持40 exabyte/ASM存储;
  • 最大支持1百W个文件/磁盘组;
  • 外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb。