KVM下windows虚拟机使用virtio驱动

时间:2015-12-10 19:07:28   收藏:0   阅读:20525

KVM下windows虚拟机默认disk使用的是Qemu IDE硬盘,网卡默认是rtl8139网卡。为了使kvm主机在相同的配置下,有更好的效率,可以将网卡和磁盘替换成virtio的驱动。

windows的virtio驱动主要包括网卡以及磁盘的驱动,主要有三种方式,第一种是已有windows的操作系统,需要更新驱动,第二种是是安装时加载virtio驱动,第三种是直接制作virtio驱动的iso系统镜像。

一:更新virtio驱动

1.修改xml文件

原始xml文件

<disk type=‘file‘ device=‘disk‘>
  <driver name=‘qemu‘ type=‘qcow2‘ cache=‘writeback‘/>
  <source file=‘/polydata/image/winxp_sp2.qcow2‘/>
  <target dev=‘hda‘ bus=‘ide‘/>
  <address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘0‘/>
</disk>

<interface type=‘bridge‘>
  <mac address=‘52:54:00:33:a4:19‘/>
  <source bridge=‘br0‘/>
  <model type=‘rtl8139‘/>
  <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
</interface>

输入命令virsh edit winxp_sp2修改如下

    <disk type=‘file‘ device=‘disk‘>
      <driver name=‘qemu‘ type=‘qcow2‘ cache=‘writeback‘/>
      <source file=‘/polydata/image/winxp_sp2.qcow2‘/>
      <target dev=‘hda‘ bus=‘ide‘/>
      <address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘0‘/>
    </disk>
    <disk type=‘file‘ device=‘cdrom‘>
      <driver name=‘qemu‘ type=‘raw‘/>
      <source file=‘/tmp/virtio-win-0.1.96.iso‘/>
      <target dev=‘hdc‘ bus=‘ide‘/>
      <readonly/>
      <address type=‘drive‘ controller=‘0‘ bus=‘1‘ target=‘0‘ unit=‘0‘/>
    </disk>
    <disk type=‘file‘ device=‘disk‘> 
    <driver type=‘qcow2‘ cache=‘writeback‘/>    
      <source file=‘/tmp/test.img‘/>    
      <target dev=‘vdc‘ bus=‘virtio‘/> 
    </disk>
    <interface type=‘bridge‘>
      <mac address=‘52:54:00:33:a4:19‘/>
      <source bridge=‘br0‘/>
      <model type=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
    </interface>

其实原始disk不用修改,只需要添加virtio-win.iso的cdrom、virtio类型的临时disk,以及将网卡修改为virtio类型。

2.创建磁盘:qemu-img create –f qcow2 /tmp/test.img 1G,将驱动复制到/tmp/virtio-win-0.1.96.iso,驱动下载地址 https://fedoraproject.org/wiki/Windows_Virtio_Drivers,可以打开https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/下载不同版本的驱动

3.更新驱动:virsh start winxp_sp2,使用vnc连接,系统会提示找到新硬件,弹窗安装驱动的窗口(SCSI和网卡),安装时尽量不要自动搜索,而是手动搜索,不同的操作系统路径如下:

磁盘 网卡
XP viostor\xp\x86\viostor.inf NetKVM\xp\x86\netkvm.inf
2k3 viostor\2k3\x86\viostor.inf NetKVM\2k3\x86\netkvm.inf
win7 viostor\w7\x86\viostor.inf NetKVM\w7\x86\netkvm.inf

如果是64位的OS,则寻找amd64对应的文件夹,较老的驱动目录结构有点变化,如下所示

技术分享

其中WLH对应win2008,WNET对应win2003,WXP对应XP,XP文件夹里则只包含XP的网卡驱动

注1:如果打开虚拟机后未弹出自动更新驱动的对话框,则右击我的电脑—>管理—>设备管理器,会看到感叹号的SCSI以及网卡,右击更新驱动,按照上述步骤更新virtio驱动。

注2:对于xp系统来说virtio-win驱动版本很重要,一开始一直安装不成功就是因为驱动版本信息不对,如果安装过程很慢则基本就是驱动版本不对,换个驱动试试,经测试,针对xpsp2/xpsp3的操作系统,virtio-win-0.1.96版本可用,而针对win7sp1的操作系统,稳定版virtio-win-0.1.102可用。

