![Virtualbox主机io缓存应用场景](https://linux22.com/image/1459952/Virtualbox%E4%B8%BB%E6%9C%BAio%E7%BC%93%E5%AD%98%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF.png)
Virtualbox 文档说使用主机 I/O 缓存作为 SATA 控制器可能会对系统性能造成风险。
同时,就我而言,我看到了使用主机 io 缓存的优势 - 当为 SATA 控制器打开主机 io 缓存时,DisckCrystalMark 报告性能提高了 10 倍。
我在 Google 上搜索了很多,发现这个问题有点棘手,因为它取决于很多细微差别。例如 vdi 类型、大小、可能存储的文件类型、大小、访问特征等。
假设我在客户机上有一个 CRM 应用程序,它使用基于文件的存储(270 个文件,3 GB 大小)。我是否应该向我的虚拟机添加单独的 SATA 控制器,然后为其打开主机 IO 缓存,创建单独的 VDI(假设为 10 GB),将其连接到该“缓存控制器”,将 crm-app 文件存储移动到该磁盘?并保留具有主系统驱动器的未缓存控制器?
或者我可以在第一个 vm sata 控制器上打开整个系统的主机缓存吗?
每种情况的优点和缺点是什么?
最后,在什么情况下适合使用或不使用主机 io 缓存?何时应该使用主机 io 缓存而不会出现问题?
附言:
主机:Ubuntu 14 服务器,配备 68 GB RAM HDD Raid 1 Intel Xeon E5520 x 2(2 * 4 核)Virtualbox 4.3.30
客户机:Windows 2012R2 4 核、32 GB RAM、单 SATA 控制器和单 vdi 类型标准磁盘。
关闭主机 io 缓存的结果是:
Sequential Read (Q= 32,T= 1) : 123.458 MB/s
Sequential Write (Q= 32,T= 1) : 97.999 MB/s
Random Read 4KiB (Q= 32,T= 1) : 6.899 MB/s [ 1684.3 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 2.131 MB/s [ 520.3 IOPS]
Sequential Read (T= 1) : 122.048 MB/s
Sequential Write (T= 1) : 85.759 MB/s
Random Read 4KiB (Q= 1,T= 1) : 1.597 MB/s [ 389.9 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 1.652 MB/s [ 403.3 IOPS]
但是打开主机 io 缓存后我有:
Sequential Read (Q= 32,T= 1) : 501.050 MB/s
Sequential Write (Q= 32,T= 1) : 552.461 MB/s
Random Read 4KiB (Q= 32,T= 1) : 26.325 MB/s [ 6427.0 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 21.424 MB/s [ 5230.5 IOPS]
Sequential Read (T= 1) : 653.452 MB/s
Sequential Write (T= 1) : 603.009 MB/s
Random Read 4KiB (Q= 1,T= 1) : 16.561 MB/s [ 4043.2 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 14.950 MB/s [ 3649.9 IOPS]
那么真相在哪里?
以下是我在 Google 上搜索的链接,有一些相互矛盾的结果:
h__ps://forums.virtualbox.org/viewtopic.php?f=1&t=61428