配置KVM下windows虛擬機器使用virtio驅動
一、virtiod的介紹:
(參考官方文件:http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/chap-Virtualization-KVM_Para_virtualized_Drivers.html)
Para-virtualized drivers are available for virtualized Windows guests running on KVM hosts. These para-virtualized drivers are included in the virtio package. The virtio package supports
block (storage) devices and network interface controllers.
Para-virtualized drivers enhance the performance of fully virtualized guests. With the para-virtualized drivers guest I/O latency decreases and throughput increases to near bare-metal levels. It is recommended to use the para-virtualized drivers for fully
virtualized guests running I/O heavy tasks and applications.
The KVM para-virtualized drivers are automatically loaded and installed on the following:
- Any 2.6.27 or newer kernel.
- Newer Ubuntu, CentOS, Red Hat Enterprise Linux.
- Those versions of Linux detect and install the drivers so additional installation steps are not required.
- Windows XP (32-bit only)
- Windows Server 2003 (32-bit and 64-bit versions)
- Windows Server 2008 (32-bit and 64-bit versions)
- Windows 7 (32-bit and 64-bit versions)
預設情況下安裝好windows虛擬機器,採用普通的驅動,即硬碟和網絡卡都採用預設配置情況下,硬碟是 ide 模式;
而網絡卡工作在模擬的rtl 8139 網絡卡下,速度為100M 全雙工。採用 virtio 驅動後,網絡卡工作在 1000M 的模式下,硬碟工作是SCSI模式下
二、Windows安裝VirtIO驅動的兩種方法:
1、使用IDE方式來安裝系統,安裝系統完成後,在guest中安裝virtio磁碟驅動,然後再修改kvm啟動引數,設定磁碟為virtio
(1)安裝完Windows後,建立一塊臨時的硬碟,將其設定為virtio模式新增到Windows中,並設定網絡卡模式為virio
(2)開機後將提示檢查到新硬體,然後安裝驅動程式後關機
(3)刪除新新增的臨時硬碟,將原來的硬碟設定為virtio模式,開機即可識別到硬碟與網絡卡都為virtio模式
2、在安裝時直接載入virtio驅動
因為已經有做好的windows映象檔案,所以此教程採用第一種方法
三、操作過程(包括前期準備):
1、確定機器是否支援虛擬化:(必要時需要在BIOS開啟VT)
egrep "(vmx|svm)" --color=always /proc/cpuinfo (顯示紅色)
2、安裝kvm、libvirt
apt-get install kvm qemu-kvm bridge-utils libvirt-bin virtinst
kvm:這個是KVM的核心,是一個核心模組。
qemu-kvm:KVM的裝置模擬,由開源虛擬化軟體QEMU中的管理工具演變而來。
bridge-utils:用於橋接網絡卡
libvirt-bin:虛擬機器命令列管理工具
virtinst:虛擬機器建立工具
這裡插一句:kvm已經和qemu合併了,源裡”kvm“和”qemu“都是指向“qemu-kvm”的虛包PS:如果你的宿主機安裝有圖形介面,推薦你安裝圖形化管理工具 virt-manager,而且這個工具還支援SSH遠端連線(qemu+SSH)
3、配置橋接網絡卡
虛擬機器通過橋接的方式,才更加接近物理環境。配置如下:vim /etc/network/interfaces
加入br0,把原來與eth0有關的配置註釋掉然後新增br0,並且將eth0網路配置給br0
例如:以test60(192.168.7.60)為例:
auto br0
iface br0 inet static
address 192.168.7.60
netmask 255.255.255.0
gateway 192.168.7.254
bridge_ports eth0 # 橋接到eth0網絡卡
4、製作映象的過程不敘述,假設映象已經制作好,並安裝好作業系統
5、為虛擬機器建立xml配置文件,方便libvirt管理,也避免了每次用命令列建立啟動虛擬機器時要寫很多命令
(注:也可以安裝virt-manager,使用圖形介面的形式安裝,可參考:http://www-01.ibm.com/support/docview.wss?uid=swg21587905
http://hi.baidu.com/woailiuxiaomi/item/635361d93898782548e1ddc7#
)
保證img檔案格式和原來的一致:比如之前為qcow2,但是檔案中寫成raw,就無法啟動
例子:
<domain type='kvm'>
<name>win7-32</name>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='cdrom'/>
<boot dev = 'hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/windows-virtio/win7-32.img'/>
<target dev='hda' bus='ide'/>
</disk>
<interface type='bridge'>
<source bridge='br0'/>
<mac address="00:16:3e:5d:aa:a9"/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>
</devices>
</domain>
5、準備好virtio驅動:
下載地址:http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/,下載最新的ISO檔案(virtio-win-0.1-81.iso)
在該ISO檔案中,包括好幾個資料夾,具體對應關係如下:
- wxp: winxp 磁碟驅動
- wnet: win2003磁碟驅動
- win7:win7磁碟驅動
- wlh: win2008磁碟驅動
- xp: win xp/2003 網絡卡驅動
- vista: win vista/7/2008 網絡卡驅動
6、手動申請一塊硬碟給該虛擬機器掛上,並把下載的iso也掛載在該虛擬機器上
qemu-img ceate -f qcow2 fake.img 10G
修改win-server-08的libvirt的配置檔案。增加如下內容:<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/windows-virtio/win7-32.img'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/windows-virtio/fake.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/windows-virtio/virtio-win-0.1-81.iso'/>
<target dev='hdc' bus='ide'/>
</disk>
其中cdrom是為了掛載iso檔案,以便安裝virtio的驅動。而fake.img是為了讓win能識別需要安裝virtio的驅動。網絡卡部分直接新增<model type='virtio'/>就好了
7、重啟虛擬機器
重啟之後,在windows下的硬體管理器之中就能看到有標黃的需要安裝的驅動(硬碟驅動和網絡卡驅動),選擇在檔案系統裡安裝,在iso檔案裡找對應的版本的驅動
注意:在windows xp系統下如果選擇自動安裝會出現不成功,一定要手動選擇具體安裝路徑,具體可參考:http://lvii.github.io/system/2013/11/15/xp-sp3-kvm-network-virtio-install-failed/
8、更新xml檔案,刪掉新新增的磁碟資訊,並使原disk更新為SCSI格式
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/windows-virtio/win7-32.img'/>
<target dev='vda' bus='virtio'/>
</disk>
改完後,用virsh命令destroy並start重啟。在裝置管理器發現原硬碟項和網絡卡已變成virtio模式,安裝成功!
參考資料:
http://www.cnblogs.com/babybluevino/p/3472996.htmlhttp://blog.chinaunix.net/uid-20776139-id-3481065.html
http://www.361way.com/kvm-windows-virtio/2816.html