在計算機虛擬化中,Virtio是一種半虛擬化解決方案,即需要對Guest OS進行一定的修改(安裝相應的驅動程序),能夠對虛擬機的I/O性能進行大幅的提升。在QEMU+KVM的環境中,Virtio的後端驅動由QEMU程序提供,不需要額外的安裝,而前端驅動則位於Guest OS中,需要將相應OS類型的驅動程序安裝到Guest OS中。

本文以QEMU+KVM為VMM,以Win 7為Guest OS,展示如何在Guest OS上安裝Virtio SCSI驅動。

由於在Guest OS在沒有安裝Virtio驅動的時候,無法使用Virtio設備,同時Guest OS在沒有VIrtio設備的時候,也可能無法正確安裝Virtio驅動,故需要一定的方法繞過該問題,即先給虛擬機一個空的Virtio SCSI設備用於安裝Virtio SCSI驅動程序,等安裝完畢後,再將虛擬機鏡像綁定到Virtio SCSI控制器上。如果在虛擬機沒有安裝Virtio SCSI驅動的情況下,直接將虛擬機鏡像綁定到Virtio SCSI設備上的話,將會導致虛擬機無法啟動。

1. 按照正常的步驟創建虛擬機,並啟動。

執行下列命令創建一個容量為40GB的磁碟文件,用作虛擬機的磁碟

qemu-img create -f qcow2 win7.img 40G

執行下列命令啟動虛擬機,並將win7系統安裝到win.img所制定的虛擬機磁碟中。

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

2. 下載virtio驅動

下載地址頁面:docs.fedoraproject.org/

如:fedorapeople.org/groups

3. 利用下列命令啟動虛擬機,虛擬機鏡像先還是以傳統的hda形式傳進去,並且將下載的virtio-win.iso以cdrom的形式傳進虛擬機,最後還得給虛擬機創建一個virtio的設備那樣windows才能正確安裝virtio驅動(好像,如果沒有virtio設備,windows是無法正確安裝virtio驅動的,這點很重要)

這裡以virtio-blk-pci設備為例(virtio是一類I/O設備的統稱,可以有很多中,如block、net、serial等),並且virtio-blk-pci設備在傳進虛擬機的時候,得有個對應的磁碟文件,這裡就創建一個10GB的空的磁碟文件。

qemu-img create -f qcow2 fake.img 10G

然後執行下列命令

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom virtio-win.iso -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=fake.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

啟動虛擬機後發現在CDROM中已經自動載入了virtio-win.iso鏡像

同時在設備管理器中找到了帶感嘆號的SCSI控制器

右擊該設備,選擇更新驅動程序,然後選擇「瀏覽計算機以查找驅動程序軟體」,在搜索位置上選擇載入的CDROM(可以發現,在該iso鏡像中包含了很多種I/O設備的virtio驅動,並且每種virtio驅動的目錄下都對應有不同的OS類型),這裡不需要自己手動選擇這些,只需要選擇「CD驅動器」即可,讓系統自動搜索合適的驅動程序。

然後下一步,自動搜索到了Virtio SCSI controller的驅動程序了,選擇安裝。

至此驅動程序安裝完畢

關閉虛擬機。

4. 將虛擬機鏡像win7.img綁定到Virtio SCSI設備上,重新啟動虛擬機,執行如下命令(不需要cdrom和fake.img了)

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=win7.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

會發現,虛擬機啟動快多了,這是因為虛擬機使用了半虛擬化的Virtio SCSI控制器,大大加快了虛擬機磁碟讀寫的速度。


推薦閱讀:
相关文章