10

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

11

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.