Oracle ASM自动存储管理新说

  • Oracle ASM的基本思想
  • 通过应用ASM使得设计/使用简便化
  • ASM设计指针
  • ASM的Rebalancing 与 stripe
  • High Redundancy的优点
  • vs. Sympro /阶层化存储

 

传统的存储物理设计手法

部分最优化

  • 对每个访问类型都分配磁盘配置数据

–随机访问(重视待机时间最小化的IOPS)

  • Seek等待时间 + 回转等待时间 > 读出时间

asmz1

–sequential访问(重视完全灵活使用传送带宽的吞吐量)

  • seek等待时间 + 回转等待时间 < 读出时间

asmz2

 

Hard Disk Drive技术演进

随机访问的并列化时sequential访问也高速化

 

1.提高Disk回转速度

缩短同样的数据的读出时间

变更sector的配置,缩小搜索范围

2.Disk外周的sector的高密度化

周边seek增多,头的移动距离锁定,随机访问高速化

3.Disk的低价化

通过将多个disk捆在一起,可以保证I/O性能

 

存储物理设计的変化

从部分最优化到整体最优化

  • 通过访问类型来分离的需求减少

–灵活利用所有disk,最大化发挥I/O性能=》采用 S. A. M. E

 

asmz3

 

Oracle ASM的基本思想

Stripe And Mirror Everything (S. A. M. E)

 

  • 设计手法为:以均衡利用所有disk为目的,将数据进行stripe,分散在所有磁盘上,进行Mirroring。

–保证I/O性能:灵活使用所有disk的I/O带宽

–可用性を確保:采用Mirroring

–设计简单化:隐藏物理disk结构,不需要额外进行设计

 

asmz4

 

 

Oracle Automatic Storage Management
架构

  • ASM实例

–管理ASM Diskgroup内存与进程群

–改造Oracle实例

  • Cluster Synchronization Services

–利用Oracle Clusterware的Membership管理服务

–报告DB实例与ASM实例的存在

  • ASM Diskgroup

–对Oracle实例进行虚拟化的池

  • ASM Disk

–构成ASM Diskgroup 的各个Disk(Logical Unit)

 

asmz5

 

 

Allocation Unit, File Extent & ASM File

  • Allocation Unit(AU:=分配单位)

–基本单位 可以设定为1(default)、2、4(推荐)、8、16、32或者64MB

–将ASM Diskgroup中包含的所有ASM Disk通过这个单位进行Striping

  • File Extent

–通过多个AU来构成(尺寸可变)、各Extent在单一ASM Disk上配置

  • 最初的20000extent(0~19999) à 1*AU  à 1~20GB (1AU=1MB时)
  • 下一个的20000extent(20000~39999) à 4*AU  à 20~40GB (1AU=1MB时)
  • 下一个的20000extent以上(40000~) à16*AU à 40GB~ (1AU=1MB时)
  • ASM File(= Data File, etc)

–通过多个extent来构成

 

通过Oracle ASM进行Striping

ASM File的分散配置

  • 对于ASM Diskgroup中包含的所有的ASM Disk,将ASM File(Data File)以File Extent(AU)单位来配置

 

asmz6

 

S.A.M.E只能应用OLTP处理?

  • OLTP处理

–数据库中:Single block read(块尺寸单位)

–存储中:Small 随机 read

通过将大部分的Disk进行stripe,并绑定在一起,可以确保有足够的iops

  • DWH/批量处理

–数据库中:多块读(基本、1MB单位)

–存储中:  large sequential read

 

不需要sequential read

即使是随机访问,Fibre Channel带宽也不会陷入瓶颈

  • 比如、15krpm的HDD有60个的情况(假设中等规模系统)

–通过1MB的I/O尺寸随机读的吞吐量

  • 通过Oracle ORION的验证结果、40-45iops/Disk
  • 40iops × 1MB/io = 40MB/sec
  • 40MB/sec × 60本 = 2.4GB/sec

