負荷に応じた動的なデータの再配置

 ディスク・グループとは,論理ユニットで管理されるディスクの集合となる。ASMでは,ファイルが割り当てられたときに,ディスク・グループ内のすべてのディスクでファイルが必ず均等に分散してI/Oのバランスを確保する。そのため,ストレージの構成が変更されたとき以外は,バランスの再調整は必要ない。ファイルが割り当てられたとき,およびストレージの構成が変化したときには必ずI/Oのバランスが調整されるため,ディスク・グループ内でホット・スポットを検索し,手動でデータを移動して,I/O負荷のバランスを調整する必要もない。ASM以外の環境においてはI/O調整がしばしば必要になるため,ASMのI/Oロード・バランシング機能はデータベース管理者にとって多大な時間の節約となる。

 ASMがデータを分散させるために使用しているアルゴリズムは,従来のRAIDの厳密なストライピングではないため,ASMはすべてのデータをストライピングしなおす必要はない。追加または削除されたストレージの量に比例したデータ量を移動して,ファイルを均等に再配置し,1つのディスク・グループ内のディスク全体でI/Oの負荷を調整するだけで解決する。

 ロード・バランシングの効果を最大限に活かすためには,ディスク・グループのすべての論理ユニットが同等のサイズおよびパフォーマンスを持ち,同じスピンドルを共有しないことが重要である。ASMは,複数のファイルを1Mバイトのエクステントに分けて,各ファイルのエクステントをディスク・グループ内のすべてのディスク間に均等に分散する。ASMは算術関数を使用する代わりにポインタを使用して,エクステントの場所を記録し,各エクステントの配置を追跡する。

 時間的な遅延を極力少なくしたいログ・ファイルのようなファイルに対して,ASMは詳細な128Kバイトのストライピングを用意しており,これによって,多数のI/Oを分割し,複数のディスクで並行して処理することができる。ファイルの作成時に,このような細分化されたストライピングを使用するかどうかを決定できる。

3種類のミラーリング機能

 ASMは,(1)外部冗長性(external),(2)通常冗長性(normal),(3)高冗長性(high)の3種類のミラーリング機能を提供する。(1)外部冗長性はミラーリングを行わない。ハードウエア・ミラーリングを行う,あるいはディスク障害が発生した時に,データの消失を容認できる場合は,外部冗長性ディスク・グループを選択する。

 (2)通常冗長性では,2重のミラーリングを行う。ASMは独自のミラーリング・アルゴリズムを採用し,ディスクの完全なミラーリングは行わず,1Mバイトのエクステントをミラーリングする。ディスク・グループに余裕があれば,予備ディスクを準備する必要なくミラーリングすることができる。ディスクに障害が発生すると,ASMはミラーリングされた内容を読み込んで障害の発生したディスクの内容を,残ったディスク・グループ内に自動的に再構築する。ASMがファイルのプライマリ・エクステントをディスク・グループ内の1つのディスクに割り当てると,そのエクステントのミラー・コピーがディスク・グループ内の別のディスクに割り当てられる。ディスク・グループの各ディスクにおいて,プライマリ・エクステントおよびミラー・エクステントの割合は同じになる。

 さらに,(3)高冗長性は3重ミラーリングを行う。電源やコントローラの障害時にもデータの損失が発生しないようにする障害グループ機能がある。障害グループ(フェイラー・グループ)は,電源やコントローラなどのリソースを共有するディスクのグループになる。これにより,ASMではプライマリ・エクステントとそのミラー・コピーは同じ障害グループには存在しないようにデータを管理し,電源やコントローラの障害時にも耐えられるような仕組みがある。つまり,あるコントローラに障害が発生しても,正常なコントローラに属している障害グループのディスク・グループにサービスを停止することなくアクセスすることができるようにする。

 ただし,ASMのミラーリングの機能を利用している場合,データベース・インスタンスは,ミラーリング・データも書き込む。そのため,2重化している場合は,ミラーリングしていない場合に比べて2倍のI/Oが発生する。

