Skip navigation
2013

ためしに、ESXi上のゲストからRDM仮想ディスクを見てみました。

 

仮想ディスクの割り当て方式について

ESXiのVMには、2種類の方式で仮想ディスクを割り当てることができます。
どちらを使用するかは、VMに仮想ディスクを追加するときに決めることができます。

1. ファイル(通称 VMDKファイル)を作成し、仮想ディスクとして割り当てる方式

デフォルトはこちら。一般的には、この方式が使用されます。

 

2. 物理ディスク(またはLUN)を、そのまま仮想マシンに使わせる「Rawデバイスマッピング(RDM)」

「ローデバイスマッピング」と読まれることが多いと思います。
Rawデバイス = 生デバイス(ディスクをそのまま)というイメージです。
この方式は、さらに「仮想モードRDM」「物理モードRDM」があります。
上記のファイルを作成して割り当てるよりも、RDMのほうが
一般的に、パフォーマンスが良いといわれています。
vm_rdm1.png


今回は、「仮想モード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」と認識しています。vm_rdm2.png

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のスナップショット機能などが使用できなくなります。

vm_rdm3.png

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でありながらスナップショット等の機能が使用できます。

vm_rdm4.png

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  Linux

Disk /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の見え方についてでした。