Wie kann ich die Bandbreite für den Festplattenzugriff für einen Gast einer virtuellen Maschine begrenzen?

8

Ich habe eine Virtualbox auf meinem Ubuntu (Host), die nur wenige Windows-Gastbetriebssysteme bedient.
Manchmal beginnt die laufende virtuelle Windows-Maschine mit einem massiven Zugriff auf die Festplatte, der mich in meiner Hostumgebung blockiert. Ich möchte das Lesen / Schreiben des Datenzugriffs auf die physische Festplatte beschränken.

Wie kann ich es tun?

yossile
quelle
Klingt sehr nach einem Bug. Welche Art von Aktivität hat das Problem verursacht? Ist Ihnen der Arbeitsspeicher ausgegangen (wie viel Swap-Speicherplatz verwenden Sie?)
Panther
1
Es kann viele Gründe für einen massiven Zugriff geben, und Sie haben Recht mit einem davon. Meine Frage bezieht sich jedoch allgemein auf die Begrenzung einer VM, sodass sie selbst dann, wenn sie zum Host möchte, keinen Teil der Bandbreite nutzen kann.
Yossile
@ bodhi.zazen Ich möchte den Zugriff (Lesen / Schreiben) auf die Festplatte beschränken. RAM und CPU können durch die VM-Image-Einstellungen eingeschränkt werden. Wenn ein Gast jedoch viel auf die Festplatte liest / schreibt (natürlich virtuelle Festplatte), gibt es keine Begrenzung dafür.
Yossile

Antworten:

9

Ab Version 4.0 können wir die Virtual Box-Bandbreite für den Zugriff auf Disk-Images beschränken ( Details siehe Virtual Box-Handbuch ).

Wir müssen zuerst eine Bandbreitengruppe erstellen (im folgenden Beispiel mit dem Namen "Limit" für 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

Wenn Sie diesen Fehler erhalten:

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

Ersetzen Sie dann den Pfad zum Disk-Image durch die im Fehler angegebene UUID (beide sollten identisch sein), einschließlich der {}

Um den Festplattenzugriff weiter auf 10 MB / s zu beschränken, können wir dann ausgeben

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

Dies kann sogar zur Laufzeit erfolgen.

Takkat
quelle
2
--controller ist nicht mehr der richtige Befehl. Es sollte jetzt --storagectl " SATA Controller Name " sein. Um den Zugriff zu beschränken, während die VM ausgeführt wird, lautet der Befehl VBOXManage bandwidthctrl "VMName" --name Limit --limit 10
Gute Antwort. Aber der Befehl hier in Virtual Box 4.2.12 war VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10und VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
Erick Petrucelli