スポンサーリンク

2015年10月8日木曜日

oracleasm createdisk で Instantiating disk が failed になる場合の対処

 Oracle の RAC 環境(Real Application Cluster)を構築する過程で共有ディスクを作成するが、そのときに使用するコマンド oracleasm createdisk で失敗する場合がある。

# oracleasm createdisk data1 /dev/sdb1
Writing disk header: done
Instantiating disk: failed
Crearing disk header: done

 ほとんどの場合、以下のどちらかの対処で解決する(らしい)。

1. 再起動する
2. selinux を無効にする

 Google 先生に聞いてもこの解決方法しか見つからない。
 がしかし、このどちらの対処を行っても解決しなかった。

 というわけで、今回対処した方法は以下。


 いろいろと調査した結果、インストールしたライブラリのロードに失敗していた。

# oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no

 今回、Oracle Linux 6.6 で検証環境を構築していたが、諸事情によりカーネルを 3.8 系から 2.6 系に変更した。これが主な原因だったっぽい。
 ASMLib には kmod-oracleasm、oracleasmlib、oracleasm-support が必須だけど、このうち kmod-oracleasm がカーネルに依存していた。
 というわけで、これをインストールすることで解決した。

# yum -y install kmod-oracleasm

 この依存関係でカーネルモジュールもインストールされた。そういえば入れるの忘れてたよ……。

 念のため oracleasmlib と oracleasm-support を入れなおす。

# yum -y install oracleasmlib
# yum -y install oracleasm-support
# oracleasm configure -i

 ここで一度再起動、そして共有ディスクの作成。

# oracleasm createdisk data1 /dev/sdb1
Writing disk header: done
Instantiating disk: done

 無事作成されました。

2015/11/25追記

 いろいろと構築関係で時間がかかってしまったので追記が遅れてしもた。

 まず、oracleasm コマンドで設定を行ったあとに再起動する必要はなくて、以下のコマンドを実行すればよかった。

# oracleasm init

 また、共有ディスク作成後も以下のコマンドを他ノードで実行することで、作成したディスクを認識させることができる。

# oracleasm scandisks

 あと、インターネットに接続できないなどの環境で yum コマンドを使って kmod-oracleasm をインストールできない場合。
 kmod-oracleasm のインストールによってカーネルモジュールがインストールされる。起動時のカーネルに依存するパッケージやモジュール、ドライバがある場合、インストールオプションに注意しなきゃいけない。
 気にせずアップグレードしたらファイバチャネルスイッチが動かなくなって焦った。
 以下は今回構築したときにインストールしたモジュールの例。

# rpm -Uvh dracut-004-388.0.1.el6.noarch.rpm
# rpm -Uvh dracut-kernel-004-388.0.1.el6.noarch.rpm

# rpm -ivh kernel-2.6.32-573.7.1.el6.x86_64.rpm

0 件のコメント:

コメントを投稿