こんにちは
こんな情報ではどうでしょうか。
仮想マシンからファイバ チャネル SAN 上のデータへのアクセス方法
http://pubs.vmware.com/vsphere-51/topic/com.vmware.vsphere.storage.doc/GUID-3A05795A-283F-4959-AD81-FAC61FD8D456.html
上記マニュアルより。
仮想マシンが SAN 上の仮想ディスクと通信するとき、次の処理が実行されます。
1 仮想マシンのゲスト OS が SCSI ディスクに読み書きするとき、仮想ディスクに対して SCSI コマンドが発行されます。
2 仮想マシンのオペレーティング システムのデバイス ドライバが仮想 SCSI コントローラと通信します。
3 仮想 SCSI コントローラは、コマンドを VMkernel に転送します。
4 VMkernel は次の処理を実行します。
a ゲスト仮想マシン ディスクに対応する VMFS ボリュームにファイルを配置します。
b 仮想ディスクに対するブロックの要求を、適切な物理デバイスのブロックにマッピングします。
c 変更した I/O 要求を VMkernel のデバイス ドライバから物理 HBA に送信します。
(以下略)
仮想マシンのストレージに対する 読み/書き を、
ESXiのVMkernelが物理的な場所にマッピングしているようです。
そのため、
- ESX/ESXi のHypervisor上では、ゲストOSのキャッシュはしない。
(ハイパーバイザ自体のファイルや、VMFSのメタデータとかはキャッシュするのかも) - ゲストOSからディスクへ書き込み要求は、ESXiのキャッシュは使わず、直接ストレージへ。
となるはずです。
あとは、Genzさんのコメントにもあるように、
少なくともESXでは物理と同様に動くようです
VMware KB: Storage IO crash consistency with VMware products
基本的には、
「ハードウェア上のコントローラーに書き込みが完了した時点でゲストOSに完了通知」
という考えでよいのでしょう。
以上です。参考になりますでしょうか。