ASMLibに関する検証 その4

<ASMLibに関する検証 その4>
ペンネーム: ソラ

今回も引き続き、ASMLib Kernel Driver(以下、ASMLib)に関する検証を行いま
す。

■前回までのおさらい
ASMLibには以下2つのメリットがあります。
[メリット]
1.ASMディスクの管理・検出が簡単になる
2.I/O処理の効率がよくなる

前回と前々回ではメリット1について、「ASMディスクの管理が簡単になる」と
いう部分について、Oracleのインストール時とASMディスクの追加時の手順を
確認しました。
確認の結果、確かにASMLibが作業者の負荷を軽減してくれることがわかりま
した。

今回は、メリット1についてのもう一つの検証、「ASMディスクの検出が簡単に
なる」という部分について確認します。
では、「ASMディスクの検出が簡単になる」とはどういうことか早速見ていき
ます。

■■■■■概要■■■■■
1.ASMディスクの検出とは?
2.クラスタ環境でのASMディスクの検出
3.まとめ

■環境
Red Hat Enterprise Linux Server release 4
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0

1.「ASMディスクの検出が簡単になる」とは?
「ASMディスクの検出が簡単になる」とはどういうことか考えてみます。

ASMディスクの検出に至るまでのプロセスは大きく分けると以下の2つです。

(1) ディスク・パーティションをASMディスクとして検出できるように準備
(2) ASMインスタンス起動時、ASMインスタンスがASMディスクを検出しMOUNT

(1) については、前回のおさらいに記載しているように、既に前回と前々回の
メルマガで確認しています。

次に(2) についてです。
仮にこの部分でメリットがあるとした場合、ASMディスクのMOUNTに要する時間
が短縮され、ASMインスタンスの起動時間が短縮されるということになりま
す。
しかし、正直、ASMインスタンスの起動時間が短縮されることによるメリット
は特に考えつきません。

では、(1)の部分で他に何かメリットはないかもう一度考えてみます。
ASMインスタンスがASMディスクを検出できるようにする手順が簡単ではないた
めに起こりうる問題について、第1回目のメルマガで少し触れていました。

以下、第1回目のメルマガでマニュアルから確認した内容です。

「Oracle Database 10g Release 2 Automatic Storage Managementの概要およ
び技術ベスト・プラクティス」より

==================================================================
ASMLIBは、あるノードに付加されたディスクが同じクラスタ内の他のノー
ドに認知されないという問題に対処し、その可能性を排除する検出プロセ
スを簡素化します。
==================================================================

上記の「あるノードに付加されたディスクが同じクラスタ内の他のノードに認
知されないという問題」が本当に解消するのであれば、クラスタ環境で実際に
経験した人からすると確かにメリットがありそうです。

それでは、クラスタ環境でどのように「検出プロセスを簡素化」しているの
か、早速確認します。

2.クラスタ環境でのASMディスクの検出
前回までと同様に、RAWデバイスを使用している場合とASMLibをしている場合
の手順で比較します。
以下、クラスタ環境でASMディスクを追加した場合に必要になる手順です。
※今回の確認では、前回の手順と同じコマンドの説明は割愛させていただきま
す。

▼RAWデバイスを使用している場合の手順
1.RAWデバイスファイルの編集
まず、前回と同様にRAWデバイスとディスク・パーティションのマッピング
から行います。

  [ノード1]# vi /etc/sysconfig/rawdevices
   /dev/raw/raw2   /dev/sdb2                                ##編集内容

2.RAWデバイスサービスへのマッピング・マッピングの確認

  [ノード1]# raw /dev/raw/raw2 /dev/sdb2

3.RAWデバイスサービスへのマッピングの確認

  [ノード1]# raw -qa
   /dev/raw/raw1:  bound to major 8, minor 17
   /dev/raw/raw2:  bound to major 8, minor 18
  [ノード1]# ls -l /dev/sdb*
   brw-r----- 1 root disk 8, 16 Dec 30 13:25 /dev/sdb
   brw-r----- 1 root disk 8, 17 Dec 30 13:29 /dev/sdb1
   brw-r----- 1 root disk 8, 18 Dec 30 13:29 /dev/sdb2

4.RAWデバイスのオーナー変更

   [ノード1]# chown oracle:dba /dev/raw/raw2

5.RAWデバイスの権限変更

   #[ノード1] chmod 600 /dev/raw/raw2

6.RAWデバイスの権限設定

   [ノード1]# vi /etc/udev/permissions.d/oracle.permissions
    raw/raw2:oracle:dba:0600                                ##編集内容