–每台都是4Gbps × 2本的FC结构,这是2节点RAC结构的最大吞吐量

  • 4Gbit / 8 bit / 1sec = 512MB/sec
  • 512MB/sec × 2本 = 1GB/sec
  • 1GB/sec × 2节点 = 2.0GB/sec

传统的RAW device结构课题

如果这个结构中扩展了表区域

传统的RAWdevice构成环境

asmz7

 

传统的RAW device结构课题-1

可以通过采用Oracle ASM来解决

  • 细致分割表区域

–空白区域的监视对象(表区域)较多,使用起来消耗人工较多

–频繁陷入区域不足,每个月都会追加数据文件

–因为每个表区域中空白区域都是独立的。所以会导致无用的空白区域增大

–因为数据文件数较多,可能导致SQL性能恶化

–因为管理layer数较多,所以操作比较复杂

–Volume超过1万个的话,就容易发生误操作

 

  • 追加数据文件时,没有对现有文件进行rebalance

–因为只有在新建的volume中存在空白区域,如果新插入的记录都集中在那个volume中的话,就容易导致瓶颈

–现有记录因为保存在现有volume中,所以无法改善搜索记录的查询处理的性能

 

Oracle ASM环境的表区域扩展

简单化

asmz8

 

通过Oracle ASM使得管理简单化

从顾客的传统结构中观察到的ASM的优点

  • 操作简便化

–使得表区域扩展以及追加disk的顺序简便化,减少操作错误

  • 减少管理对象

–可以在ASM Disk group的容量内自由扩展表区域,不需要去在意传统的Volume以及RAW device(数据文件)

–通过Striping,使得I/O均衡,不需要细致分割表区域来回避I/O竞争。可以大幅度减少表区域的总量

  • 数据再配置的工数不要

–追加Disk是,会自动执行重新配置现有数据(rebalancing)

 

Oracle ASM中的存储指針设计

八条 for High Performance & Transaction Database

1.将多台便宜的存储器绑定在一起

2.没有硬件RAID or RAID0(最多也就Disk8台以内)

3.一个RAID Group只会切换一个Logical Unit

4.可用性通过High Redundancy(3重化)来担保

5.尽可能将较多的LU绑定在一个ASM Diskgroup中

6.通过一样性能/尺寸的Disk(LU)来构成ASM Diskgroup

7.通过SSD构成面向Redo日志的Diskgroup

8.不使用存储的虚拟化功能(Thin Provisioning/阶层化)

 

  • 将多台便宜的存储器绑定在一起

–可以获得与1台昂贵的存储器相同的I/O性能

  • 没有硬件RAID or RAID0(最多也就Disk8台以内)
  • 一个RAID Group只会切换一个Logical Unit

–比如,切换两个LU的情况,各个LU的I/O性能有较大超逸,就可能产生Hotspot

  • 尽可能将较多的LU绑定在一个ASM Diskgroup中

–马马虎虎的设计也可以获得优秀的I/O性能。太纠结于设计的话,就可能使得设计本身复杂化

  • 可用性通过High Redundancy(3重化)来担保

–在下一章说明

  • 通过一样性能/尺寸的Disk(LU)来构成ASM Diskgroup

–因为需要对所有的disk都均匀分配I/O,所以推荐统一I/O性能

–ASM的stripe为了保障各ASM Disk的使用率均衡,需要根据各个disk的尺寸进行分散。请尽量使用相同尺寸

  • 通过SSD构成面向Redo日志的Diskgroup

–推荐US开发、通过使用TPC-C,可以使得Log File Sync待机项目的待机时间稳定化

  • 不使用存储的虚拟化功能(Thin Provisioning/阶层化)

–在下一章说明

 

参考)统一LU的性能与尺寸

调整Fibre Channel带宽与LU数量

  • 构成绑定FC带宽不同的多个存储器的ASM Diskgroup时,需要调整各个存储器中切换的LU数

这仅仅是为了大家更好理解,并不推荐这样做.

 

asmz9

 

 

  • 使用回转数不同的HDD时,请调整Disk个数构成RAID

asmz10

 

ASM Diskgroup构成

