Starting with version 4.0, VirtualBox allows for limiting the maximum bandwidth used for asynchronous I/O. Additionally it supports sharing limits through bandwidth groups for several images. It is possible to have more than one such limit.
Limits are configured through
VBoxManage
. The example below creates a
bandwidth group named "Limit", sets the limit to 20 MB/s and assigns the
group to the attached disks of the VM:
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
All disks in a group share the bandwidth limit, meaning that in the example above the bandwidth of both images combined can never exceed 20 MB/s. However, if one disk doesn't require bandwidth the other can use the remaining bandwidth of its group.
The limits for each group can be changed while the VM is running, with changes being picked up immediately. The example below changes the limit for the group created in the example above to 10 MB/s:
VBoxManage bandwidthctl "VM name" set Limit --limit 10M