ASM(automatic storage management)とは

ASMとは10g以降に追加されたoracleのストレージ管理機能であり、主に以下のようなRAIDのようなストレージ機能とファイルシステム機能を組み合わせたような機能を持っています。

・DISKのミラーリングやストライピング
・論理ボリュームマネージャのような動的な領域の追加や削除
・ASM領域内でのファイルやディレクトリの管理

ASMとして使用するDISKはraw(ファイルシステムでフォーマットされていない状態)である必要があり、ASMはこの未フォーマットの領域に対して直接参照、更新を行います。


ASMの仕組み

ASMで使用する一つから複数のrawデバイスパーティションの集合をディスクグループと呼びますが、ディスクグループ内の領域を使うためにはASMインスタンスと呼ばれるプログラムを起動しASMインスタンスにディスクグループをマウントさせる必要があります。

ASMインスタンスはデータベースインスタンスと同様、メモリ空間を共有する複数バックグラウンドプロセスの集合であり、データファイルへの更新はASMインスタンスを通してDISKへ書き戻されるためASM上のデータを使用するためにはASMインスタンスの起動が必須となります。

ASMで扱うことができるファイル

11.1までのバージョンではディスクグループ上に直接作成できるファイルはoracleデータベース関連のファイル(データベースのデータファイル、制御ファイル、redoログ、SPファイル、アーカイブログ等)のみでしたが、 11.2以降ではクラスタ関連の領域(OCR、Voting Disk)や、ディスクグループ上にボリュームという枠組みを作成した領域をさらにacfs等のファイルシステムでフォーマットすることによって oracle関連以外のファイルを扱うことや、OSコマンドでファイル操作を行うことができるようになっています。

前提条件等

必要なソフトウエア
ASMは10.1~11.1までのバージョンにおいてはデータベースソフトウエアに含まれておりデータベースソフトウエアをインストールすればasmを使うためのプログラムも一緒にインストールされましたが、 11.2以降はGrid Infrastructureというソフトウエアの一部となりデータベースとは別メディアのGrid Infrastructureのインストールが必要になります。

rawデバイスの準備
rawデバイスを扱うにあたり、使用するrawデバイスは必ず全ノードにおいて適切な権限と固定されたデバイスファイル名で割り当てられている必要があります。 (通常の/dev/sda等のデバイス名はハードウエアの追加や削除、カーネルの変更など様々な要因で変化する可能性があるため意図せず変更されてしまった場合ディスクグループにアクセスできずASMが使用できなくなるといった可能性があります) 例えば、linux(RHEL5)においてこの要件を満たすためには以下の方法があります。

・asmlibの使用
asmlibはoracleがlinux環境に対して提供しているライブラリでオープンソースとしても公開されています。 asmlibには特定のrawデバイスに対して名前を付ける(マーキングする)ことができるためasmlibを使用することでASMは常に同じデバイスへアクセスすることができます。

・udevのrawデバイス用ルールの定義
udevはRHEL5以降で提供された仕組みでデバイスに対しての権限設定や、 ディスクの物理的な接続位置情報による一意なデバイス名を生成する仕組み等が用意されているためDISKを異なる位置に接続するなどの変更がなければ固定されたデバイス名を使用することができます。

関連ディクショナリ

・V$ASM_DISK
ディスクグループを構成するディスク情報
・V$ASM_DISKGROUP
ディスクグループ情報
・V$ASM_FILE
ASM状のファイル情報
・V$ASM_ALIAS
ASM上のファイルの別名情報
・V$ASM_OPERATION
リバランス等のASMオペレーション情報
・V$ASM_CLIENT
ASMをマウントしているクライアント情報

マニュアル

ストレージ管理者ガイド11gリリース1(11.1)
Grid Infrastructureインストレーション・ガイド11gリリース2(11.2)for Linux
Oracle Automatic Storage Management管理者ガイド11gリリース2(11.2)
★ORACLE案件承ります