asmz11

 

Oracle ASMrebalance数据重新配置)

可以不终止数据库就重新配置

 

  • 追加、删除ASM Disk(Logical Unit:LU)时,
    为了维持「S. A. M. E」,需要重新配置数据

–以元数据(配置状況)为基础,通过ASM File单位均匀配置所有disk,实现最小限度地移动extent(AU)

–可以通过设定多重度(rebalance強度)以及执行计划来控制对业务的影响

 

asmz12

 

通过ASM,分散配置数据

 

使用Data File单位对各ASM Disk的File Extent(AU)进行均匀地分割

 

asmz13

 

 

查看stripe

 

 

 

$ sqlplus / as sysasm

SQL>
create diskgroup TDG external redundancy disk 
  '/dev/emcpowere1','/dev/emcpowerf1','/dev/emcpowerg1','/dev/emcpowerh1' ;

set linesize 150 pagesize 50000
col name for a8
col path for a36
select b.group_number,b.disk_number,a.name,b.path,b.state,b.total_mb 
  from v$asm_diskgroup a,v$asm_disk b 
 where a.group_number(+)=b.group_number
   and a.name='TDG'
 order by 2;

GROUP_NUMBER DISK_NUMBER NAME     PATH                                 STATE      TOTAL_MB
------------ ----------- -------- ------------------------------------ -------- ----------
           4           0 TDG      /dev/emcpowere1                      NORMAL       136850
           4           1 TDG      /dev/emcpowerf1                      NORMAL       136850
           4           2 TDG      /dev/emcpowerg1                      NORMAL       136850
           4           3 TDG      /dev/emcpowerh1                      NORMAL       136850



制成ASM File(Data File = 表空间)

$ sqlplus / as sysdba
SQL>
create tablespace TS0 datafile '+TDG(DATAFILE)' size 32m;
create tablespace TS1 datafile '+TDG(DATAFILE)' size 32m;
create tablespace TS2 datafile '+TDG(DATAFILE)' size 32m;




select C.NAME                   "GRP_NAME",
       A.GROUP_NUMBER           "GRP#",
       A.FILE_NUMBER            "FILE#",
       A.TYPE                   "FILE_TYPE",
       B.NAME                   "FILE_NAME",
       A.BLOCKS                 "USED(BLK)",
       trunc(A.BYTES/1024/1024) "USED(MB)",
       trunc(A.SPACE/1024/1024) "ALLOCATE(MB)"
  from V$ASM_FILE      "A", V$ASM_ALIAS     "B", V$ASM_DISKGROUP "C"
 where A.GROUP_NUMBER   = B.GROUP_NUMBER
   and A.GROUP_NUMBER   = C.GROUP_NUMBER
   and A.FILE_NUMBER    = B.FILE_NUMBER
   and B.FILE_NUMBER    < 4294967295  -- without Directories
   and B.SYSTEM_CREATED = 'Y'         -- without Symbolic Links
   and C.NAME           = 'TDG'
 order by 3;

GRP_NAME       GRP#      FILE# FILE_TYPE        FILE_NAME             USED(BLK)   USED(MB) ALLOCATE(MB)
-------- ---------- ---------- ---------------- -------------------- ---------- ---------- ------------
TDG               4        256 DATAFILE         TS0.256.792245841          4097         32           33
TDG               4        257 DATAFILE         TS1.257.792245841          4097         32           33
TDG               4        258 DATAFILE         TS2.258.792245843          4097         32           33

使用了X$KFDAT的样本SQL