ここまでが、ディスク・パーティションをASMディスクとして検出できるよ
うする手順です。
クラスタ環境の場合には、存在する全てのノードでもう一度1~6の手順を
実行する必要があります。
その後、実際にASMディスクを追加します。

7.ASMディスクの追加

   [ノード1]$ export ORACLE_SID=+ASM1
   [ノード1]$ sqlplus "/ as sysdba"
   SQL> alter diskgroup DATA1 add disk '/dev/raw/raw2';
   Diskgroup altered.
  
   SQL> select name,path from v$asm_disk;
   NAME     PATH         
   -------- -------------
   DG1_0001 /dev/raw/raw2
   DG1_0000 /dev/raw/raw1
   

以上でRAWデバイスを使用している場合の手順は終了です。

上記手順をまとめると、RAWデバイスを使用している場合の手順では、以下の
4つが必要になります。尚、カッコ内は作業対象となるノードです。

・RAWデバイスサービスへのマッピング(全てのノード)
・RAWデバイスのオーナー変更(全てのノード)
・RAWデバイスの権限変更(全てのノード)
・ASMディスクの追加(1ノードのみ)

設定の間違いがないように、確認も含めてやるとすると、ノード数が増え
た場合には結構大変な作業になりそうです。

それでは、ASMLibを使用する場合の手順を見てみます。

▼ASMLibを使用している場合の手順(ラベル名DATA2を追加)

1.ASMディスク・パーティションのマーキング

  [ノード1]# /etc/init.d/oracleasm createdisk DATA2 /dev/sdb2
  Marking disk "DATA2" as an ASM disk:                        [  OK  ]

1ノードでASMディスク・パーティションのマーキングが終了後、2の手順を
存在する全てのノードで実行します。

2.ディスクのスキャン
まず、念のためlistdisksオプションで現在認識しているディスクを確認し
ます。

  [ノード2]# /etc/init.d/oracleasm listdisks
   DATA1

確認の結果、現在は追加したディスクを認識していません。

次に、scandisksオプションでディスクを認識させます。

  [ノード2]# /etc/init.d/oracleasm scandisks
  Scanning the system for Oracle ASMLib disks:               [  OK  ]

ディスクのスキャンが正常に終了した後、本当に認識しているか確認しま
す。

  [ノード2]# /etc/init.d/oracleasm listdisks
   DATA1
   DATA2

確かにDATA2と付けたラベルが見えるようになっています。

最後に、実際にASMディスクを追加します。

3.ASMディスクの追加

   [ノード1]$ export ORACLE_SID=+ASM
   [ノード1]$ sqlplus "/ as sysdba"
   SQL> alter diskgroup DISKGROUP1 add disk 'ORCL:DATA2';
   Diskgroup altered.

4.追加したASMディスクの確認

   SQL> select name,path from v$asm_disk;
   NAME  PATH      
   ----- ----------
   DATA1 ORCL:DATA1
   DATA2 ORCL:DATA2

以上でASMLibを使用した場合の手順は終了です。

ASMLibデバイスを使用している場合の手順をまとめると、以下の3つが必要に
なります。(カッコ内は作業対象となるノードです。)

・ASMディスク・パーティションのマーキング(1ノードのみ)
・ASMディスクのスキャン(全てのノード)
・ASMディスクの追加(1ノードのみ)

ASMLibの場合、RAWデバイスで全てのノードで必要になっていたマッピン
グ、権限やオーナーの変更を全く行っていないため、その分だけ検出が簡
単になっています。

3.まとめ
RAWデバイスの場合は、最初にASMディスクを追加したノードと同様の設定を存
在する全てのノードで行わなければなりません。そして、権限の設定を間違え
ただけでもASMインスタンスから認識できなくなってしまいます。
しかし、ASMLibの場合はディスクのスキャンだけで終了してしまうため、作業
の効率化と共に、作業の設定を行わない分ヒューマンエラーの防止に繋がりま
す。

ASMLibのメリットについて
[メリット]
1.ASMディスクの管理・検出が簡単になる
2.I/O処理の効率がよくなる

メリット1について、今回までの確認の結果、ASMLibを使用することで、いろ
いろな場面で作業者を助けてくれることがわかりました。

今回まで検証と言いながら、手順の確認が続いてしまいました。
しかし、次回からはいよいよメインの検証です。
メリット2について、ASMLibを使用した場合のパフォーマンスのメリットにつ
いて検証します。

ロジユニヴァース、ブエナビスタの快勝で今から3歳クラシックが楽しみ!
恵比寿より