• このエントリーをはてなブックマークに追加

XenServerは外部のiSCSIサーバ(iSCSI Target)を仮想マシンの格納先ストレージとして利用することで、ライブマイグレーション等の機能が利用できる様になり、運用面で利便性が向上することから、オープンソースのストレージサーバであるOpenfilterを構築し、iSCSIサーバとしてXenServerから接続させ利用してみました。ところが、最初は問題ないのですが、Openfilerを再起動させるとXenServerからOpenfilerに接続できなくなる問題が発生。いろいろ調べてみると、XenServerがOpenfilerのiSCSIデバイス上に作成したLVM論理ボリュームを、Openfilerが起動する際にACTIVE化してしまうことで問題が発生しているようです。

OpenfilerがXenServerの論理ボリュームをACTIVE化してしまうことで、iSCSIデバイスとしてマッピングさせたOpenfilerの論理ボリュームがBUSY状態となりACTIVE化出来ず、結果XenServerから接続できなくなってしまう。

そこで私は、LVMのデバイススキャン対象を限定させ、XenServerの論理ボリュームをACTIVE化させない方法を試してみました。やり方は簡単で、lvm.confのfilter設定でスキャン先を「/dev/md0」や「/dev/sda」等のローカルデバイスのみを指定します。これにより、ローカルデバイスの論理ボリュームのみがACTIVE化するようになります。

vi /etc/lvm/lvm.conf
filter = [ "a/.*/" ]

となっているところを下記のように修正。

filter = ["a|/dev/md0|&", "r/.*/" ]

最初の「a|/dev/md0|」でスキャン対象のデバイスを指定。次の「r/.*/」はそれ以外のデバイスはスキャン対象外という意味です。これによりRAIDデバイスである、「/dev/md0」のみがスキャンされることになります。単一の物理デバイスを指定する場合は「/dev/sda」等になると思います。

あとは、vgscan/vgchange等のコマンドでACTIVE化し直すか、サーバを再起動すれば、XenServerの論理ボリュームはACTIVE化されることは無いはずです。

以上、同じ悩みを抱えている人への参考となればと思います。

  • このエントリーをはてなブックマークに追加