select A.NAME                   "GRP_NAME",
       B.PATH                   "DV_NAME",
       A.GROUP_NUMBER           "GRP#",
       B.DISK_NUMBER            "DISK#",
       X.AUNUM_KFDAT            "AU#",
       X.FNUM_KFDAT             "FILE#",
       X.XNUM_KFDAT             "ASM_EXT#",
       X.SIZE_KFDAT             "EXT_SIZE",
       C.NAME                   "FILE_NAME"
  from X$KFDAT "X", V$ASM_DISKGROUP "A", V$ASM_DISK "B", V$ASM_ALIAS "C"
 where X.GROUP_KFDAT    = A.GROUP_NUMBER
   and X.GROUP_KFDAT    = B.GROUP_NUMBER
   and X.NUMBER_KFDAT   = B.DISK_NUMBER
   and X.FNUM_KFDAT     = C.FILE_NUMBER
   and A.GROUP_NUMBER   = B.GROUP_NUMBER
   and A.GROUP_NUMBER   = C.GROUP_NUMBER
   and X.FNUM_KFDAT    != 0
   and C.FILE_NUMBER    < 4294967295
   and C.SYSTEM_CREATED = 'Y'
   and A.NAME           = 'TDG'
 order by GRP#, DISK#, AU# ;

使用了X$KFDAT的样本SQL (部分)


GRP_NAME DV_NAME                GRP#      DISK#        AU#      FILE#   ASM_EXT#   EXT_SIZE FILE_NAME
-------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- --------------------
TDG      /dev/emcpowere1           4          0         15        256          1          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         16        256          5          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         17        256          9          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         18        256         13          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         19        256         17          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         20        256         21          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         21        256         25          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         22        256         29          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         23        257          3          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         24        257          7          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         25        257         11          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         26        257         15          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         27        257         19          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         28        257         23          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         29        257         27          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         30        257         31          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         31        258          2          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         32        258          6          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         33        258         10          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         34        258         14          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         35        258         18          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         36        258         22          4 TS2.258.792245843


使用了X$KFDAT的样本SQL


select A.AU#,
       B.FNUM_KFDAT||' ['||B.XNUM_KFDAT||']' "emcpowere1",
       C.FNUM_KFDAT||' ['||C.XNUM_KFDAT||']' "emcpowerf1",
       D.FNUM_KFDAT||' ['||D.XNUM_KFDAT||']' "emcpowerg1",
       E.FNUM_KFDAT||' ['||E.XNUM_KFDAT||']' "emcpowerh1"
  from (select level + MIN - 1 "AU#"
          from (select min(MIN) MIN, max(MAX) MAX
                  from (select min(AUNUM_KFDAT) "MIN", max(AUNUM_KFDAT) "MAX"
                          from X$KFDAT
                         where GROUP_KFDAT = 4
                           and FNUM_KFDAT != 0
                           and FNUM_KFDAT != 1048575
                         group by NUMBER_KFDAT)
               ) connect by level < MAX + 1) A,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=0) B,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=1) C,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=2) D,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=3) E
 where A.AU#=B.AUNUM_KFDAT(+)
   and A.AU#=C.AUNUM_KFDAT(+)
   and A.AU#=D.AUNUM_KFDAT(+)
   and A.AU#=E.AUNUM_KFDAT(+) ;



