与 Linux VM 和 USB3.0 HDD 相比,从外部 USB3.0 SSD 运行时,Windows VM 速度极慢

与 Linux VM 和 USB3.0 HDD 相比,从外部 USB3.0 SSD 运行时,Windows VM 速度极慢

详细信息: 我正在尝试从 USB 3.0 外部 SSD 运行 Windows VirtualBox vmdk。我使用的系统是 Arch Linux,它也安装在这个外部 SSD 上。如果我从内部 SSD 加载它(同时使用外部 SSD 上的系统),VM 运行良好。从外部 SSD 加载的 Linux VM 也是如此(同时使用外部 SSD 上的系统)。

简短信息: 外部 SSD 是三星 850 evo 512GB(M2 版本),配有 M2 转 USB3.0 适配器。如上所述,其他 Vm 以及从内部 SSD 甚至从外部 USB3.0 HDD(虽然速度很慢,但在这种情况下仍然比外部 SSD 快得多)运行 Windows VM 时运行良好。

虚拟机设置:

16GB ram
chipset PIIX3
I/O APIC enabled
Hardware Clock UTC Time enabled
4 Cores 100% (4.5Ghz)
VT-x enabled

问题: VM 启动正常,但会导致主机系统不时冻结,并在约 20 分钟后到达登录屏幕。由于这似乎是磁盘问题,我从内部 SSD 加载了 vm,并禁用了 Windows 磁盘分页功能以减少磁盘写入。然后,我将更改后的 vmdk 复制到外部 SSD,并相应地修改了外部系统上的 Virtualbox。然而,这并没有改变任何东西。(我甚至将内存增加到 16GB)。

假设 由于某种原因,与 Linux VM 相比,Windows VM 执行了大量的磁盘写入操作,有趣的是,我前段时间在外部 USB 3.0 硬盘上也做过同样的事情,实际上它比 SSD 慢得多(但是我没有在同一个驱动器上运行主机系统)

问题肯定不是 SSD,因为我使用的是与内部 SSD 相同的 SSD。适配器在 Linux 系统、Linux VM 和任何其他程序上都运行良好,所以我也不认为是 SSD 的问题。

我会尝试在日志中搜索一些信息,但如果有人有其他想法,我将非常感激。

问题: 我如何才能提高外部 SSD 上 Windows VM 的性能,以及为什么 Windows 需要大量的 IO 流量?

解决方案评论:

使用 @Eugen Rieck 建议的写回缓存确实使虚拟机可用,我认为来自同一外部 SSD 上的主机系统的额外 IO 量对于 USB3.0 控制器来说太多了(没有缓存)。在 Virtualbox 中,您可以在以下位置找到此选项:

Your_VM_Settings->Storage->select_your_Controller->Attributes->Use Host I/O Cache

除了@Eugen Rieck提到的缺点之外,根据virtualbox论坛的@aeichner的说法,似乎还有一个缺点

默认情况下不使用主机 I/O 缓存,因为如果主机面临高 I/O 负载并且主机缓存无法应对,则可能导致客户机中 I/O 超时。艾希纳,2011

答案1

坏消息是:Windows(仅指操作系统,不包括应用程序)的磁盘写入次数比 Linux 多约 2 个数量级,对此你无能为力。除此之外,它的磁盘读取次数也多一个数量级。

好消息是:在 Hypervisor 级别(即 VirtualBox 中)使用写回缓存时,您可以显著改善这种情况。如果主机严重宕机,则会带来数据损坏的风险,但使用良好的 UPS 应该可以解决此问题。

还有一点:如果您使用快照,请重新考虑 - 快照具有显着的写入放大系数,这在这种情况下确实会造成伤害。

相关内容