[转]KVM 虚拟机详细说明
(部分有點過時)
http://blog.bodhizazen.net/linux/kvm_network_scripts/
2010年最新,親自測試
首先說一點:碰到問題首先查找linux軟件庫(deb)中是否有能代替的軟件;不行使用wine運行windows軟件;再不行,才使用kvm等虛擬機。
因為它們的效率是遞減的。還有一點,虛擬機最大的軟肋是:圖形、影音比較差。如果你想靠它運行電影軟件、3D軟件,那你就要有一顆堅強的心。
vbox 與 kvm 的區別:
vbox 是由 qemu 改寫而成,包含大量 qemu 代碼。可以使用于 不支持 虛擬化的cpu。值得說的一點:vbox 在圖形方面比較好,能進行2D 3D加速。cpu控制不理想(估計是因為圖形支持的緣故)。操作上有獨立的圖形界面,易于上手。
kvm 是linux內核包含的東西,使用qemu作為上層管理(命令行)。cpu 必須支持虛擬化。性能,作為服務器很好,可是圖形能力十分的差。即使放電影,圖像也是像刷油漆一樣,一層一層的。cpu使用率控制很好。 控制上比較簡潔,功能比較豐富:比如使用 “無敵功能”所有更改指向內存,你的鏡像永遠保持干凈。 “母鏡像”功能讓你擁有n個獨立快照點。 還有很多參數。另外,kvm作為內核級的虛擬機,剛開始發展關注的公司比較多——但是還沒有達到商業應用的水平。
總體而言:在支持 虛擬化的情況下,vbox 和 kvm 的性能差不多,主要是面向對象不同:kvm使用于服務器,vbox使用于桌面應用。
***********************************************
關于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。
安裝準備:
查看你的硬是否支持虛擬化。
命令:
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
生成的鏡像文件格式
總結
以上是生活随笔為你收集整理的[转]KVM 虚拟机详细说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac iTunes启动失败,声称iTu
- 下一篇: 我在产品的日子