研究了很久的KVM,感覺是我用過的最快的虛擬機。對比常用的虛擬機,Vmware的功能全面,設置簡單,但其速度不是很好;VirtualBox的效率雖然比Vmware高一些,但是存在不少缺點,感覺在運行時比較搶CPU,現在virtualbox已經支持smp,和虛擬化技術,但整體效率還是沒有KVM高(但是圖形效率作的不錯);KVM(Kernel-based Virtual Machine),基於內核的虛擬機,是我用過的最快的虛擬機,需要CPU支持虛擬化技術,並且在BIOS里打開虛擬化選項,效率可達到物理機的80%以上,對SMP的支持很好。所以現在強烈吐血賣命推薦KVM。(注:在原文最下面添加了版虛擬化驅動(virtio)的使用方式)
(使用磁盤方式以更新,請大家注意!!!)
沒有廢話,以下是在UBUNTU 10.04.3 64BIT下的方法
獲得KVM:
KVM的網站:http://sourceforge.net/projects/kvm/files/
下載最新的qemu-kvm-1.0.tar.gz
解壓:
需要用到的包:
在 UBUNTU 10.04中 ,可以使用
來解決依賴關系。
三步曲:
/configure --prefix=/usr/local/kvm
make
sudo make install
安裝好以后加載KVM模塊
sudo modprobe kvm-intel //如果你的是INTEL處理器就用這個
sudo modprobe kvm-amd //如果你的是AMD處理器就用這個
這樣就裝好了。
下面介紹配置KVM橋接網絡的方法: \\特別注意,大部分不能橋接無線網卡。。。只能橋接PCI網卡。。。。
安裝橋接工具:
安裝創建TAP界面的工具:
編輯網絡界面配置文件(
),根據你的情況加入以下內容:
iface eth0 inet manual
auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用戶名,在這里換為你的用戶名
auto br0
iface br0 inet static \\當然這里也可以使用DHCP分配
bridge_ports eth0 tap0
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
激活tap0和br0: //有些時候會不奏效,但重啟后就行了
sudo /sbin/ifup br0
好了以后ifconfig看一下,多了一個tap0和br0, br0上的IP地址就是你本機的IP地址。
KVM的使用方法:
KVM的使用方法具體可以參考
下面具體舉幾個例子:
創建虛擬磁盤(用qemu-img命令):
cd kvm
/usr/local/kvm/bin/qemu-img create -f qcow2 winxp.img 10G
創建虛擬機:
這里對各個參數說明一下:
分配512MB的內存給GUEST OS
使用虛擬磁盤的文件和路徑,並啟用writeback緩存。
使用本地時間(一定要加這個參數,不然虛擬機時間會有問題)
使用網絡,並連接到一個存在的網絡設備tap0,注意mac地址一定要自己編一個,特別是如果你虛擬了多個系統並且要同時運行的話,不然就MAC沖突了,在
從光盤啟動 (從硬盤啟動則為 -boot c )
使用的光盤鏡像,如果要使用物理光驅的話就是 -cdrom /dev/cdrom
smp處理器個數為2個,如果你是4核處理器,后面的數字就為4(如果不開啟此選項,則只能以單核模式運行)
開始啟動裝系統了吧?是不是非常的快?如果你機器可以的話大概在15分鍾左右就把XP裝好了。
啟動裝好的虛擬機(很簡單,上面的命令改兩個參數就行):
然后在客戶端里設置好IP地址就可以使用了,但是KVM的顯卡能力不行,可以通過rdesktop遠程連接解決
補充:
如果同時運行多個GUEST OS ,則網絡設置要改一下,在/etc/network/interfaces 里加幾個tap界面就行了,每個GUEST OS單獨使用一個TAP,比如說現在要同時運行3個GUEST OS ,則配置文件如下:
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用戶名,在這里換為你的用戶名
auto tap1
iface tap1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用戶名,在這里換為你的用戶名
auto tap2
iface tap2 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user lm \\lm是我的用戶名,在這里換為你的用戶名
auto br0
iface br0 inet static \\當然這里也可以使用DHCP分配
bridge_ports eth0 tap0 tap1 tap2
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
啟動GUEST OS
把ifname=tap0換為你要tap1或者tap2就行了,MAC也要改噢。。
要注意,系統重啟后要重新加載kvm內核模塊:
sudo modprobe kvm-amd //如果使用AMD處理器
sudo modprobe kvm-intel //如果是用INTEL處理器
當然,你也可以修改系統相關設置在啟動時自動加載該模塊。
同理,可以用此方法安裝LINUX。裝完了可以對比一下,是不是比VB和VM要爽得多呢?
其他比如像USB連接問題可以參考論壇里的帖子
我已經在我的系統里同時運行了4個CentOS 4.8 1個winxp sp3 1個win2003 sp2 5個FreeBSD 8.0
速度太快了,難以置信。
系統配置為:Athlon X2 5000+ 8G RAM 跑的Ubuntu 10.04.1 64bit
其實KVM的安裝和使用都很方便簡單的,大家要理解KVM各個參數的含義。最關鍵的就是KVM的網絡橋接的設置,在這里大家要多看軟件自身的文檔,會有很大的幫助。
以上是KVM的最基礎的實現方法,望大家多看文檔,以便掌握更多更靈活的功能。
BTW:
[b]現在已經找到了原來磁盤性能糟糕的原因,按照以往的方法是用 -hda disk.img 的方法來使用虛擬磁盤,現在版本更新以后時候 -drive file=/home/lm/kvm/winxp.img,cache=writeback 來使用虛擬磁盤,請廣大使用KVM的用戶注意這里的變化。
注:Ubuntu 10.04 LTS 下的安裝源里的KVM的方法(qemu-kvm 0.12.3):
直接
網絡配置如上,是一樣的。
大家注意一個問題,如果你虛擬的是WIN2003,那么切勿在-net參數中使用model=e1000,否則HOST和GUEST之間不能PING通
添加:半虛擬化驅動使用方式如下
WIN系統需要下載的驅動程序:
http://www.linux-kvm.com
在左手邊有一個Windows Guest Drivers,下載cdrom image和floppy image
使用版虛擬化驅動(virtio)可以得到更好的磁盤性能和網絡性能,使用版虛擬化驅動的時候,KVM的啟動參數如下(安裝WIN時):
說明一下新的參數:
添加了if=virtio,通過virio來使用磁盤
添加了model=virtio,通過virtio來使用網絡
驅動程序的軟盤鏡像,-fda為添加一個軟盤驅動器
在安裝WINDOWS的時候需要注意:在虛擬機啟動從光盤引導啟動WINDOWS安裝的時候(最開始的時候)會提示你,按F6選擇第三方驅動程序,按F6以后過幾秒鍾,它會出現選擇第三方驅動的畫面,按下S,會讓你選擇你要加載的第三方驅動。(網絡太慢,圖傳不上來,大家可參考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation)
在WINDOWS安裝完成以后,還要安裝virtio網絡驅動程序,修改KVM啟動參數:
啟動虛擬機,啟動好WIN系統以后,在WIN中安裝網卡驅動程序(在設備管理器中安裝),驅動程序就在虛擬機的光驅中。有時在安裝過程中會出現問題,那么去掉cache=writeback重新安裝試試。
現在主流的LINUX系統的內核都集成了virtio驅動,所以在使用半虛擬化驅動安裝LINUX的時候可以直接安裝,無需加載virtio驅動來安裝。
注:
如果你使用的是raw文件系統或LVM分區,則應該將cache=writeback改為cache=none
建議大家使用LVM分區方式,這樣虛擬機的磁盤性能可以接近物理機的磁盤性能。關於LVM的創建大家可以去查找相關文章,在這里給大家一個KVM使用LVM分區的示例:
virt-manager圖形管理界面使用方法:
1.安裝qemu-kvm,virt-manager,bridge-utils
2.修改網絡為橋接模式:
編輯/etc/network/interface
修改其內容,如:
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
bridge_ports eth0
address 192.168.1.8
netmask 255.255.255.0
gateway 192.168.1.1
就這兩段哦,相比上面的,少了TAP段
重啟networking服務(如果原來你使用network-manager來管理網絡,那么需要停止network-manager):
sudo /etc/init.d/networking start //啟動networking服務,需要耐心等待一下
這時可以ifconfig看以下br0有沒有出現你設定的IP地址,也可以用brctl show來看一下eth0有沒有橋接到br0。
啟動vrit-manager
這里要使用超級用戶身份啟動,所以要在終端里使用sudo命令啟動,如果直接點GNOME菜單中的虛擬系統管理器,那么只能鏈接到用戶模式(除非你新建一個鏈接,使用SSH方式從本機鏈接到本機)