가상 머신 게스트의 디스크 액세스 대역폭을 어떻게 제한 할 수 있습니까?


8

우분투 (호스트)에 Windows 게스트 OS를 거의 제공하지 않는 Virtualbox가 있습니다.
때때로 실행중인 Windows 가상 머신이 디스크에 대량으로 액세스하기 시작하여 호스트 환경에서 나를 차단합니다. 실제 하드 디스크에 대한 데이터 읽기 / 쓰기 액세스를 제한하고 싶습니다.

어떻게하니?


버그와 매우 흡사합니다. 어떤 종류의 활동으로 문제가 발생 했습니까? RAM이 부족합니까 (스왑 공간을 얼마나 사용하고 있습니까?)
Panther

1
대규모 액세스에 대한 여러 가지 이유가있을 수 있으며 그 중 하나에 대해 옳습니다. 그러나 내 질문은 VM을 제한하는 일반적인 질문이므로 호스트에 원할 때도 대역폭의 일부를 사용할 수 없습니다.
yossile

@ bodhi.zazen 하드 디스크에 대한 액세스 (읽기 / 쓰기)를 제한하고 싶습니다. RAM 및 CPU는 VM 이미지 설정에서 제한 될 수 있지만 게스트가 디스크 (가상 디스크)에 대해 많은 양의 읽기 / 쓰기를 수행하는 경우에는 제한이 없습니다.
yossile

답변:


9

버전 4.0부터 디스크 이미지에 액세스 할 수 있도록 Virtual Box 대역을 제한 할 수 있습니다 (자세한 내용은 Virtual Box 설명서 참조).

먼저 그룹이있는 밴드를 만들어야합니다 (아래 예에서 20MB / s의 경우 "Limit").

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

이 오류가 발생하면 :

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

그런 다음 디스크 이미지의 경로를 오류가 주어진 UUID로 바꿉니다. {}

디스크 액세스를 10MB / s로 더 제한하기 위해

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

런타임 중에도 가능합니다.


2
--controller는 더 이상 올바른 명령이 아닙니다. 이제 --storagectl " SATA Controller Name " 이어야 합니다. VM이 실행되는 동안 액세스를 제한하려면 명령은 VBOXManage bandwidthctrl "VMName"

좋은 대답입니다. 그러나 Virtual Box 4.2.12의 명령은 VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10and VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit"입니다.
Erick Petrucelli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.