仮想マシンゲストのディスクアクセス帯域幅を制限するにはどうすればよいですか?


8

Ubuntu(ホスト)にVirtualboxがあり、WindowsゲストOSをほとんど提供していません。
実行中のWindows仮想マシンがディスクへの大規模なアクセスを開始し、ホスト環境で私をブロックすることがあります。物理ハードディスクへのデータアクセスの読み書きを制限したい。

どうすればできますか?


バグのように聞こえます。どのような活動が問題の原因でしたか?RAMが不足していますか(どのくらいのスワップ領域を使用していますか?)
Panther

1
大規模なアクセスには多くの理由があるかもしれませんが、あなたはそれらの1つについて正しいです。ただし、私の質問は、VMを制限することに関する一般的な質問です。そのため、ホストが必要な場合でも、帯域幅の一部を使用できません。
ヨシル

@ bodhi.zazenハードディスクへのアクセス(読み取り/書き込み)を制限したい。RAMとCPUはVMイメージの設定から制限できますが、ゲストがディスク(もちろん仮想ディスク)に対して大量の読み取り/書き込みを行っている場合、制限はありません。
ヨシル

回答:


9

バージョン4.0以降、仮想ボックスの帯域幅をディスクイメージへのアクセスに制限できるようになりました(詳細については、仮想ボックスのマニュアルを参照してください)。

最初にbandwithグループを作成する必要があります(以下の例では、20 MB / 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(両方とも同じである必要があります)に置き換えます。 {}

ディスクアクセスをさらに10 MB / sに制限するために、次を発行できます。

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

これは実行時にも行うことができます。


2
--controllerは正しいコマンドではなくなりました。これは--storagectl " SATA Controller Name "になります。VMの実行中にアクセスを制限するには、コマンドはVBOXManage bandwidthctrl "VMName" --name Limit --limit 10

いい答えだ。しかし、ここで仮想ボックス4.2.12でのコマンドがいたVBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit"
エリックペトルチェッリ2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.