如何限制来宾虚拟机的磁盘访问带宽?

yos*_*ile 9 virtualbox virtualization disk-usage

我的 Ubuntu(主机)上有一个 Virtualbox,它为很少的 Windows 来宾操作系统提供服务。
有时,正在运行的 Windows 虚拟机会开始对磁盘进行大量访问,这会在我的主机环境中阻止我。我想限制对物理硬盘的数据访问的读/写。

我该怎么做?

Tak*_*kat 10

从 4.0 版开始,我们可以限制 Virtual Box 带宽以访问磁盘映像(有关详细信息,请参阅Virtual Box 手册

我们需要先创建一个带宽组(在下面的示例中,名为“限制”为 20 MB/s):

VBoxManage bandwidthctl "VM name" add Limit --type disk --limit 20M
VBoxManage storageattach "VM name" --storagectl "SATA" --port 0 --device 0 --type hdd
                                   --medium disk1.vdi --bandwidthgroup Limit
VBoxManage storageattach "VM name" --storagectl "SATA" --port 1 --device 0 --type hdd
                                   --medium disk2.vdi --bandwidthgroup Limit
Run Code Online (Sandbox Code Playgroud)

如果您收到此错误:

VBoxManage: error: Cannot register the hard disk '.../foo.vdi' {...} because a hard disk '.../foo.vdi' with UUID {...} already exists
Run Code Online (Sandbox Code Playgroud)

然后用错误中给出的 UUID 替换磁盘映像的路径(两者应该相同),包括 {}

为了进一步将磁盘访问限制为 10 MB/s,我们可以发出

VBoxManage bandwidthctl "VM name" set Limit --limit 10M 
Run Code Online (Sandbox Code Playgroud)

这甚至可以在运行时完成。

  • --controller 不再是正确的命令。现在应该是 --storagectl "*SATA Controller Name*" 要在 VM 运行时限制访问,命令是 VBOXManage bandwidthctrl "VMName" --name Limit --limit 10 (2认同)