夢見るサーバ – Fedora & VMware ESX ESXi

We are looking for happy server life!!

Rawデバイス(生HDD、LUN),vmdkを複数ゲストOSで共有(RDM)

Raw Device Mapping

ESXでは、iSCSIやFCのDiskをゲストから直接マウント出来る機能があります。この機能はRDM(RawDeviceMapping)と呼ばれています。この機能を利用するためにはゲストOSの設定より、HDDの追加時に「Rawデバイス」を選択することでホストOS上で利用可能な生のDiskボリュームを選択出来るようになります。RDMの細かい説明はマニュアルに任せるとして、本節ではこのRDMボリュームを共有する方法について解説します。

共有できるHDDメディア

通常FCやiSCSIのボリュームは複数のOSが同時にマウントすることが可能です。これは、クラスタリングなどの機能に含まれる共有ファイルシステム用のための機能です。本解説サイトのLinuxストレージにも書いてあるようにGFSなどの共有専用のファイルシステムで利用することができます。

共有ファイルシステムでない、EXT4やNTFSでは他ホストが改変したファイルシステムの内容を自ホストにて知り得る方法が存在しません。そのため、複数ホストからマウントした瞬間には同じ内容のファイル群が見えますが、一方が変更した内容については、他方でその変更内容を把握できず、OSごとにファイルシステムに書きこまれた内容の不整合が発生します。

ESXでのRDM共有

さて、本題のRDMの共有です。上記に解説しましたが、多くのFC,iSCSIストレージはデフォルトで共有を妨げるものはありません。しかし、ESX(特に4.0以降)ではどれか一つのゲストが利用しているRDMボリュームは他のゲスト(同一ホスト上、非同一ホスト上にかかわらず)から共有目的に利用することができません。(Rawデバイスがリストにでない、またはRawデバイスがグレーアウトして選択できません)

これは、ESXのクラスタにおいて各ボリュームの利用状況を共有できるため、多くの人が利用していない共有目的の利用に制限をかけているためです。その理由は不慮の同時マウントとボリュームの破壊を防ぐためです。これを突破するには2つの方法があります。

方法1:ESXのフィルタ設定を変更する

ここまでで、現状の解説を終わりにして実際に共有利用するための方法について解説します。

  1. まずは、VIClientで接続し、設定ー>VIClientの管理ー>vCenterSErverの設定ー>詳細設定 を開きます。(上のメニューバー部分です)
     setting1
  2. キーの部分にconfig.vpxd.filter.rdmFilterをFalseとして追加します
    setting2
  3. 共有Diskが見えるようになるので、仮想マシンで共有Diskを設定します。
  4. マウント時にRDMを接続する「仮想デバイスノード」を"1:0"にします
    scsiid1
    これにより追加されたRDMは、既存のSCSIコントローラ0ではなくSCSIコントローラ1のSCSI-ID0番として接続されます。マニュアルにも共有するボリュームがある場合には、その仮想HDDが接続するボリュームを別のコントローラーで収容することが必須と明記されています

 

ここまでの設定で、すでにマウント済みのRDMボリュームが他のゲストOSからもHDDとして追加出来るようになっていると思います。通常手順と同じように追加してください。

ここで、一つ重要なことがあります。このままではクラスタ内のすべてのホストから恒久的にマウント済みの共有ボリュームが見え続けてしまいます。これ以上共有するホストが存在していない場合には、これがボリューム上書き事故の元となり得ます。

そこで、ボリューム追加後は速やかに上記2の設定をtrueに戻し、再度共有RDMボリュームが見えないようにしてやります。すでにマウント済みのボリュームは影響を受けないので、設定するときに一時的にフィルタを外して設定するが、設定後は再度フィルタを有効にしておきましょう。

方法2:SCSIコントローラの共有を利用する

もう一つの方法はVMDKファイルを共有する方法です。VMFS上に作成されたVMDKファイルはそのままでは共有することができません。しかしVMDKファイルがRDMで作成されたマップファイルの場合のみ、コントローラー設定を変更することで、共有する事ができるようになります。

  1. RDMを共有する仮想OS群のどれか一つでRDMをマウントします。
  2. マウント時にRDMを接続する「仮想デバイスノード」を"1:0"にします

    scsiid1
    これにより追加されたRDMは、既存のSCSIコントローラ0ではなくSCSIコントローラ1のSCSI-ID0番として接続されます。マニュアルにも共有するボリュームがある場合には、その仮想HDDが接続するボリュームを別のコントローラーで収容することが必須と明記されています。

  3. 追加されたSCSIコントローラー1を選択しRDMの場合には「物理」を選択します。
    scsishare1
  4. これで、共有される側は設定完了です。他のホストより作成したvmdkファイルをマウントしてください。その際にも同じように2と3の設定を行えば完了です。
web hosting

Looking for something?

なにかお探しですか?

Visit our friends!

A few highly recommended friends...

アーカイブ

All entries, chronologically...

© 2010 夢見るサーバ