ASM Disk Group管理

Disk Group構成時のガイドライン

  • 1つのディスク・グループ内のディスクは、サイズとパフォーマンス特性がほぼ同じであることが必要です。サイズとパフォーマンスの点で異なるタイプのディスクが複数ある場合は、タイプ別にディスク・グループを編成することをお薦めします。
  • リカバリの理由から、データベース・ファイルとフラッシュ・リカバリ領域ファイルには別々のディスク・グループを指定することをお薦めします。このように編成すると、1つのディスク・グループが失われた場合でも、データベースは影響を受けません。
  • 複数のディスクを同時に追加または削除すると、1回の操作で再バランスを実行できるため効率的です。これによって、不要なデータの移動を回避できます。ディスクの追加または削除は、データベースを停止せずに実行できます。ただし、I/Oアクティビティのパフォーマンスに影響を与える場合があります。

障害グループ

  • ディスクが障害グループに割り当てられると、別の障害グループに再割当てできません。ディスクを別の障害グループに割り当てる必要がある場合は、そのディスクをディスク・グループから削除して再度追加します。選択する障害グループはハードウェア構成によって異なるため、ディスクが物理的に移動しないかぎり、ディスクを再割当てする必要はありません。
  • ディスク・グループ内の各ディスクは、それぞれ1つの障害グループに属します。
  • すべての障害グループは同じサイズにすることをお薦めします。障害グループのサイズが異なると、ディスク領域を浪費する可能性があります。
  • ASMでは、通常の冗長性のディスク・グループを作成する場合は2つ以上の障害グループ、高い冗長性のディスク・グループを作成する場合は3つ以上の障害グループが必要です。これは、障害グループを明示的に定義していない場合、通常の冗長性のディスク・グループでは2つ以上のディスク、高い冗長性のディスク・グループでは3つ以上のディスクが必要であることを意味します。
  • ほとんどのシステムでは、障害グループを明示的に定義する必要はありません。すべてのディスクを独自の障害グループに配置するデフォルト動作は、ほとんどのインストールで正常に機能します。障害グループが必要なのは、個別のスピンドル障害以外の障害に対して保護する必要がある大規模で複雑なシステムの場合のみです。
  • 障害グループが適用されるのは、通常の冗長性および高い冗長性のディスク・グループのみです。
  • 通常の冗長性のディスク・グループは、1つの障害グループの障害を許容できます。複数の障害グループで障害が発生した場合、ASMはディスク・グループをディスマウントします。
  • 高い冗長性のディスク・グループは、2つの障害グループの障害を許容できます。3つ以上の障害グループで障害が発生した場合、ASMはディスク・グループをディスマウントします。

Disk Groupミラー化

  • ミラー化タイプは非保護(External-redundancy)、2方向ミラー化(two-way)、3方向ミラー化(three-way)の三種類となります。
  • ASMミラー化は独自のmirroringアルゴリズムでディスクミラーでなく、エクステントレベルでミラー化にします。
  • ASMはあるファイルのプライマリエクステントとミラーエクステントを同じディスクグループの異なるディスクに配置します。
  • ASMはあるプライマリエクステントとそのミラーコピーエクステントが同じ障害グループに共存しないことを保証します。
  • Two-wayの場合は最低限2つの障害グループで、Three-wayの場合は三つの障害グループが最低限となります。

動的なDisk Group再バランス

  • Disk Groupが変更された時、例えば、ディスク追加、削除、ASMは自動的にDisk Groupを再バランスします。
  • Disk Groupが変更された時、I/Oロードバランスを均等に分散するため、全てのデータでなく、一部のデータを再バランスされます。
  • ファイル配置、ストレージ構成変更の時、I/Oロードバランスを保つため、DBAは手動でDisk Groupのホットスポットを見つけたり、データを移動したりする必要がありません。
  • 一度の操作で複数のディスク追加、削除のほうは効率が良いです。

Disk Group作成と削除

Disk Group作成:CREATE DISKGROUP

SQL> CONNECT / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP NOMOUNT
SQL> CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY 
  2  FAILGROUP controller1 DISK
  3 '/devices/diska1',
  4 '/devices/diska2',
  5 '/devices/diska3',
  6 '/devices/diska4'
  7 FAILGROUP controller2 DISK
  8 '/devices/diskb1',
  9 '/devices/diskb2',
 10 '/devices/diskb3',
 11 '/devices/diskb4';
  • 冗長性レベルにはNORMAL REDUNDANCY(2-way)とHIGH REDUNDANCY(3-way)、EXTERNAL REDUNDANCY(ミラー化無し)を指定します。
  • ディスク・グループに属するディスクに対してNAME句を指定しないと、ディスクにはdgroup1_0001、dgroup1_0002、… dgroup1_0008という名前が割り当てられます。
  • FORCE句によって別のDisk Groupに属しているディスクを作成するDisk Groupのメンバーに出来ますが、デフォルト(NOFORCE)の場合はエラー発生して作成できません。

