如何限制虚拟机客户机的磁盘访问带宽?


8

我在Ubuntu(主机)上有一个Virtualbox,该Virtualbox提供一些Windows来宾OS。
有时正在运行的Windows虚拟机开始对磁盘的大量访问,这在我的主机环境中阻止了我。我想限制对物理硬盘的数据访问的读写。

我该怎么做?


听起来非常像个错误。什么样的活动导致了问题?您是否正在用完RAM(您正在使用多少交换空间?)
Panther

1
进行大量访问的原因可能有很多,而您是其中之一。但是,我的问题是关于限制VM的一般性问题,以便即使希望主机时也不允许它使用带宽的某些部分。
yossile 2012年

@ bodhi.zazen我想限制对硬盘的访问(读/写)。可以通过VM映像设置来限制RAM和CPU,但是如果guest虚拟机正在对磁盘(当然是虚拟磁盘)进行大量读/写操作,则对此没有限制。
yossile 2012年

Answers:


9

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

我们需要先创建一个bandwith组(在下面的示例中,“ Limit”的速度为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

如果出现此错误:

VBoxManage: error: Cannot register the hard disk '.../foo.vdi' {...} because a hard disk '.../foo.vdi' with UUID {...} already exists

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

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

VBoxManage bandwidthctl "VM name" set Limit --limit 10M 

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


2
--controller不再是正确的命令。现在它应该是--storagectl“ SATA Controller Name ”以在VM运行时限制访问,命令是VBOXManagewidthctrl“ VMName” --name Limit --limit 10

好答案。但是Virtual Box 4.2.12中的命令是VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit"
Erick Petrucelli
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.