12

I have a Virtualbox on my Ubuntu (host) that serves few Windows guest OS.
Sometimes the running Windows virtual machine starts massive access to the disk which blocks me in my host environment. I would like to limit the read/write of data access to the physical harddisk.

How can I do it?

3
  • Sounds very much like a bug. What sort of activity caused the problem ? Are you running out of RAM (how much swap space are you using ? )
    – Panther
    Mar 26, 2012 at 13:32
  • 1
    There might be many reasons for massive access and you are right about one of them. However, my question is a generic one about limiting a VM so that even when it wants to the host won't allow it to use some portion of the bandwidth.
    – yossile
    Mar 26, 2012 at 13:53
  • @bodhi.zazen I want to limit access (reads/writes) to the hard disk. RAM and CPU can be limited from the VM image settings but if an guest is doing heavy reading/writing to the disk (virtual disk of course) then there is no limit on that.
    – yossile
    Mar 26, 2012 at 14:18

1 Answer 1

13

Starting from version 4.0 we are able to limit Virtual Box bandwith for acess to disk images (see Virtual Box Manual for details)

We need to create a bandwith group first (in the example below named "Limit" for 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

If you get this error:

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

then replace the path to the disk image with the UUID given in the error (both should be the same) including the {}

To further limit disk access to 10 MB/s we can then issue

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

This can even be done during runtime.

2
  • 2
    --controller is no longer the correct command. It should now be --storagectl "SATA Controller Name" To limit access while the VM is running the command is VBOXManage bandwidthctrl "VMName" --name Limit --limit 10
    – user77793
    Jul 18, 2012 at 15:13
  • Nice answer. But the command here in Virtual Box 4.2.12 was VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10 and VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit". Apr 25, 2013 at 19:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .