Comment puis-je limiter la bande passante d'accès au disque pour un invité de machine virtuelle?

8

J'ai une Virtualbox sur mon Ubuntu (hôte) qui sert peu de système d'exploitation invité Windows.
Parfois, la machine virtuelle Windows en cours d'exécution démarre un accès massif au disque qui me bloque dans mon environnement hôte. Je voudrais limiter la lecture / écriture de l'accès aux données sur le disque dur physique.

Comment puis-je le faire?

yossile
la source
Cela ressemble beaucoup à un bug. Quelle sorte d'activité a causé le problème? Vous manquez de RAM (combien d'espace de swap utilisez-vous?)
Panther
1
Il peut y avoir de nombreuses raisons à un accès massif et vous avez raison sur l'une d'entre elles. Cependant, ma question est générique sur la limitation d'une machine virtuelle afin que même quand elle le souhaite, l'hôte ne lui permette pas d'utiliser une partie de la bande passante.
yossile
@ bodhi.zazen Je veux limiter l'accès (lecture / écriture) au disque dur. La RAM et le CPU peuvent être limités à partir des paramètres d'image de la machine virtuelle, mais si un invité effectue une lecture / écriture intensive sur le disque (disque virtuel bien sûr), il n'y a pas de limite à cela.
yossile

Réponses:

9

À partir de la version 4.0, nous sommes en mesure de limiter la bande passante de Virtual Box pour accéder aux images de disque (voir le manuel de Virtual Box pour plus de détails)

Nous devons d'abord créer un groupe de bande passante (dans l'exemple ci-dessous nommé "Limite" pour 20 Mo / 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

Si vous obtenez cette erreur:

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

puis remplacez le chemin d'accès à l'image disque par l'UUID indiqué dans l'erreur (les deux doivent être identiques), y compris le {}

Pour limiter davantage l'accès au disque à 10 Mo / s, nous pouvons alors émettre

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

Cela peut même être fait pendant l'exécution.

Takkat
la source
2
--controller n'est plus la bonne commande. Il devrait maintenant être --storagectl " SATA Controller Name " Pour limiter l'accès pendant que la machine virtuelle est en cours d'exécution, la commande est VBOXManage bandwidthctrl "VMName" --name Limit --limit 10
Bonne réponse. Mais la commande ici dans Virtual Box 4.2.12 était VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10et VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
Erick Petrucelli