Bagaimana saya bisa membatasi bandwidth akses disk untuk tamu Virtual Machine?

8

Saya memiliki Virtualbox di Ubuntu (host) saya yang melayani beberapa OS tamu Windows.
Kadang-kadang mesin virtual Windows yang berjalan memulai akses besar ke disk yang menghalangi saya di lingkungan host saya. Saya ingin membatasi akses baca / tulis data ke harddisk fisik.

Bagaimana saya bisa melakukannya?

yossile
sumber
Kedengarannya sangat seperti bug. Jenis kegiatan apa yang menyebabkan masalah? Apakah Anda kehabisan RAM (berapa banyak ruang swap yang Anda gunakan?)
Panther
1
Mungkin ada banyak alasan untuk akses besar dan Anda benar tentang salah satunya. Namun, pertanyaan saya adalah yang umum tentang membatasi VM sehingga bahkan ketika ingin host tidak akan mengizinkannya untuk menggunakan sebagian dari bandwidth.
Yossile
@ bodhi.zazen Saya ingin membatasi akses (baca / tulis) ke hard disk. RAM dan CPU dapat dibatasi dari pengaturan gambar VM tetapi jika seorang tamu melakukan membaca / menulis ke disk (virtual disk tentu saja) maka tidak ada batasan untuk itu.
Yossile

Jawaban:

9

Mulai dari versi 4.0 kami dapat membatasi bandwidth Kotak Virtual untuk akses ke gambar disk (lihat Manual Kotak Virtual untuk detail)

Kita perlu membuat grup bandwidth terlebih dahulu (dalam contoh di bawah ini bernama "Batas" untuk 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

Jika Anda mendapatkan kesalahan ini:

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

lalu ganti path ke disk image dengan UUID yang diberikan dalam kesalahan (keduanya harus sama) termasuk {}

Untuk membatasi akses disk hingga 10 MB / dtk kita dapat mengeluarkan

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

Ini bahkan dapat dilakukan selama runtime.

Takkat
sumber
2
--controller bukan lagi perintah yang benar. Seharusnya sekarang --storagectl " Nama Pengontrol SATA " Untuk membatasi akses saat VM menjalankan perintahnya adalah VBOXKelola bandwidthctrl "VMName" - Batas Nama - Batas 10
Jawaban bagus. Tetapi perintah di sini di Kotak Virtual 4.2.12 adalah VBoxManage bandwidthctl "VM Name" add "Limit" --type disk --limit 10dan VBoxManage storageattach "VM Name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "Disk Name.vdi" --bandwidthgroup "Limit".
Erick Petrucelli