4.关闭虚拟机,virsh edit winxp_sp2修改xml文件,删除cdrom和临时装载的disk内容,原始disk内容修改如下

<disk type=‘file‘ device=‘disk‘>
  <driver name=‘qemu‘ type=‘qcow2‘ cache=‘writeback‘/>
  <source file=‘/polydata/image/winxp_sp2.qcow2‘/>
  <target dev=‘vda‘ bus=‘virtio‘/>
  <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x05‘ function=‘0x0‘/>
</disk>

5.启动虚拟机可发现磁盘和网卡的驱动都已更新

技术分享

reference:http://wenku.baidu.com/link?url=g2-ZYBvADYEq1xOrn0B0teST-hSMvvbRHxP4A4aDEjjHoiKvoN0JBI3bpWkj01s_mIXSjVUvzOZScMdLUPwJJM4p0-WWbHj3eBgVMNbpBmy

二:安装时加载virtio驱动

1.xp/2k3

1.1 新建磁盘镜像 qemu-img create -f qcow2 /polydata/image/winxp_sp2_backup.qcow2 10G

1.2 准备驱动软盘(/tmp/virtio-win-0.1.96_x86.vfd)以及系统iso安装文件(/tmp/xpsp2_netkvm.iso,最好是已经集成virtio网卡驱动的镜像)

1.3 安装系统
virt-install --virt-type kvm --name winxp_sp2_backup --ram 512 --os-type=windows --os-variant=winxp --disk path=/polydata/image/winxp_sp2_backup.qcow2,format=qcow2,bus=virtio,cache=writeback --disk path=/tmp/virtio-win-0.1.96_x86.vfd,device=floppy --network bridge=br0,model=virtio --cdrom=/tmp/xpsp2_netkvm.iso --graphics vnc,listen=0.0.0.0 –noautoconsole

安装2k3系统时需要将--os-variant设置为win2k3

1.4 vnc连接,虚拟机起来后按F6,弹出如下界面

技术分享

输入S,选择合适的scsi设备(virtio)

技术分享

然后按两下回车就OK。剩下的就是一般的操作系统安装步骤,不再赘述。

安装完成效果如下

技术分享

2.win7

1.1 新建磁盘镜像 qemu-img create -f qcow2 /polydata/image/win7_sp1_backup.qcow2 20G

1.2 准备驱动光盘(/tmp/virtio-win-0.1.102)以及系统iso安装文件(/tmp/win7sp1.iso)

1.3 安装系统
virt-install --virt-type kvm --name win7_sp1_backup --ram 1024 --os-type=windows --os-variant=win7 --disk path=/polydata/image/win7_sp1_backup.qcow2,bus=virtio,format=qcow2,cache=writeback --network bridge=br0,model=virtio --cdrom=/tmp/win7sp1.iso --disk path=/tmp/virtio-win-0.1-102.iso,device=cdrom --graphics vnc,listen=0.0.0.0 --noautoconsole

1.4 vnc连接,弹出如下安装界面

技术分享

使用virtio接口的硬盘,我们必须加载virtio硬盘驱动。如果不加载该驱动windows installer会无法找到虚拟磁盘,点击加载驱动程序,浏览,选择virtio驱动光盘,找到viostor下对应的版本驱动,

技术分享

技术分享

点击下一步,安装virtio磁盘驱动,随后多出来一块硬盘,同时安装网卡的virtio驱动

技术分享

剩下的就是一般的操作系统安装步骤,不再赘述。效果如下:

技术分享

reference:http://www.mamicode.com/info-detail-126255.html

三:制作virtio驱动的iso系统镜像

此方法主要使用nlite(xp/2k3)和dism(win7/20008…)工具,具体参见https://miefen.com/201405/how-to-install-virtio-drivers-for-windows

按照教程使用nlite添加磁盘和网卡的virtio驱动,但是安装的时候始终提示找不到scsi的驱动,驱动版本也是用的virtio-win-0.1.96.iso。但却有人制作成功过(用的是virtio-win-0.1-74.iso),本人尝试未果。

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!