Come posso limitare la larghezza di banda di accesso al disco per un guest della macchina virtuale?


8

Ho una Virtualbox sul mio Ubuntu (host) che serve pochi SO guest Windows.
A volte la macchina virtuale Windows in esecuzione inizia un enorme accesso al disco che mi blocca nel mio ambiente host. Vorrei limitare l'accesso in lettura / scrittura dei dati al disco rigido fisico.

Come posso farlo?


Sembra molto un bug. Che tipo di attività ha causato il problema? Stai esaurendo la RAM (quanto spazio di swap stai utilizzando?)
Panther

1
Potrebbero esserci molte ragioni per un accesso massiccio e hai ragione su uno di essi. Tuttavia, la mia domanda è generica sulla limitazione di una VM in modo che anche quando vuole l'host non gli consenta di utilizzare una parte della larghezza di banda.
Yossile,

@ bodhi.zazen Voglio limitare l'accesso (letture / scritture) al disco rigido. La RAM e la CPU possono essere limitate dalle impostazioni dell'immagine della VM, ma se un guest sta eseguendo operazioni di lettura / scrittura sul disco (ovviamente disco virtuale), non vi sono limiti.
Yossile,

Risposte:


9

A partire dalla versione 4.0 siamo in grado di limitare la larghezza di banda della Virtual Box per l'accesso alle immagini del disco (vedere il Manuale della Virtual Box per i dettagli)

Dobbiamo prima creare un gruppo bandwith (nell'esempio di seguito denominato "Limit" per 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 ricevi questo errore:

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

quindi sostituire il percorso dell'immagine del disco con l'UUID indicato nell'errore (entrambi dovrebbero essere gli stessi) incluso il {}

Per limitare ulteriormente l'accesso al disco a 10 MB / s, possiamo quindi emettere

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

Questo può essere fatto anche durante il runtime.


2
--controller non è più il comando corretto. Ora dovrebbe essere --storagectl " Nome controller SATA " Per limitare l'accesso mentre la VM è in esecuzione, il comando è VBOXManage bandwidthctrl "VMName" --name Limit --limit 10

Bella risposta. Ma il comando qui in Virtual Box 4.2.12 era 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".
Erick Petrucelli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.