Как я могу ограничить пропускную способность доступа к диску для гостевой виртуальной машины?

8

У меня есть Virtualbox на моей Ubuntu (хост), который обслуживает несколько гостевых ОС Windows.
Иногда работающая виртуальная машина Windows запускает массовый доступ к диску, который блокирует меня в моей среде хоста. Я хотел бы ограничить доступ для чтения / записи данных к физическому жесткому диску.

Как мне это сделать?

yossile
источник
Звучит очень похоже на ошибку. Какой вид деятельности вызвал проблему? У вас заканчивается ОЗУ (сколько места подкачки вы используете?)
Panther
1
Может быть много причин для массового доступа, и вы правы насчет одной из них. Тем не менее, мой вопрос является общим вопросом об ограничении виртуальной машины, чтобы даже когда она хочет, чтобы хост не позволял ей использовать некоторую часть пропускной способности.
yossile
@ bodhi.zazen Я хочу ограничить доступ (чтение / запись) к жесткому диску. ОЗУ и ЦП могут быть ограничены настройками образа виртуальной машины, но если гость интенсивно читает / записывает данные на диск (конечно же, на виртуальный диск), это не ограничивает.
yossile

Ответы:

9

Начиная с версии 4.0, мы можем ограничить пропускную способность Virtual Box для доступа к образам дисков (подробнее см. Руководство по Virtual Box )

Сначала нам нужно создать группу с полосой пропускания (в приведенном ниже примере с именем «Limit» для 20 МБ / с):

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 МБ / с мы можем затем выдать

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

Это может быть сделано даже во время выполнения.

Takkat
источник
2
--controller больше не является правильной командой. Теперь это должно быть --storagectl " Имя контроллера SATA ". Для ограничения доступа во время работы виртуальной машины команда VBOXManage bandwidthctrl "VMName" --name Limit --limit 10
Хороший ответ. Но команда здесь в Virtual Box 4.2.12 была VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10и VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
Эрик Петручелли