当前位置:首页 > Windows程序 > 正文

Libvirt中windows虚拟机的动态内存管理

2021-05-26 Windows程序

Libvirt支持对虚拟机进行内存动态扩展,但是windows虚拟机首先需要安装virtio-win驱动。

KVM提供的virtio-win驱动下载地址:

以下是栗子

镜像:windows2008R2,64位
virtio-win:virtio-win-0.1-100.iso
disk:差分镜像(qemu-img create -f qcow2 -b ./windows_2008R2_x86_64 disk)

使用qemu命令启动虚拟机并加载virtio驱动:

qemu-system-x86_64 -hda ./windows_2008R2_x86_64 -drive file=./disk,if=virtio -drive file=./virtio-win-0.1-100.iso,media=cdrom,index=1 -net nic,model=virtio -net user -boot d -vga std -m 4096 -usbdevice tablet -vnc :50 -enable-kvm

通过vnc访问该虚拟机,进行以下操作:

进入“设备管理器” - “系统设备”,安装“未知设备”为“Virtio Balloon Driver”

将virtio-win光驱中的WIN7/X86目录拷贝到“c:/Program files/Balloon”

以管理员身份使用cmd命令行进入上述目录

执行“BLNSVR.exe -i”用以安装BLNSVR服务

正常关机保存设置

至此,,该disk文件已经具备了获取详细内存信息、动态调整内存大小的能力,验证的方法如下:

内存详细信息获取验证:

1.使用该disk文件启动虚拟机,在xml文件中添加如下段落用于启用balloon设备,同时设定采集周期为10s

... <devices> <memballoon model=‘virtio‘> <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x02‘ function=‘0x0‘/> <stats period=‘10‘/> </memballoon> </devices> </domain>

2.采集时间可以手动设置

virsh dommemstat <dommain> --period <time(sec)>

3.获取虚拟机的当前内存用量

virsh dommemstat <dommain>

内存动态大小调整验证:

1.关闭虚拟机

virsh destroy <domain>

2.设置虚拟机最大内存值(如果已经写入xml文件可以跳过)

virsh setmaxmem <domain> --size <max_size>

3.启动虚拟机

virsh start <domain>

4.动态调整

virsh setmem <domain> --size <mem_size>

有点不同于linux系统的地方在于windows会显示设置的最大内存值,会让人产生误解。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71279.html