Como posso limitar a largura de banda de acesso ao disco para um convidado da Máquina Virtual?

8

Eu tenho um Virtualbox no meu Ubuntu (host) que serve poucos SOs convidados do Windows.
Às vezes, a máquina virtual do Windows em execução inicia um acesso massivo ao disco, o que me bloqueia no meu ambiente host. Gostaria de limitar o acesso de leitura / gravação de dados ao disco rígido físico.

Como eu posso fazer isso?

yossile
fonte
Parece muito com um bug. Que tipo de atividade causou o problema? Você está funcionando fora da RAM (quanto espaço de troca que você está usando?)
Panther
11
Pode haver muitas razões para o acesso massivo e você está certo sobre uma delas. No entanto, minha pergunta é genérica sobre a limitação de uma VM para que, mesmo quando ele queira que o host não permita que ele use uma parte da largura de banda.
26512 yossile
@ bodhi.zazen Quero limitar o acesso (leituras / gravações) ao disco rígido. A RAM e a CPU podem ser limitadas a partir das configurações de imagem da VM, mas se um convidado estiver fazendo uma leitura / gravação pesada no disco (disco virtual, é claro), não haverá limite para isso.
26512 yossile

Respostas:

9

A partir da versão 4.0, podemos limitar a largura de banda do Virtual Box para acessar imagens de disco (consulte o Manual do Virtual Box para obter detalhes)

Primeiro precisamos criar um grupo de largura de banda (no exemplo abaixo chamado "Limite" para 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

Se você receber este erro:

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

substitua o caminho para a imagem do disco pelo UUID fornecido no erro (ambos devem ser iguais), incluindo o {}

Para limitar ainda mais o acesso ao disco em 10 MB / s, podemos emitir

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

Isso pode até ser feito durante o tempo de execução.

Takkat
fonte
2
--controller não é mais o comando correto. Agora deve estar --storagectl " SATA Nome do Controlador " Para limitar o acesso enquanto a VM está executando o comando é VBoxManage bandwidthctrl "VMName" --name limite --limit 10
Boa resposta. Mas o comando aqui no Virtual Box 4.2.12 foi VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10e VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
precisa saber é o seguinte