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

MAD*_*ppy 6 virtualbox ssd virtual-machine external-drive windows-10

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

简短信息: 外置 SSD 是带有 M2 到 USB3.0 适配器的三星 850 evo 512GB(M2 Verison)。如上所述,其他 Vms 以及从内部 SSD 或什至从外部 USB3.0 HDD 运行 Windows VM 时(这很慢,但在这种情况下仍然比外部 SSD 快得多)工作正常。

虚拟机设置:

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

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

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

问题当然不是 SSD,因为我使用的是与内部 SSD 相同的 SSD。该适配器适用于 Linux 系统、Linux VM 和任何其他程序,所以我也不认为是这样。

我会尝试在日志中搜索一些信息,但如果有人有另一个 Idear,我们将不胜感激。

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

解决方案评论:

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

Your_VM_Settings->Storage->select_your_Controller->Attributes->Use Host I/O Cache
Run Code Online (Sandbox Code Playgroud)

除了@Eugen Rieck 提到的缺点外,virtualbox 论坛中的@aeichner 表示,似乎还有一个缺点

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

Eug*_*eck 10

坏消息:Windows(仅操作系统,而非应用程序)执行的磁盘写入比 Linux 多。2 个数量级,对此您无能为力。除此之外,它还会进行一个数量级的磁盘读取。

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

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

  • 为什么windows写这么多? (7认同)