容易なASMの管理

 ASMの設定はシンプルになっている。多くの場合,2つのディスク・グループを作成し,1つをリカバリ領域に,もう1つを作業領域に設定する。その上で,ミラーリングの方法を決定するだけである。ディスク・グループの作成や削除など,ASMのすべての管理コマンドは,ASMファイルを使用しているデータベース・インスタンスではなく,ASMインスタンスに直接命令することになる。具体的には,新しいSQLコマンド(create diskgroup,alter diskgroup,およびdrop diskgroup)を使用してディスクの追加や削除などのストレージの割り当てを指示することができる(図3)。

 また,Oracle Enterprise Manager(OEM)およびDatabase Configuration Assistant(DBCA)を使用してディスク・グループを管理することもできる。また,ディスク・グループのステータスおよびASMの属性は,Oracle Enterprise ManagerとASMインスタンスのV$ビュー*2を使用して参照することができる。

・ディスク・グループの作成
例: SQL> CREATE DISKGROUP dgroupA NORMAL REDUNDANCY DISK
'/dev/rdsk/c0t1d0s2' NAME disk1,
'/dev/rdsk/c0t2d0s2' NAME disk2,
'/dev/rdsk/c0t3d0s2' NAME disk3,
'/dev/rdsk/c0t4d0s2' NAME disk4;

・ディスクの追加,削除
例(ディスクの追加):
SQL> ALTER DISKGROUP dgroupA ADD DISK
‘/dev/rdsk/c0t5d0s2’ NAME disk5;
例(ディスクの削除):
SQL> ALTER DISKGROUP dgroupA DROP DISK disk5;

・表領域の作成
例: SQL> CREATE TABLESPACE tablespace_name DATAFILE ‘+dgroupA’ SIZE 100M;(*)
(*):表領域の作成などのSQL文でディスク・グループを指定する場合は,ディスク・グループ名の先頭に‘+’を付ける
図3●ASMの設定方法
ディスク・グループの作成や削除はASMインスタンスに直接命令する。新しいSQLコマンドを用いてストレージの割り当てを指示する。ディスク・グループのステータスなどはASMインスタンスのV$ビューを使用して参照できる

新たなベスト・プラクティスとは

図4●管理コストの比較
図4●管理コストの比較
日本オラクルで試算したところ,ASMによる管理と従来の管理方法と比較した場合,管理ステップが簡略化され,管理作業の複雑性が排除できることが分かった
 ASMは,従来の管理方法と比較した場合,管理ステップを大幅に簡略化させ,ほぼすべての管理作業の複雑性を排除する(図4[拡大表示])。その理由は,(1)ダイレクトI/Oの利用,(2)非同期I/O,(3)ロード・バランシング,(4)ストライピング,(5)ミラーリング,(6)バランス調整といった作業をいずれもASMが担うためである。

 (1)ASMは,OSのファイル・システムの自動バッファに関連するすべてのパフォーマンス障害を回避できる。そのためDBAがプラットフォーム固有のダイレクトI/O構成の問題に悩まされることがなくなる。(2)カーネル化された非同期I/Oは,ASMファイルに対して自動的に実施される。Rawデバイスや高価なサード・パーティ・ソフトウエアを使用する必要がなくなる。(3)ASMは,すべてのI/Oを可能な限り広範囲に自動的に分散し,有効なI/O容量の最大限の利用が可能となる。(4)ログ・ファイルは極め細かいストライピング,データ・ファイルは大まかなストライピングによってスループットを最適化する。(5)ハードウエアのミラーリングが有効でなければ,ASMミラーリングを使用するなどの使い分けができる。(6)ディスク・グループに新しいディスクが追加されると,サービスを停止することなく自動的にバランスの再調整が実施される。

 (1)から(6)はストレージに関するベスト・プラクティスであり,この機能をASMが備えることで,DBAの作業負荷を軽くすることができる。

(北嶋 伸安=日本オラクル マーケティング本部 システム製品マーケティンググループ シニアマネジャー)