![ESX 5.X 是否缓存客户机 IO?](https://linux22.com/image/626250/ESX%205.X%20%E6%98%AF%E5%90%A6%E7%BC%93%E5%AD%98%E5%AE%A2%E6%88%B7%E6%9C%BA%20IO%EF%BC%9F.png)
我试图查明客户机是否可以看到成功的磁盘刷新操作,但主机实际上并没有将其刷新到磁盘?
ESXi 如何与客户机 I/O 配合使用?在写入主机磁盘之前,ESXi 是否会缓存它们?
答案1
仅当硬件控制器向 ESX 确认写入或读取后,VMware ESX 才会确认对客户操作系统的写入或读取。在 ESX 上的虚拟机内运行的应用程序与在物理机或物理磁盘控制器上运行的应用程序具有相同的崩溃一致性保证。
这是 VMware 自己说的。如果你担心崩溃一致性,这就是答案。
答案2
遗憾的是,这并不容易,所以以前的答案对于 Windows 来说是正确的,但对于 Linux 来说却不正确... KB 说:
对于托管产品,写入处理取决于主机操作系统。
在 Linux 主机上,VMware 不使用无缓冲 IO,因为它不安全,也不支持 VMware 支持的所有 Linux 版本。因此,目前,Linux 主机上托管的 VMware 产品始终使用缓冲 IO。
在 Windows 主机上,VMware 托管产品默认使用无缓冲 IO。
最后一句话很重要:
因此,如果 IO 在主机操作系统内缓冲,则在 VMware 托管产品上的客户操作系统内运行的应用程序可能会失去崩溃一致性。