另一个使用了X$KFDAT的样本SQL


       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
         2   1  [0]       3  [2]       2  [0]       3  [3]
         3   3  [0]       3  [6]       3  [1]       3  [7]
         4   3  [4]       3 [10]       3  [5]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]
         6   3 [12]       3 [18]       3 [13]       3 [19]
         7   3 [16]       3 [22]       3 [17]       3 [23]
         8   3 [20]       3 [26]       3 [21]       3 [27]
         9   3 [24]       3 [30]       3 [25]       3 [31]
        10   3 [28]       3 [34]       3 [29]       3 [35]
        11   3 [32]       3 [38]       3 [33]       3 [39]
        12   3 [36]       4  [0]       3 [37]     256  [0]
        13   3 [40]       5  [0]       3 [41]     256  [4]
        14   6  [0]     256  [3]       4  [1]     256  [8]
        15 256  [1]     256  [7]       1  [1]     256 [12]
        16 256  [5]     256 [11]     256  [2]     256 [16]
        17 256  [9]     256 [15]     256  [6]     256 [20]
        18 256 [13]     256 [19]     256 [10]     256 [24]
        19 256 [17]     256 [23]     256 [14]     256 [28]
        20 256 [21]     256 [27]     256 [18]     256 [32]
        21 256 [25]     256 [31]     256 [22]     257  [0]
        22 256 [29]     257  [2]     256 [26]     257  [4]
        23 257  [3]     257  [6]     256 [30]     257  [8]



 AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
        24 257  [7]     257 [10]     257  [1]     257 [12]
        25 257 [11]     257 [14]     257  [5]     257 [16]
        26 257 [15]     257 [18]     257  [9]     257 [20]
        27 257 [19]     257 [22]     257 [13]     257 [24]
        28 257 [23]     257 [26]     257 [17]     257 [28]
        29 257 [27]     257 [30]     257 [21]     257 [32]
        30 257 [31]     258  [3]     257 [25]     258  [0]
        31 258  [2]     258  [7]     257 [29]     258  [4]
        32 258  [6]     258 [11]     258  [1]     258  [8]
        33 258 [10]     258 [15]     258  [5]     258 [12]
        34 258 [14]     258 [19]     258  [9]     258 [16]
        35 258 [18]     258 [23]     258 [13]     258 [20]
        36 258 [22]     258 [27]     258 [17]     258 [24]
        37 258 [26]     258 [31]     258 [21]     258 [28]
        38 258 [30]     0 [524640]   258 [25]     258 [32]
        39 0 [524648]   0 [5767528]  258 [29]     0 [524648]
        40 0 [6291824]  0 [6291824]  0 [524656]   0 [6291824]



追加Disk+rebalance后


       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1   emcpoweri1
---------- ------------ ------------ ------------ ------------ ------------
         2   1  [0]       3  [2]     258 [25]       3  [3]       2  [0]
         3 258 [30]       3  [0]     258 [21]       3  [7]       3  [6]
         4   3  [4]       3 [10]       3  [5]       3  [1]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]       3 [16]
         6   3 [12]       3 [18]       3 [13]       3 [19]       3 [21]
         7 258 [26]       3 [22]       3 [17]       3 [23]       3 [26]
         8   3 [20]     258 [31]     258 [17]       3 [27]       3 [31]
         9   3 [24]       3 [30]       3 [25]       5  [0]       3 [36]
        10   3 [28]       3 [34]       3 [29]       3 [35]       3 [41]
        11   3 [32]       3 [38]       3 [33]       3 [39]     256  [0]
        12 258 [22]       4  [0]       3 [37]     258 [32]     256  [5]
        13   3 [40]     258 [27]     258 [13]     256  [4]     256 [10]
        14   6  [0]     256  [3]       4  [1]     256  [8]     256 [15]
        15 256  [1]     256  [7]       1  [1]     256 [12]     256 [20]
        16 258 [18]     256 [11]     256  [2]     256 [16]     256 [25]
        17 256  [9]     258 [23]     256  [6]     258 [28]     256 [30]
        18 256 [13]     256 [19]     258  [5]     256 [24]     257  [2]
        19 256 [17]     256 [23]     256 [14]     256 [28]     257  [7]
        20 256 [21]     256 [27]     256 [18]     256 [32]     257 [12]
        21 257  [0]     256 [31]     256 [22]     258 [20]     257 [17]
        22 256 [29]     258 [15]     256 [26]     257  [4]     257 [22]
        23 257  [3]     257  [6]     258  [1]     257  [8]     257 [27] 
        24 258 [10]     257 [10]     257  [1]     258 [16]     257 [32]
        25 257 [11]     257 [14]     257  [5]     257 [16]     258  [4]
        26 257 [15]     257 [18]     257  [9]     257 [20]     258  [9]
        27 257 [19]     258 [11]     257 [13]     257 [24]     258 [14]
        28 257 [23]     257 [26]     257 [29]     257 [28]     258 [19]
        29 258  [6]     257 [30]     257 [21]     258 [12]     258 [24]
        30 257 [31]     258  [3]     257 [25]     258  [0]     258 [29]
        31 258  [2]     258  [7]     0 [524584]   258  [8]     0 [524584]
        32 0 [524592]   0 [524592]   0 [2097456]  0 [524592]   0 [2097456]



       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
         2   1  [0]       3  [2]       2  [0]       3  [3]
         3   3  [0]       3  [6]       3  [1]       3  [7]
         4   3  [4]       3 [10]       3  [5]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]
         6   3 [12]       3 [18]       3 [13]       3 [19]
         7   3 [16]       3 [22]       3 [17]       3 [23]
         8   3 [20]       3 [26]       3 [21]       3 [27]
         9   3 [24]       3 [30]       3 [25]       3 [31]
        10   3 [28]       3 [34]       3 [29]       3 [35]
        11   3 [32]       3 [38]       3 [33]       3 [39]
        12   3 [36]       4  [0]       3 [37]     256  [0]
        13   3 [40]       5  [0]       3 [41]     256  [4]
        14   6  [0]     256  [3]       4  [1]     256  [8]
        15 256  [1]     256  [7]       1  [1]     256 [12]
        16 256  [5]     256 [11]     256  [2]     256 [16]
        17 256  [9]     256 [15]     256  [6]     256 [20]
        18 256 [13]     256 [19]     256 [10]     256 [24]
        19 256 [17]     256 [23]     256 [14]     256 [28]
        20 256 [21]     256 [27]     256 [18]     256 [32]
        ..........................................
        30 257 [31]     258  [3]     257 [25]     258  [0]
        31 258  [2]     258  [7]     257 [29]     258  [4]
        32 258  [6]     258 [11]     258  [1]     258  [8]
        33 258 [10]     258 [15]     258  [5]     258 [12]
        34 258 [14]     258 [19]     258  [9]     258 [16]
        35 258 [18]     258 [23]     258 [13]     258 [20]
        36 258 [22]     258 [27]     258 [17]     258 [24]
        37 258 [26]     258 [31]     258 [21]     258 [28]
        38 258 [30]     0 [524640]   258 [25]     258 [32]
        39 0 [524648]   0 [5767528]  258 [29]     0 [524648]
        40 0 [6291824]  0 [6291824]  0 [524656]   0 [6291824]






