Linux · 2022-09-08

kvm里的虚拟机硬盘和网卡使用virtio驱动

1.首先从虚拟机的xml文件中找到已经使用virtio驱动的硬件,复制里面的address这行参数出来

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

说明:这里面的slot参数是需要修改的,不能重复

因此硬盘slot使用0x08,网卡使用0x09

2.找到硬盘的配置内容所在

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/kvm/generic.qcow2'/>
      <target dev='hda' bus='ide'/> # 换成virtio 
      <address type='drive' controller='0' bus='0' target='0' unit='0'/> # 这行换成这个:<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>

3.找到网卡的配置内容所在

没有切换使用桥接网络的配置,默认的NAT配置

    <interface type='network'>
      <mac address='52:54:00:30:06:32'/>
      <source network='default'/>
      <model type='rtl8139'/> # 需要修改这个rtl8139为virtio
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> # 这行修改成 <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </interface>

切换使用桥接网络的配置

    <interface type='bridge'>
      <mac address='52:54:00:30:06:32'/>
      <source network='br0'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

切换使用virtio驱动的配置

    <interface type='bridge'>
      <mac address='52:54:00:30:06:32'/>
      <source bridge='br0'/>
      <model type='virtio'/>  # 修改后的效果
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>  # 修改后的效果
    </interface>

 

创建临时的virtio驱动的磁盘文件
qemu-img create -f qcow2 /opt/kvm-img/re-fastdfs.img 1G

attach-disk win10 /data2/virtio-win-0.1.221.iso hda –type cdrom –mode readonly

 

 

默认情况下,创建的vm的视频RAM限制为 16MB 。在win操作系统中分辨率最高就只能调到 1024x768 。

<video>
  <model type='cirrus' vram='16384' heads='1' primary='yes'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>

单单修改ram大小并不管用,在vm中最高分辨率还是1024。

也就是说可能还需要其他的设置。

增加必要的视频RAM

默认的具有 16MB 的视频RAM,4k分辨率(3840 x 2160)来计算。

3840 x 2160 = 8294400     # 总共像素点
8294400 x 32 = 265420800  # 每个像素点占 4 个字节
265420800/8 = 33177600    # 转为 Byte 单位
33177600 /(1024 * 1024)= 31.640625 MB

所以32 MB视频RAM足以达到4k分辨率,考虑到一些开销,我们将视频RAM增加到64 MB。

视频类型设置为 qxl ,如下更新配置文件中的设置:

<video>
  <model type='qxl' ram='65536' vram='65536' vgamem='65536' heads='1' primary='yes'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>

重新启动vm就能看到支持的分辨率了。