Disk Group削除:DROP DISKGROUP

DROP DISKGROUP dgroup1 INCLUDING CONTENTS;

デフォルトはEXCLUDING CONTENTSとなります。

Disk Groupの変更

Disk Groupへのディスク追加:ALTER DISKGROUP…ADD DISK…

1. 下記、ALTER DISKGROUP文にはFAILGROUP句が指定されていないため、各ディスクには独自の障害グループが割り当てられます。
ALTER DISKGROUP dgroup1 ADD DISK
'/devices/diska5' NAME diska5,
'/devices/diska6' NAME diska6;

ALTER DISKGROUP dgroup1 ADD DISK
'/devices/diska*';

2. 下記の文は再バランスの指数5を設定して実行され、再バランス操作が完了するまで戻されません。
ALTER DISKGROUP dgroup1 ADD DISK
'/devices/disk*5',
'/devices/diskd*'
REBALANCE POWER 5 WAIT;

3. FORCE句を使用すると、現在dgroup2以外のグループのメンバーである/devices/diskc3がdgroup2に追加されます。
ALTER DISKGROUP dgroup2 ADD DISK
'/devices/diskc3' FORCE;

Disk Groupからディスクの削除:ALTER DISKGROUPDROP DISK

ALTER DISKGROUP dgroup1 DROP DISK diska5;
  • 指定した障害グループ内のすべてのディスクを削除する場合は、DROP DISKS IN FAILGROUP句を使用します。
  • ALTER DISKGROUPDROP DISK文は、削除操作および再バランス操作が完了する前に戻されます。
  • 削除したディスクは、V$ASM_DISKビューにあるそのディスクのHEADER_STATUS列がFORMERに変更されるまで、再利用、削除または切断しないでください。
  • V$ASM_OPERATIONビューを問い合せて、削除または再バランス操作が完了するまでの残り時間を確認できます。
  • 削除操作でFORCE句を指定すると、自動ストレージ管理が読取りや書込みができないディスクも削除されます。ディスクを外部の冗長性のディスク・グループから削除する場合は、FORCEフラグを使用できません。DROP FORCE操作では、後続の再バランス操作が完了するまでの間、データの冗長性は低下したままです。このため、後続の再バランス中にディスク障害が発生した場合、データが消失する危険性が高くなります。DROP FORCEは、慎重に使用してください。

Disk Groupからディスク削除の取り消し:ALTER DISKGROUP…UNDROP DISKS

  • ディスクの削除操作がすでに完了している場合は、この文を使用して削除を取り消すことはできません。
  • DROP DISKGROUP文の結果として、またはFORCE句を使用して削除したディスクは、この文を使用してもリストアできません。

Disk Group内のディスクのサイズ変更:ALTER DISKGROUP…RESIZE

ALTER DISKGROUP dgroup1 
     RESIZE DISKS IN FAILGROUP failgrp1 SIZE 100G;

Disk Groupの手動による再バランス:ALTER DISKGROUP…REBALANCE

ALTER DISKGROUP dgroup2 REBALANCE POWER 5 WAIT;
  • ALTER DISKGROUP…REBALANCE文のPOWER句によってパラレル化の程度が指定されるため、再バランス操作の処理速度が決定します。
  • 進行中の再バランス操作の指数レベルは、REBALANCE文に新しいレベルを入力すると変更できます。
  • ALTER DISKGROUP…REBALANCEコマンドはデフォルトですぐに戻されるため、再バランス操作が非同期にバックグラウンドで実行されている間、別のコマンドを発行できます。
  • 再バランス操作のステータスを確認するにはV$ASM_OPERATIONビューを問い合せます。
  • 再バランス操作が完了するまで待機してからALTER DISKGROUP…REBALANCEコマンドを戻す場合は、WAITキーワードをREBALANCE句に追加できます。これは特にスクリプトで役立ちます。このコマンドはNOWAITキーワードも受け入れます。

Disk Groupのマウントとディスマウント:ALTER DISKGROUP…MOUNT/DISMOUNT

ALTER DISKGROUP ALL DISMOUNT;

ALTER DISKGROUP dgroup1 MOUNT;
  • オープン・ファイルが含まれているディスク・グループをディスマウントしようとすると、FORCE句を指定していないかぎり、文は失敗します。

Disk Groupメタデータの内部一貫性チェック:ALTER DISKGROUP…CHECK

ALTER DISKGROUP dgroup1 CHECK ALL;
  • ALTER DISKGROUP…CHECK文でNOREPAIR句を指定しないかぎり、自動ストレージ管理はエラーを解決しようとします。
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License