rebalance的操作
重新查看、理解stripe状态

  • 使用ASM File(= Data File)单位均匀分布
  • 移动到追加Disk的File Extent的对象是所有ASM File

–不仅限最后制成的(位于Disk之后)ASM File

  • 被去除的部分中,从位于ASM Disk之后的File Extent(AU)开始向上移动

–这成为compaction处理

https://support.us.oracle.com/oip/faces/secure/km/BugDisplay.jspx?id=6822659&bugProductSource=Oracle&h=Y

 

PSR11.2.0.2以后

 

  • 可以变更PSR11.2.0.2~rebalance強度(power_limit)的操作

–传统的版本中的设置范围是「0~11」

–11.2.0.2以后的设置范围是「0~1024」

  • 但是如果11.2.0.2没有设定ASM Diskgroup的COMPATIBILITY属性的话,12以上就不能设置了

–PSR11.2.0.3环境中的COMPATIBILITY属性默认为11.2.0.0.0

 

alter diskgroup <ASM Diskgroup Name>
set attribute ‘compatible.asm’=’11.2.0.2.0’;

 

ARB0进程与power_limit参数

 

  • 启动执行rebalance的ARB0进程的节点是一个

–ARB0进程无法复数启动

  • power_limit的値是ARB0进程同时执行的非同步I/O数

–根据不同的存储I/O性能,设定合适的值

 

 

set linesize 150

select * from V$ASM_OPERATION ;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE

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

           3 REBAL RUN         128        128         71      31408        945          33

$ ps -efH|grep arb|grep -v grep

grid     11242     1  4 21:16 ?        00:00:04   asm_arb0_+ASM1

 

 

Oracle ASM中Disk故障时的操作

可以完善存储的缺点

  • 前提是Mirroring结构

–读取处理时,检测到I/O错误的情况

  • 从secondary中读取,自动修复不良块

–写入处理中,检测到I/O错误的情况

  • 自动online处理故障Disk
  • 通过高速镜像再同步,可以从生存disk中同步最小限度的数据

