FROM:http://hi.baidu.com/cat650/blog/item/605c306c9c8582f74216945a.htmlhtml
2010年最新,親自測試
首先說一點:碰到問題首先查找linux軟件庫(deb)中是否有能代替的軟件;不行使用wine運行windows軟件;再不行,才使用kvm等虛擬機。由於它們的效率是遞減的。還有一點,虛擬機最大的軟肋是:圖形、影音比較差。若是你想靠它運行電影軟件、3D軟件,那你就要有一顆堅強的心。linux
vbox 與 kvm 的區別:
vbox 是由 qemu 改寫而成,包含大量 qemu 代碼。可使用於 不支持 虛擬化的cpu。值得說的一點:vbox 在圖形方面比較好,能進行2D 3D加速。cpu控制不理想(估計是由於圖形支持的緣故)。操做上有獨立的圖形界面,易於上手。
kvm 是linux內核包含的東西,使用qemu做爲上層管理(命令行)。cpu 必須支持虛擬化。性能,做爲服務器很好,但是圖形能力十分的差。即便放電影,圖像也是像刷油漆同樣,一層一層的。cpu使用率控制很好。 控制上比較簡潔,功能比較豐富:好比使用 「無敵功能」全部更改指向內存,你的鏡像永遠保持乾淨。 「母鏡像」功能讓你擁有n個獨立快照點。 還有不少參數。另外,kvm做爲內核級的虛擬機,剛開始發展關注的公司比較多——可是尚未達到商業應用的水平。ios
整體而言:在支持 虛擬化的狀況下,vbox 和 kvm 的性能差很少,主要是面向對象不一樣:kvm使用於服務器,vbox使用於桌面應用。ubuntu
***********************************************windows
關於kvm:
kvm是開源軟件,全稱是kernel-based virtual machine(內核級虛擬機)。是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的linux 全虛擬化解決方案。它包含一個爲處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。
kvm還須要一個通過修改的QEMU軟件(qemu-kvm),做爲虛擬機上層控制和界面。
kvm能在不改變linux或windows鏡像的狀況下同時運行多個虛擬機,(ps:它的意思是多個虛擬機使用同一鏡像)併爲每個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)。
在主流的linux內核,如2.6.20以上的內核均包含了kvm核心。緩存
KVM官方地址: http://kvm.qumranet.com/kvmwiki
KVM的Changelog: http://kvm.qumranet.com/kvmwiki/ChangeLog, 能夠知道最新的版本是多少,作了那些改變。
KVM下載地址在sourceforge.net上: http://sourceforge.net/project/showfile ... _id=180599
KVM的Howto文檔: http://kvm.qumranet.com/kvmwiki/HOWTO
Kqemu: http://sourceforge.net/projects/kqemu/
Qemu: http://fabrice.bellard.free.fr/qemu/index.html 安全
**************************入門篇(基於ubuntu9.10)
基本知識:
qemu是獨立虛擬軟件,能獨立運行虛擬機(根本不須要kvm)。kqemu是該軟件的加速軟件。kvm並不須要qemu進行虛擬處理,只是須要它的上層管理界面進行虛擬機控制。虛擬機依舊是由kvm驅動。
因此,你們不要把概念弄錯了,盲目的安裝qemu和kqemu。bash
安裝準備:
查看你的硬是否支持虛擬化。
命令:
egrep '(vmx|svm)' /proc/cpuinfo
要有 vmx 或 svm 的標識才行。總的說來,AMD在虛擬化方面做得更好一些。
使用intel cpu的朋友還須要進入bios進行設置——由於個人是AMD,因此設置方法不敢亂說。服務器
安裝kvm:
打開新立得軟件庫,安裝kvm。系統會自動安裝相關的軟件包,包括qemu-kvm。什麼kvm-AMD 或 kvm-intel模式系統都自動處理好了。如今大多文章都是2008年寫的,已通過時了,惋惜好多人只知道複製,好多設置已經不須要了,有些跟官方的徹底衝突。網絡
建立虛擬鏡像:
命令(先cd 到你要保存鏡像的位置):
kvm-img create xxx.img 2G
因爲是要安裝xp精簡系統,2G已經足夠大了(安裝下來只要700M)。xxx 表明名字,想取什麼均可以。最好是連續的英文.默認格式爲raw,固然你能夠本身設定,好比(-f qcow2)加在 create 後面便可。(.img這個後綴是我隨便編的,kvm對後綴名沒有要求)
其它格式以下:
Supported formats: cow qcow vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd host_cdrom host_floppy host_device raw tftp ftps ftp https http
安裝虛擬機系統:
命令(先cd 到你要保存鏡像的位置):
kvm -hda xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512
說明幾點:/path/to/boot-media.iso 只是個舉例。具體爲你的系統盤鏡像位置。-m 爲虛擬機內存大小,單位是M默認(不寫這個選項)爲128M。固然,本身看着給吧。
建議若是虛擬的是xp系統,把頁面緩存給關了。
使用虛擬機最簡單的命令:
命令(先cd 到你要保存鏡像的位置):
kvm -m 1024 -hda xxx.img
因爲默認內存是128M,因此不得不指定一下,要不連-m 1024均可以省了。此時是沒有聲卡的,固然也可加上聲音選項。cpu默認是一顆,網絡默認啓動(爲net-內部端口映射)(能夠上網,可是主機識別不了,它也沒法鏈接主機)。
你可使用:kvm -m 1024 -hda /xxx/xxx/xxx.img
你也能夠把它做爲桌面「建立啓動器」的命令使用。每次輕輕一點就可以使用了。
****************************中級篇
命令:kvm --help
命令:kvm-img --help
看看具體的選項說明,須要什麼功能就在「最簡單命令」後面加就是了——特別簡單、功能又不少。用的滿意了,能夠作成「程序啓動器」。或者打開gedit,把命令保存進去,把文件名改成xxx.sh。再把屬性改成「可執行」,要用就點擊。好比:kvm -m 1024 -hda xxx.img -xxx xx -xxxx xxx -xxxxxx -xxx
如今分功能講解
1,文件共享
咱們但願虛擬機能和主機對一些文件夾進行共享操做。相似於vbox的共享文件夾。首先安裝 samba 。這是linux的共享功能軟件,支持windows系統的訪問。記住不是samba4。而後,新建一個文件夾,屬性。共享選項,把全部選項開啓。應用。接受系統的權限的更改。
好了,默認在虛擬機的網上鄰居,就能找見了。沒有?看看整個網絡(側邊任務)。
簡單吧,kvm早已升級了。根本不須要什麼配置。
關於權限:你是否有「沒法訪問,權限不夠……」的問題?主機沒法修改共享文件「你不是該文件的建立者」?
那是由於linux的權限至關的嚴格,必需要放權別人才能訪問、修改。
若是上級文件夾(不管哪一個)不讓讀取(好比: 其它;文件夾訪問 無),那麼就會出現沒法訪問的狀況。你要設置上級文件夾權限爲(其它;文件夾訪問 訪問文件)就能夠了,沒必要徹底放權。
由於安全考慮,個人用戶文件夾(其它;文件夾訪問 無)。因此一開始就出了權限問題。個人解決辦法是使用命令:sudo gnome-open /home/
在home中再新建一個文件夾,在屬性上,把建立者改成非root(改成常用的普通用戶),組羣:sambashare。權限全爲:建立和刪除。
經測試,外網雖然能顯示共享文件夾,卻沒法訪問——保證只有虛擬機能夠訪問。(我使用了ufw防火牆)
windows虛擬機在共享文件夾中建立的文件,主機是沒法更改的。要設置權限:個人電腦-打開-工具-文件夾選項-查看。把「使用簡單的文件共享」選項去掉。在文件(夾)屬性——安全:知道怎麼弄了吧。
linux的文件夾系統權限做的十分的好。好比你把其它非授權文件夾的連接複製到共享文件夾,依然沒法訪問。windows那種權限的隨意性,看見就想哭。
多說一點:個人電腦右鍵,能夠把共享文件夾設置爲網絡硬盤。至關於移動硬盤,能夠方便的安裝軟件,保存資料。
2。無敵模式(-snapshot)
-snapshot write to temporary files instead of disk image files
意思是不更改鏡像文件,啓動後的全部改動均不會往鏡像文件上寫。臨時文件存放在內存中了,具體是cached。
一樣的功能,在vbox要獨立安裝軟件。效率可想而知……
在命令後面空格加上:-snapshot 便可
3.高速網絡(-net nic,model=virtio -net user)
表 2. 虛擬網絡模塊的性能差別
虛擬網絡模塊 網絡傳輸速度(ssh) 客戶機操做系統 網絡狀態
rtl8029 200-300KB/s SLES10SP2 (kernel 2.6.16-60) 不穩定
e1000 4.8-5.4MB/s SLES10SP2 (kernel 2.6.16-60) 穩定
virtio 10.6-11.1MB/s SLES11 (kernel 2.6.27-19) 穩定
驅動下載地址:http://sourceforge.net/projects/kvm/files/
名字是 kvm-driver-disc 的 NETKVM-20081229.iso
具體可能有變化,使用命令:
kvm -m 1024 -hda xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso -enable-kvm -net nic,model=virtio -net user
其中:-cdrom是加載光驅的意思。網絡默認設置是 (-net nic -net user) 這裏因爲要指定virtio模塊因此要把命令加上。而後自動安裝驅動就好了。據說速度接近真實網卡——明顯是爲打造虛擬服務器配置的。
之後在啓動虛擬機命令後面加上-net nic,model=virtio -net user就能夠了。
4.高速虛擬
VirtIO paravirtual 是 Linux 虛擬機平臺上統一的虛擬 IO 接口驅動。一般主機爲了讓客戶機像在真實環境中同樣運行,須要爲客戶機建立各式各樣的虛擬設備,如磁盤,網卡,顯卡,時鐘,USB 等。這些虛擬設備大大下降了客戶機的性能。若是客戶機不關注這些硬件設備,就能夠用統一的虛擬設備代替他們,這樣能夠大大提升虛擬機的性能。這個統一的標準化接口在 Linux 上就是 VirtIO 。須要注意的是 VirtIO 運行在 kernel 2.6.24 以上的版本中才能發揮它的性能優點。另外 KVM 項目組也發佈了 Windows 平臺上的 VirtIO 驅動,這樣 windows 客戶機的網絡性能也能夠大大提升了。
下載地址:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
viostor是磁盤的虛擬驅動。
帶圖片的參考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation
命令:把-hda xxx.img 替換爲-drive file=/home/cat650/virt/xp.img,if=virtio,boot=on
意思是使用virtio磁盤系統,並做爲啓動盤(默認是boot=off,做爲附加的第二硬盤)。第一次使用的時候記得掛載viostorXXXX.img,來安裝驅動。
5.使用金手指「母鏡像」功能
要求,鏡像格式爲 qcow2 。做用:在「母鏡像」的基礎上,創建一個新的鏡像。虛擬機操做這個新鏡像時不會對「母鏡像」進行任何更改(只讀「母鏡像」),新鏡像只保存因爲操做產生的與「母鏡像」的數據差別(大小很小)。由此實現超越「快照」「還原點」的金手指功能(數量沒有限制)。
命令(先cd 到你要保存鏡像的位置):
kvm-img create -b xp.img -f qcow2 xp.test
其中xp.img是「母鏡像」(參數 -b xxx),xp.test是新鏡像——只能用 qcow2 格式。
新鏡像的使用:正常使用便可。
6.鏡像格式轉換,鏡像信息查詢
能轉換的格式有:raw,qcow2,qcow,cow,vmdk,cloop
若是你記不清你建立的鏡像是什麼格式的,可使用命令(先cd 到你要保存鏡像的位置):
kvm-img info xxx.img
關於格式的優缺點,請參看高級篇
轉換命令(先cd 到你要保存鏡像的位置):
kvm-img convert -f raw -O qcow2 xp.img xp.qco
注意:-O是字母o的大寫。
這條命令舉例的意思是:把名爲xp.img格式爲raw的鏡像轉換成新鏡像xp.qco格式爲qcow2
其它格式"vmdk"是 VMware 3 / 4 兼容鏡像格式。
*******************************深刻了解
1.kvm-img 命令
用法:kvm-img 後續命令 [命令選項]
後續命令以下:
check [-f fmt] filename
create [-F base_fmt] [-b base_image] [-f fmt] [-o options] filename [size]
commit [-f fmt] filename
convert [-c] [-f fmt] [-O output_fmt] [-o options] [-B output_base_image] filename [filename2 [...]] output_filename
info [-f fmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
部份內容詳解:
filename
鏡像的文件名(好比:xp.img cat.raw……後綴名隨便取,或者不取)
base_image
只讀的鏡像——有點像「母鏡像」。在「母鏡像」基礎上建立的鏡像只儲存對「母鏡像」的修改。
output_base_image
forces the output image to be created as a copy on write image of the specified base image; "output_base_image" should have the same content as the input's base image, however the path, image format,etc may differ
base_fmt
base_image(母鏡像) 的格式. 參考 fmt
fmt
指鏡像格式。建議大多數狀況讓系統自動選擇(不使用該選項)。
主要格式以下:
"raw"
Raw disk image format (默認).該格式精簡,易被多種虛擬機接受。
若是你的系統支持 holes (如 linux 的 ext2 ext3 ext4? windows 的 NTFS),那麼它將有效節約空間(好比你建立的磁盤是2G,虛擬系統只使用了800M,那麼它實際也只佔用800M的空間)。使用命令「kvm-img info 鏡像文件名」,將顯示實際使用的大小。linux用戶還可使用「ls -ls」命令直接查看。
"qcow2"
QEMU 鏡像格式,使用最多的格式. 建立的鏡像比較小(用多少就佔多少),對於系統文件不支持 holes 的(好比windows系統下使用qemu)頗有幫助。可進行AES加密,zlib基本壓縮,並支持多種VM的快照(snapshots)。
"qcow"
古老的 QEMU 鏡像格式. Left for compatibility.
"cow"
User Mode Linux Copy On Write image format. Used to be the only growable image format in QEMU. It is supported only for
compatibility with previous versions. It does not work on win32.不能運行win32.
"vmdk"
VMware 3 / 4 兼容鏡像格式
"cloop"
Linux Compressed Loop image, useful only to reuse directly compressed CD-ROM images present for example in the Knoppix CD-ROMs.
size
鏡像文件的大小比特. 通常單位使 "M" (megabyte, 1024k) 、 "G" (gigabyte, 1024M)、 T (terabyte, 1024G) 。 "b" is ignored.
output_filename
生成的鏡像文件名
output_fmt 生成的鏡像文件格式