¿Cómo puedo limitar el ancho de banda de acceso al disco para un invitado de máquina virtual?

8

Tengo un Virtualbox en mi Ubuntu (host) que sirve a pocos sistemas operativos invitados de Windows.
A veces, la máquina virtual Windows en ejecución inicia un acceso masivo al disco que me bloquea en mi entorno de host. Me gustaría limitar el acceso de lectura / escritura de datos al disco duro físico.

¿Cómo puedo hacerlo?

feroz
fuente
Suena muy parecido a un error. ¿Qué tipo de actividad causó el problema? ¿Se está quedando sin RAM (cuánto espacio de intercambio está utilizando?)
Panther
1
Puede haber muchas razones para el acceso masivo y tiene razón sobre una de ellas. Sin embargo, mi pregunta es genérica sobre la limitación de una VM para que, incluso cuando lo desee, el host no le permita usar una parte del ancho de banda.
Yossile
@ bodhi.zazen Quiero limitar el acceso (lecturas / escrituras) al disco duro. La RAM y la CPU se pueden limitar desde la configuración de la imagen de la VM, pero si un invitado está leyendo / escribiendo mucho en el disco (disco virtual, por supuesto), entonces no hay límite.
Yossile

Respuestas:

9

A partir de la versión 4.0, podemos limitar el ancho de banda de Virtual Box para acceder a las imágenes de disco (consulte el Manual de Virtual Box para más detalles)

Necesitamos crear primero un grupo de ancho de banda (en el ejemplo a continuación llamado "Límite" 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

Si obtiene este error:

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

luego reemplace la ruta a la imagen de disco con el UUID proporcionado en el error (ambos deben ser iguales) incluyendo el {}

Para limitar aún más el acceso al disco a 10 MB / s, podemos emitir

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

Esto incluso se puede hacer durante el tiempo de ejecución.

Takkat
fuente
2
--controller ya no es el comando correcto. Ahora debería ser --storagectl " Nombre del controlador SATA " Para limitar el acceso mientras la VM está ejecutando el comando es VBOXManage bandwidthctrl "VMName" --name Limit --limit 10
Buena respuesta. Pero el comando aquí en Virtual Box 4.2.12 era VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10y VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
Erick Petrucelli