–绑定多个存储器的环境中,没有写入时,修复之后,无法识别存储到底是不是新的存储。但通过使用ASM的话就可以识别

 

 

Mirroring与故障group

  • 可以设定每个文件的Mirroring(External/Normal/High)

–保存在不同的故障group所属ASM Disk之中

–一般都是通过共享资源(电源灯)的单位(筐体/控制器)来设定

asmz14

 

 

考虑了Disk的二重故障的构成方法

RAID1+0 × Normal vs. RAID0 × High

 

  • RAID1+0 × ASM Normal Redundancy

–RAID与ASM中,对应各自的镜像

–但是,磁盘使用量为4倍(=2×2)

  • RAID0 × ASM High Redundancy

–RAID虽然没有镜像,但可以用ASM的三重镜像来处理

–磁盘使用量为3倍(=1×3)

–虽然最好是没有RAID,但通过减少Logical Unit数量还是可以提高管理性能

  • Disk故障时、因为包含Disk,RAID group整体都无法使用了,所以需要充分考虑性能,来决定RAID0的个数

 

RAID1+0 × Normal vs. RAID0 × High

保障各个结构可用性的构造图

 

asmz15

RAID1+0 × Normal vs. RAID0 × High

Write时的I/O量与分散状況

 

asmz16

 

Read时访问的Disk数

asmz17

 

 

ASM High Redundancy的优点

ASM是处理二重故障的最优选项

  • 比较前一页中的各个结构时,发现
    RAID0 + ASM High Redundancy好多了

–实际上最好的是搭载Infiniband的Exadata。

 

RAID1+0 × Normal RAID0 × High
Disk使用量 4 3
Write时存储内的I/O量 4 3
Write时写入的Disk数 8 12
Write时的FC带宽的数据量 2 3
Read时访问Disk数 6 12

 

考虑导入Thin Provisioning的背景

前提是与Oracle ASM一起使用

  • 减少磁盘追加工数
  • 尽量规避通过ASM追加磁盘时进行rebalance

asmz18

 

 

  • 对I/O性能要求不高的小规模多个数据库都集中在一个较大的存储器中时

–通过将使用率与现实使用量相协调,可以大幅减少成本

–多个数据库之间,不执行存储管理的操作(制成/删除RAID Group、切换LU、分割服务器等)、通过熟练使用物理Disk,可以减少使用的人工

–ASM并不是不支持Sympro

  • 特别是储存数据库的表区域的数据的结构与Sympro很相似

 

关键点1 – stripe导致的性能恶化

重视I/O性能的数据库中ASM与Sympro的组合

我重新想了下,CoreTech资料中记载的注意点1是不正确的。我将分两点来进行阐述。

首先。
Sympro从存储中将多个RAID group绑定在一起,对OS展示虚拟volume。
换言之,一个虚拟volume会跨越多个RAID group来切换。
将各个RAID group中分配的单位称为page,CoreTech资料中说的42MB就是这个page的尺寸。
并且,这个page也会在各个RAID group中对各个磁盘进行详细的stripe。

然后。
ASM存储时推荐的stripe尺寸与手册上推荐的相同,2的乘方~AU尺寸。
推荐这个的目的是一个AU可以在多个HDD中分散I/O。
# 换言之,即使将一个AU在多个HDD中分割也没有问题。
反之,超过AU尺寸的stripe尺寸的话,就代表I/O分散情况没有问题。

考虑到上述两点的话,
本来在比AU尺寸小的话,推荐stripe尺寸的阶段中,一个AU(File Extent)会在多个磁盘中被分割。换言之,即使一个AU被多个page分割也不会有任何问题。
并且,Sympro的page是指,各RAID group分割的单位,因为其中之一的page是通过比RAID group内的各磁盘要小的stripe宽度来分割的,所以可以分割I/O。

因此,CoreTech的记录(关键点1)是正确的。但是,关键点2/3也是对的,在需求较高性能的数据库中不推荐Sympro。

 

