2.3.3.1 使用可能な領域量の確認

ディスク・グループ内のディスクのサイズを増やすには、割り当てられていないディスク領域を使用可能にするか、異なるディスク・グループが現在使用している領域を割り当てなおす必要があります。

また、Exadataで新規グリッド・ディスクおよびディスク・グループのサイズを計算するためのスクリプト(My Oracle Support Doc ID 1464809.1)で使用可能なスクリプトを使用すると、ディスク・グループを縮小するために使用可能な量の空き領域の判別に役立ちます。

  1. ディスク・グループが現在使用している領域を確認します。
    SELECT name, total_mb, free_mb, total_mb - free_mb used_mb, round(100*free_mb/total_mb,2) pct_free
    FROM v$asm_diskgroup
    ORDER BY 1;
    
    NAME                             TOTAL_MB    FREE_MB    USED_MB   PCT_FREE
    ------------------------------ ---------- ---------- ---------- ----------
    DATAC1                           68812800    9985076   58827724      14.51
    RECOC1                           94980480   82594920   12385560      86.96

    この例では、DATAC1ディスク・グループの使用可能な空き領域は約15%しかありませんが、RECOC1ディスク・グループには約87%の空きディスク領域があります。ここに示されているPCT_FREEは、使用可能な空き領域ではなく、RAW空き領域です。リバランス操作用に追加の領域が必要です。

  2. サイズを変更するディスク・グループについて、ディスク・グループが使用する障害グループの数および状態を確認します。
    SELECT dg.name, d.failgroup, d.state, d.header_status, d.mount_mode, 
     d.mode_status, count(1) num_disks
    FROM V$ASM_DISK d, V$ASM_DISKGROUP dg
    WHERE d.group_number = dg.group_number
    AND dg.name IN ('RECOC1', 'DATAC1')
    GROUP BY dg.name, d.failgroup, d.state, d.header_status, d.mount_status,
      d.mode_status
    ORDER BY 1, 2, 3;
    
    NAME       FAILGROUP      STATE      HEADER_STATU MOUNT_S  MODE_ST  NUM_DISKS
    ---------- -------------  ---------- ------------ -------- -------  ---------
    DATAC1     EXA01CELADM01  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM02  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM03  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM04  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM05  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM06  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM07  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM08  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM09  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM10  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM11  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM12  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM13  NORMAL     MEMBER        CACHED  ONLINE   12
    DATAC1     EXA01CELADM14  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM01  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM02  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM03  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM04  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM05  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM06  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM07  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM08  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM09  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM10  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM11  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM12  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM13  NORMAL     MEMBER        CACHED  ONLINE   12
    RECOC1     EXA01CELADM14  NORMAL     MEMBER        CACHED  ONLINE   12
    

    この例はラック全体の表示で、DATAC1およびRECOC1のセルが14個、障害グループが14個あります。各障害グループにNORMAL状態のディスクが12個以上(num_disks)あることを確認します。MISSINGと表示されるディスクがある場合、または構成で予期しない数のディスクが表示される場合は、問題を解決してから続きを行います。

    Extreme Flashシステムでは、ディスク数としてnum_disksに12ではなく8が表示されます。

  3. 各セルおよび各障害グループに関連付けられているグリッド・ディスクを表示して、サイズを変更するグリッド・ディスクを確認します。
    SELECT dg.name, d.failgroup, d.path
    FROM V$ASM_DISK d, V$ASM_DISKGROUP dg
    WHERE d.group_number = dg.group_number
    AND dg.name IN ('RECOC1', 'DATAC1')
    ORDER BY 1, 2, 3;
    
    NAME        FAILGROUP      PATH
    ----------- -------------  ----------------------------------------------
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_00_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_01_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_02_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_03_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_04_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_05_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_06_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_07_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_08_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_09_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_10_exa01celadm01
    DATAC1      EXA01CELADM01  o/192.168.74.43/DATAC1_CD_11_exa01celadm01
    DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_00_exa01celadm01
    DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_01_exa01celadm01
    DATAC1      EXA01CELADM02  o/192.168.74.44/DATAC1_CD_02_exa01celadm01
    ...
    RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_00_exa01celadm13
    RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_01_exa01celadm13
    RECOC1      EXA01CELADM13  o/192.168.74.55/RECOC1_CD_02_exa01celadm13
    ...
    RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_09_exa01celadm14
    RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_10_exa01celadm14
    RECOC1      EXA01CELADM14  o/192.168.74.56/RECOC1_CD_11_exa01celadm14  
    
    168 rows returned.
  4. セル・ディスクの使用可能な空き領域を確認します。
    セル・ディスクの空き領域を使用して、DATAC1グリッド・ディスクのサイズを増やすことができます。DATAC1グリッド・ディスクを拡大する使用可能な空き領域が十分にない場合、RECOC1グリッド・ディスクを縮小して、DATAC1グリッド・ディスクの新しいサイズ用に追加の領域を用意する必要があります。
    [root@exa01adm01 tmp]# dcli -g ~/cell_group -l root "cellcli -e list celldisk \
      attributes name,freespace" 
    exa01celadm01: CD_00_exa01celadm01 0 
    exa01celadm01: CD_01_exa01celadm01 0 
    exa01celadm01: CD_02_exa01celadm01 0 
    exa01celadm01: CD_03_exa01celadm01 0 
    exa01celadm01: CD_04_exa01celadm01 0 
    exa01celadm01: CD_05_exa01celadm01 0 
    exa01celadm01: CD_06_exa01celadm01 0 
    exa01celadm01: CD_07_exa01celadm01 0 
    exa01celadm01: CD_08_exa01celadm01 0 
    exa01celadm01: CD_09_exa01celadm01 0 
    exa01celadm01: CD_10_exa01celadm01 0 
    exa01celadm01: CD_11_exa01celadm01 0 
    ...

    この例では、使用可能な空き領域がないため、最初にRECOC1グリッド・ディスクを縮小して、DATAC1グリッド・ディスク用に領域を用意する必要があります。使用可能な空き領域が十分にある構成では、RECOC1グリッド・ディスクを縮小するかわりに、その空き領域を使用できます。

  5. RECOC1グリッド・ディスクおよび各グリッド・ディスクから縮小する領域の量を計算します。

    ディスク・グループおよびそのグリッド・ディスクを安全に縮小する最小サイズについては、次の点を考慮する必要があります。

    • 現在使用中の領域(USED_MB)

    • 拡大に想定される領域(GROWTH_MB)

    • ディスク障害発生時のリバランスに必要な領域(DFC_MB) (通常は合計ディスク・グループ・サイズの15%)

    前述の要素を考慮に入れた、最小サイズの計算は次のようになります。

    Minimum DG size (MB) = ( USED_MB + GROWTH_MB ) * 1.15 
    • USED_MBは、TOTAL_MB - FREE_MBを計算して、V$ASM_DISKGROUPから算出できます

    • GROWTH_MBは、ディスク・グループの将来の使用方法によって異なる推定量であり、拡大の過去のパターンに基づいている必要があります

    ステップ1で示したRECOC1ディスク・グループの領域を使用する場合、拡大推定量がないと仮定すると、縮小可能な最小サイズは、次のようになります。

    最小RECOC1サイズ = (TOTAL_MB - FREE_MB + GROWTH_MB) * 1.15

    = ( 94980480 - 82594920 + 0) * 1.15 = 14243394 MB = 13,910 GB

    ステップ1の出力例では、RECOC1には十分な空き領域がありますが、DATAC1の空き領域は15%未満です。よって、RECOC1を縮小し、解放されたディスク領域をDATAC1に付与します。RECOC1のサイズを現在の半分に減らす場合、新しいサイズは94980480 / 2 = 47490240MBになります。このサイズは、前述のRECOC1ディスク・グループに対して計算した最小サイズを大幅に上回る値です。したがって、安全にこの値に縮小できます。

    ステップ2の問合せでは、RECOC1に168個のグリッド・ディスクがあることがわかりました。14個のセルがあり、セルごとに12個のディスクがあるためです(14 * 12 = 168)。RECOC1ディスク・グループの各グリッド・ディスクの新しい推定サイズは、47490240 / 168、すなわち282,680MBになります。

    新しいグリッド・ディスクのサイズに対して最も近い16MB境界を見つけます。このチェックを実行しないと、セルによって、最も近い16MBごとの境界にグリッド・ディスク・サイズが自動的に切り下げられるため、Oracle ASMディスクとグリッド・ディスクの間でサイズの不一致が発生することがあります。

    SQL> SELECT 16*TRUNC(&new_disk_size/16) new_disk_size FROM dual;
    Enter value for new_disk_size: 282680
    
    NEW_DISK_SIZE
    -------------
           282672

    この結果から、RECOC1ディスク・グループのグリッド・ディスクの新しいサイズとして282672MBを選択します。グリッド・ディスクのサイズ変更後のRECOC1ディスク・グループのサイズは47488896MBになります。

  6. DATAC1ディスク・グループの各グリッド・ディスクのサイズの増加量を計算します。

    Oracle ASMディスクのサイズとグリッド・ディスクのサイズがディスク・グループ全体で一致するようにします。次の問合せでは、各ディスク・グループのディスクのサイズが表示されます。すべてのディスクのサイズが同じで、Oracle ASM (total_mb)ディスクとグリッド・ディスク(os_mb)のサイズが一致しているのが理想です。

    SELECT dg.name, d.total_mb, d.os_mb, count(1) num_disks
    FROM v$asm_diskgroup dg, v$asm_disk d
    WHERE dg.group_number = d.group_number
    GROUP BY dg.name, d.total_mb, d.os_mb;
    
    NAME                             TOTAL_MB      OS_MB  NUM_DISKS
    ------------------------------ ---------- ---------- ----------
    DATAC1                             409600     409600        168
    RECOC1                             565360     565360        168
    

    RECOC1のグリッド・ディスクを縮小した後のDATAC1の各ディスクの領域は次のとおりです。

    DATAC1ディスクの追加領域 = RECOC1の現在のサイズ - RECOC1の新しいサイズ
                                                           = 565360 - 282672 = 282688MB

    DATAC1ディスク・グループのグリッド・ディスクの新しいサイズを計算するには、次を使用します。

    DATAC1のディスクの新しいサイズ = DATAC1の現在のサイズ - RECOC1の新しいサイズ
                                                         񤀀 = 565360 - 282688 = 692288MB

    新しいグリッド・ディスクのサイズに対して最も近い16MB境界を見つけます。このチェックを実行しないと、セルによって、最も近い16MBごとの境界にグリッド・ディスク・サイズが自動的に切り下げられるため、Oracle ASMディスクとグリッド・ディスクの間でサイズの不一致が発生することがあります。

    SQL> SELECT 16*TRUNC(&new_disk_size/16) new_disk_size FROM dual;
    Enter value for new_disk_size: 692288
    
    NEW_DISK_SIZE
    -------------
           692288

    問合せ結果から、DATAC1ディスク・グループのディスクの使用可能なサイズは692288MBになります。この計算されたサイズは16MB境界上にあります。問合せ結果と指定した値が異なる場合、セルがグリッド・ディスクのサイズをその値に四捨五入することから、問合せで返された値を使用する必要があります。

    新しいグリッド・ディスクのサイズの計算値により、DATAC1ディスク・グループの合計サイズは116304384MBになります(168個のディスク * 692288MB)。