ためしに、ESXi上のゲストからRDM仮想ディスクを見てみました。
仮想ディスクの割り当て方式について
ESXiのVMには、2種類の方式で仮想ディスクを割り当てることができます。
どちらを使用するかは、VMに仮想ディスクを追加するときに決めることができます。
1. ファイル(通称 VMDKファイル)を作成し、仮想ディスクとして割り当てる方式
デフォルトはこちら。一般的には、この方式が使用されます。
2. 物理ディスク(またはLUN)を、そのまま仮想マシンに使わせる「Rawデバイスマッピング(RDM)」
「ローデバイスマッピング」と読まれることが多いと思います。
Rawデバイス = 生デバイス(ディスクをそのまま)というイメージです。
この方式は、さらに「仮想モードRDM」「物理モードRDM」があります。
上記のファイルを作成して割り当てるよりも、RDMのほうが
一般的に、パフォーマンスが良いといわれています。
今回は、「仮想モードRDM」と「物理モードRDM」をVMにわりあてて、
ゲストOSから見てみました。
環境
ESXiをiSCSIディスク(Windows Server 2008 の iSCSIターゲット)に接続し、
ESXi自身が認識したディスク(LUN)を、RDMで割り当ててみました。
ゲストOSは Oracle Enterprise Linux 5(Redhat Linux 5互換)です。
仮想ディスクとしてVMDKファイルを割り当てた場合
まず、デフォルトの「VMDKファイル」を作成して仮想ディスクを
割り当てた時のSyslogを見てみました。(ここではiSCSIは関係ありません。)
ディスクのベンダはVMware、モデルは「Virtual disk」と認識しています。
Jul 14 00:00:00 oel55gst1 kernel: mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id 3, phy 3, sas_addr 0x5000c2992220773c
Jul 14 00:00:00 oel55gst1 kernel: Vendor: VMware Model: Virtual disk Rev: 1.0
Jul 14 00:00:00 oel55gst1 kernel: Type: Direct-Access ANSI SCSI revision: 02
Jul 14 00:00:00 oel55gst1 kernel: SCSI device sdd: 2097152 512-byte hdwr sectors (1074 MB)
Jul 14 00:00:00 oel55gst1 kernel: sdd: Write Protect is off
Jul 14 00:00:00 oel55gst1 kernel: sdd: cache data unavailable
Jul 14 00:00:00 oel55gst1 kernel: sdd: assuming drive cache: write through
Jul 14 00:00:00 oel55gst1 kernel: SCSI device sdd: 2097152 512-byte hdwr sectors (1074 MB)
Jul 14 00:00:00 oel55gst1 kernel: sdd: Write Protect is off
Jul 14 00:00:00 oel55gst1 kernel: sdd: cache data unavailable
Jul 14 00:00:00 oel55gst1 kernel: sdd: assuming drive cache: write through
Jul 14 00:00:01 oel55gst1 kernel: sdd: unknown partition table
Jul 14 00:00:01 oel55gst1 kernel: sd 0:0:3:0: Attached scsi disk sdd
Jul 14 00:00:01 oel55gst1 kernel: sd 0:0:3:0: Attached scsi generic sg3 type 0
物理モードRDMとして割り当てた場合
LinuxゲストのVMに「物理モードRDM」形式で仮想ディスクを割り当てた時のSyslogです。
ディスクのベンダはMSFT、モデルは「Virtual HD」と認識しています。
※モデル「Virtual HD」は、「Virtual」とついていますがVMwareの仮想化とは関係ありません。
WindowsのiSCSI サーバ(iSCSIターゲット)が、LUNをvhd形式で作成しているためこう見えます。
例としてはちょっとイマイチだったかもしれません。
ディスクベンダを、ちゃんとマイクロソフト(MSFT)だと認識しています。
これは、物理環境のOSがWindows iSCSIを認識したときと同様の状態です。
この方式だと、物理ディスクとほとんど同じように扱えますが、
そのかわり、VMwareのスナップショット機能などが使用できなくなります。
Jul 12 08:41:57 oel55gst1 kernel: mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id 1, phy 1, sas_addr 0x5000c29020dea104
Jul 12 08:41:57 oel55gst1 kernel: Vendor: MSFT Model: Virtual HD Rev: 3.3
Jul 12 08:41:57 oel55gst1 kernel: Type: Direct-Access ANSI SCSI revision: 05
Jul 12 08:41:57 oel55gst1 kernel: SCSI device sdb: 2097152 512-byte hdwr sectors (1074 MB)
Jul 12 08:41:57 oel55gst1 kernel: sdb: Write Protect is off
Jul 12 08:41:58 oel55gst1 kernel: sdb: got wrong page
Jul 12 08:41:58 oel55gst1 kernel: sdb: assuming drive cache: write through
Jul 12 08:41:58 oel55gst1 kernel: SCSI device sdb: 2097152 512-byte hdwr sectors (1074 MB)
Jul 12 08:41:58 oel55gst1 kernel: sdb: Write Protect is off
Jul 12 08:41:58 oel55gst1 kernel: sdb: got wrong page
Jul 12 08:41:58 oel55gst1 kernel: sdb: assuming drive cache: write through
Jul 12 08:41:58 oel55gst1 kernel: sdb: unknown partition table
Jul 12 08:41:58 oel55gst1 kernel: sd 0:0:1:0: Attached scsi disk sdb
Jul 12 08:41:58 oel55gst1 kernel: sd 0:0:1:0: Attached scsi generic sg1 type 0
仮想モードRDMとして割り当てた場合
LinuxゲストのVMに「仮想モードRDM」形式で仮想ディスクを割り当てた時のSyslogです。
ディスクのベンダはVMware、モデルは「Virtual disk」と認識しています。
これは、VMDKファイルを割り当てた時と同様の見え方です。
この方式であれば、RDMでありながらスナップショット等の機能が使用できます。
Jul 12 08:43:13 oel55gst1 kernel: mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id 2, phy 2, sas_addr 0x5000c295ba9503e4
Jul 12 08:43:13 oel55gst1 kernel: Vendor: VMware Model: Virtual disk Rev: 1.0
Jul 12 08:43:13 oel55gst1 kernel: Type: Direct-Access ANSI SCSI revision: 02
Jul 12 08:43:13 oel55gst1 kernel: SCSI device sdc: 2097152 512-byte hdwr sectors (1074 MB)
Jul 12 08:43:13 oel55gst1 kernel: sdc: Write Protect is off
Jul 12 08:43:13 oel55gst1 kernel: sdc: cache data unavailable
Jul 12 08:43:13 oel55gst1 kernel: sdc: assuming drive cache: write through
Jul 12 08:43:13 oel55gst1 kernel: SCSI device sdc: 2097152 512-byte hdwr sectors (1074 MB)
Jul 12 08:43:13 oel55gst1 kernel: sdc: Write Protect is off
Jul 12 08:43:13 oel55gst1 kernel: sdc: cache data unavailable
Jul 12 08:43:13 oel55gst1 kernel: sdc: assuming drive cache: write through
Jul 12 08:43:13 oel55gst1 kernel: sdc: unknown partition table
Jul 12 08:43:13 oel55gst1 kernel: sd 0:0:2:0: Attached scsi disk sdc
Jul 12 08:43:13 oel55gst1 kernel: sd 0:0:2:0: Attached scsi generic sg2 type 0
上記3つのどの方法でも、ゲストOSからは同様に扱うことができます。
パーティション作成もできますし、ファイルシステムの作成もできます。
また、1つのVMに、VMDKファイルやRDMが混在してもOKです。
下記の例では1つのVMに、3つの方式で仮想ディスクを割り当ててみました。
どれも、ゲストから見ると簡単には見分けがつきません。
(ほとんど意識せず、同じように扱うことができます。)
[root@oel55gst1 ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytesデバイス Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 144 1052257+ 82 Linux swap / Solaris
/dev/sda3 145 1305 9325732+ 83 LinuxDisk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytesディスク /dev/sdb は正常な領域テーブルを含んでいません★これ(sdb)は物理モードRDM
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytesディスク /dev/sdc は正常な領域テーブルを含んでいません★これ(sdc)は仮想モードRDM
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytesディスク /dev/sdd は正常な領域テーブルを含んでいません★これ(sdd)はVMDKファイル
以上、RDMの見え方についてでした。