关键点2 -rebalance的思想差异造成的性能恶化

重视I/O性能重視的数据库中,ASM与Sympro的组合

  • 即使使用ASM均匀分散了,也可能出现在特定的物理disk集中访问(可能发生Hotspot)
  • rebalance的思想

–ASM:每个Data File中都在所有ASM Disk(LU)中均匀分散了

  • 对所有的LU按照I/O要求均匀分散,提高I/O性能
  • 考虑到数据库对象的机制

–TP:Storage Pool中的RAID Group的使用率均衡化

  • 考虑到数据库对象的机制
  • 无法根据访问频率来分散

 

关键点3 –使用的複雑化

关键点2 -rebalance的思想不同导致的性能恶化

  • 多个存储虚拟化layer可能导致trouble shooting的延迟以及误操作

– 利用TP时,无法解析RAID Group单位的I/O性能

  • 顶多到理论Volume水平。
  • 解放空白区域时,需要执行特别的utility

–ASM Diskgroup中追加Disk,进行rebalance后,现有的ASM Disk中就会产生空白区域,但是TP中无法自动认识空白区域

  • ASM Storage Reclamation Utility (ASRU)
  • Zero Page Reclamation Utility

 

ASM Storage Reclamation Utility (ASRU)

存储中识别空白区域的utility

  • SR 3-3222667411: RC:ASRU resize was not successful when ASM allocation unit size is 32MB

https://support.us.oracle.com/oip/faces/secure/ml3/sr/SRDetail.jspx?SRNumber=3-3222667411

  • SR 3-3214700961: ASRU should not reclaim space when disk failed to be resized to smaller size

https://support.us.oracle.com/oip/faces/secure/ml3/sr/SRDetail.jspx?SRNumber=3-3214700961

  • 通过Oracle ASM Storage Reclamation Utility与3PAR Thin Persistence的合作,维持较高的存储使用率

http://www.oracle.com/technetwork/jp/database/1005199-oracle-asru-3par-final-321864-ja.pdf

  • ASUR Download à ASM Storage Reclamation Utility (ASRU) Download

http://www.oracle.com/us/products/database/index-100339.html

http://www.oracle.com/technetwork/products/cloud-storage/asruv12-1517734.html?ssSourceSiteId=ocomen

 

 

 

存储产品的自动阶层化功能

可以与ASM配合使用

  • 分析过去的I/O实绩,在某个时点自动重新配置数据
  • 根据访问频率,将数据移动到合适的device(SSD or HDD)中

 

asmz19

 

使用Oracle Database的注意事项

通过自动阶层化功能进行不透明化(1)

  • 分析过去的I/O实绩,在某个时点重新自动配置数据

–以往所有的I/O实绩并不一定是平时使用的I/O需求

  • 包含维护时以及故障时的I/O需求
  • 由于访问模式(天or月、白天 or 晚上、临时表)
    访问数据时间可能产生偏差

–基于device特性与搭载量,为了运行率不产生偏差,需要使得数据配置最优化

  • SSD: 适合Small Random Read HDD: 适合Large Sequential Read

仅凭过去的I/O实绩很难实现最优化

 

  • 分析过去的I/O实绩,在某个时点重新自动配置数据

–重新配置数据会使得device以及控制数据产生CPU负荷

  • 需要考虑I/O需求的时机与再配置的事务影响进行设计

数据再配置的时机以及周期设计比较困难

 

  • 分析过去的I/O实绩,在某个时点重新自动配置数据

–可以无视数据库结构在存储中重新配置

  • 一个表数据被分配到SSD与HDD的中进行配置时,因为
    段(表/索引)单位、表区域(数据文件)单位的I/O性能都会变成平均値,所以很难指定瓶颈

–同时分析数据库与存储的性能信息

  • 很难重现数据配置以及发生问题时的具体状况

找出性能问題的原因是一项长期工作

 

通过Oracle Database功能实现存储的阶层化

Database Smart Flash Cache & Partitioning

 

asmz20

 

 

 

 

 

 

 

 

 

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *