1. 程式人生 > >KVM 與 vbox的區別

KVM 與 vbox的區別

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核心。

相關連線


基本知識

qemu 全稱Quick Emulator。是獨立虛擬軟體,能獨立執行虛擬機器(根本不需要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模式系統都自動處理好了。 注:過去的文章提到要設定核心模式,現在已經不需要了.


建立虛擬映象

命令(先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 -drive file=xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512

說明幾點:/path/to/boot-media.iso 只是個舉例。具體為你的系統盤映象位置。-m 為虛擬機器記憶體大小,單位是M,預設(不寫這個選項)為128M。當然,自己看著給吧。 建議如果虛擬的是xp系統,把頁面快取給關了。老版本的kvm使用-hda xxx.img引數指定映象,如無法使用-drive,請使用-hda引數,-hda引數不帶“file=”


使用虛擬機器最簡單的命令

命令(先cd 到你要儲存映象的位置):

kvm -m 1024 -drive file=xxx.img

由於預設記憶體是128M,所以不得不指定一下,要不連-m 1024都可以省了。此時是沒有音效卡的,當然也可加上聲音選項。cpu預設是一顆,網路預設啟動(為net-內部埠對映)(可以上網,但是主機識別不了,它也無法連線主機)。 你可以使用:

kvm -m 1024 -drive file=/xxx/xxx/xxx.img 

你也可以把它作為桌面“建立啟動器”的命令使用。每次輕輕一點就可使用了。


使用

命令:

kvm --help

命令:

kvm-img --help

看看具體的選項說明,需要什麼功能就在“最簡單命令”後面加就是了——特別簡單、功能又很多。用的滿意了,可以做成“程式啟動器”。或者開啟gedit,把命令儲存進去,把檔名改為xxx.sh。再把屬性改為“可執行”,要用就點選。 比如:kvm -m 1024 -hda xxx.img -xxx xx -xxxx xxx -xxxxxx -xxx

檔案共享

我們希望虛擬機器能和主機對一些資料夾進行共享操作。類似於vbox的共享資料夾。 首先安裝 samba 。這是linux的共享功能軟體,支援windows系統的訪問。記住不是samba4 然後,新建一個資料夾,屬性。共享選項,把所有選項開啟。應用。接受系統的許可權的更改。

好了,預設在虛擬機器的網路上的芳鄰,就能找見了。沒有?看看整個網路(側邊任務)。 簡單吧,kvm早已升級了。根本不需要什麼配置。

關於許可權:你是否有“無法訪問,許可權不夠……”的問題?主機無法修改共享檔案“你不是該檔案的建立者”? 那是因為linux的許可權相當的嚴格,必須要放權別人才能訪問、修改。 如果上級資料夾(無論哪個)不讓讀取(比如: 其它;資料夾訪問 無),那麼就會出現無法訪問的情況。你要設定上級資料夾許可權為(其它;資料夾訪問 訪問檔案)就可以了,不必完全放權。

因為安全考慮,我的使用者資料夾(其它;資料夾訪問 無)。所以一開始就出了許可權問題。我的解決辦法是使用命令: sudo gnome-open /home/ 在home中再新建一個資料夾,在屬性上,把建立者改為非root(改為經常使用的普通使用者),組群:sambashare。許可權全為:建立和刪除。

經測試,外網雖然能顯示共享資料夾,卻無法訪問——保證只有虛擬機器可以訪問。(我使用了ufw防火牆)

windows虛擬機器在共享資料夾中建立的檔案,主機是無法更改的。要設定許可權: 我的電腦-開啟-工具-資料夾選項-檢視 把“使用簡單的檔案共享”選項去掉。在檔案(夾)屬性——安全:知道怎麼弄了吧。

linux的資料夾系統許可權作的十分的好。比如你把其它非受權資料夾的連結複製到共享資料夾,依然無法訪問。windows那種許可權的隨意性,看見就想哭。

多說一點:我的電腦右鍵,可以把共享資料夾設定為網路硬碟。相當於行動硬碟,可以方便的安裝軟體,儲存資料。


*** 相對於samba的高速共享(限於檔案傳輸,主機架設FTP伺服器開啟上傳速度達samba十倍以上,用完即可停止FTP)

sudo apt-get install vsftpd


FTP根目錄許可權為755,開啟上傳,可以在FTP根目錄裡面新增一個所有人可寫的目錄即可 sudo gedit /etc/vsftpd.conf //編輯vsftpd.conf檔案,內容如下

listen=YES

listen_port=21

anonymous_enable=YES

no_anon_password=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

local_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

ftpd_banner=Welcome to myFTP Website

chroot_local_user=YES

chroot_list_file=/etc/vsftpd.chroot_list

secure_chroot_dir=/var/run/vsftpd

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

anon_world_readable_only=No

local_root=/yourFTPdir #這裡自定義你的FTP根目錄

anon_root=/yourFTP/dir #這裡自定義你的FTP根目錄

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

          • 配置到此,下面啟動FTP伺服器

sudo service vsftpd start

sudo /etc/init.d/vsftpd start

在虛擬機器中如XP:用資源管理器開啟 ftp://你的主機IP 即可上傳下載

[編輯]快照模式(-snapshot)

-snapshot       write to temporary files instead of disk image files

意思是不更改映象檔案,啟動後的所有改動均不會往映象檔案上寫。臨時檔案存放在記憶體中了,具體是cached。 同樣的功能,在vbox要獨立安裝軟體。效率可想而知…… 在命令後面空格加上:

-snapshot

即可

[編輯]高速網路(-net nic,model=virtio -net user)

虛擬網路模組的效能差異

虛擬網路模組     網路傳輸速度(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)    穩定

驅動下載地址:

名字是 kvm-driver-disc 的 NETKVM-20081229.iso

具體可能有變化,使用命令:

kvm -m 1024 -drive file=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就可以了。

[編輯]高速虛擬

VirtIO paravirtual 是 Linux 虛擬機器平臺上統一的虛擬 IO 介面驅動。通常主機為了讓客戶機像在真實環境中一樣執行,需要為客戶機建立各式各樣的虛擬裝置,如磁碟,網絡卡,顯示卡,時鐘,USB 等。這些虛擬裝置大大降低了客戶機的效能。如果客戶機不關注這些硬體裝置,就可以用統一的虛擬裝置代替他們,這樣可以大大提高虛擬機器的效能。這個統一的標準化介面在 Linux 上就是 VirtIO 。需要注意的是 VirtIO 執行在 kernel 2.6.24 以上的版本中才能發揮它的效能優勢。另外 KVM 專案組也釋出了 Windows 平臺上的 VirtIO 驅動,這樣 windows 客戶機的網路效能也可以大大提高了。

viostor是磁碟的虛擬驅動。

命令:把-hda xxx.img 替換為-drive file=/home/cat650/virt/xp.img,if=virtio,boot=on 意思是使用virtio磁碟系統,並作為啟動盤(預設是boot=off,作為附加的第二硬碟)。第一次使用的時候記得掛載viostorXXXX.img,來安裝驅動。

[編輯]使用“母映象”功能

要求,映象格式為 qcow2 。作用:在“母映象”的基礎上,建立一個新的映象。虛擬機器操作這個新映象時不會對“母映象”進行任何更改(只讀“母映象”),新映象只儲存由於操作產生的與“母映象”的資料差異(大小很小)。由此實現超越“快照”“還原點”(數量沒有限制)。 命令(先cd 到你要儲存映象的位置):

kvm-img create -f qcow2  -b xp.img xp.test  或者:kvm-img create -f qcow2 -o backing_file=xp.img xp.test

其中xp.img是“母映象”(引數 -b xxx),xp.test是新映象——只能用 qcow2 格式。 新映象的使用:正常使用即可。

[編輯]映象格式轉換,映象資訊查詢

能轉換的格式有: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 相容映象格式。

使用過程中更換光碟及ISO
按 ctrl+art+2 進入qemu-shell
info block //得到光碟機資訊 ide1-cd0
eject ide1-cd0 //彈出光碟機
chang ide1-cd0 /home/PATH/xxx.iso //更換光碟映象
按 ctrl+art+1 返回系統可看到更換後的光碟


快捷鍵:
Ctrl-Alt-f 全屏
Ctrl-Alt-n 切換虛擬終端'n'.標準的終端對映如下: * n=1 : 目標系統顯示 * n=2 : 臨視器 * n=3 : 串列埠
Ctrl-Alt 抓取滑鼠和鍵盤
在虛擬控制檯中,我們可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在螢幕中進行移動.
在模擬時,如果我們使用`-nographic'選項,我們可以使用Ctrl-a h來得到終端命令:
Ctrl-a h 列印幫助資訊
Ctrl-a x 退出模擬 Ctrl-a s 將磁碟資訊儲存入檔案(如果為-snapshot)
Ctrl-a b 發出中斷
Ctrl-a c 在控制檯與監視器進行切換
Ctrl-a Ctrl-a 傳送Ctrl-a

[編輯]使用SPICE(需要12.04以上版本)

  1. apt-get install xserver-xorg-video-qxl spice-client //可以使用spice的半虛擬化圖形主機驅動和連線工具

下載客機qxl驅動: http://spice-space.org/download.html //客機 qxl 視訊驅動,用於開啟spice的windows客機的視訊驅動,下載 spice-guest-tools-0.1.exe 這個東東

使用整合spice的KVM

1.啟動KVM虛擬機器 kvm -smp 4 -m 1516 -drive file=/yourpath/xp.img,cache=writeback,if=virtio -boot c -vga qxl --full-screen -net nic,model=virtio,macaddr=28-55-26-66-58-D6 -net user -localtime -soundhw ac97 -usb -usbdevice tablet -spice port=3636,disable-ticketing

2.使用spicec進行連線(spice的連線命令spicec) spice -h localhost -p 3636

PS: 進入後需要安裝 spice-guest-tools-0.1.exe 這個客機的 qxl 顯示卡驅動,你會發現原來看視訊刷屏的現象沒有了,甚至可以玩一把全屏的植物大戰殭屍(不開3D加速)。滑鼠移動也很到位。 現在可以用 shift+F11 來讓使用spice的KVM虛擬機器實現全屏的切換。

[編輯]與vbox的衝突(不用ose,用官方下載的4.X可獨立正常使用)

當你安裝了 virtual box 然後又安裝kvm,那麼當你再次開啟開virtual box 的時候,vmbox就會報錯。

1.檢視相關正在執行的mod

lsmod | grep kvm

2.停止模組執行

如果你的cpu是AMD:sudo rmmod kvm-amd

如果是Intel:sudo rmmod kvm

3.解除安裝模組

如果你的cpu是AMD:sudo modprobe -r kvm-amd

如果你的cpu是Intel:sudo modprobe -r kvm-intel

sudo modprobe -r kvm

4.完全解除安裝

sudo aptitude purge kvm qemu-kvm


sudo apt-get remove kvm qemu-kvm

相關推薦

KVM vbox區別

vbox 是由 qemu 改寫而成,包含大量 qemu 程式碼。 可以使用於"不支援"虛擬化技術的cpu。值得說的一點:vbox 在圖形方面比較好,能進行2D 3D加速。但cpu控制不理想(估計是因為圖形支援的緣故)。操作上有獨立的圖形介面,易於上手。kvm 是linux核心包含的東西,使用qemu作為上

HAProxyNginx區別

時間 請求 也會 維護 異常 會有 訪問 haproxy 失敗 1)HAProxy對於後端服務器一直在做健康檢測(就算請求沒過來的時候也會做健康檢查):後端機器故障發生在請求還沒到來的時候,haproxy會將這臺故障機切掉,但如果後端機器故障發生在請求到達期間,那麽前端訪問

axis2cxf區別

開源社區 -s 實現 部署 廣泛 asi -a ice 喜歡 1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承諾在下面的版本支持。 2.

C#中outref區別

erro 變量 但是 color 賦值 運行 網上 ann amp 一、ref(參考)與out區別 1、out(只出不進) 將方法中的參數傳遞出去,在方法中將該參數傳遞出去之前需要在該方法起始賦初值;在方法外傳遞的該參數可以不用賦值; 簡單理解就是:將一個東西拋出去之前必須

get( )getline( )區別

clas 輸入緩沖 ont blog 函數 std etl con span get與getline區別不是很大,但一個明顯的區別是get遇到 ‘\n ‘字符後便返回,這是 ‘\n ‘還在緩沖區中,所以下次讀出來的將是 ‘\n ‘,而getline遇到 ‘\n ‘也返

dynamocassandra區別

ffi out thrown ive for enc coord towards ren 雖說cassandra是dynamo的開源版本,但兩者還是有很大區別的。 coordinator的選取: 在dynamo論文中,一般是preference list中N個副本的第一個

xml html 區別

sim 顯示數據 類型 打開 替代品 title extent 知識 col 一、什麽是HTML 帶著疑問走到這裏,一句話:HTML(HyperTextMark-upLanguage)即超文本標記語言,是WWW的描述語言。 如果想了解更多請看以下博客:

Mysql中key 、primary key 、unique key index區別

條件 那是 database 表空間 可用 where 進行 utf8 擁有 索引被用來快速找出在一個列上用一特定值的行。沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。 表越大,花費時間越多。如果表對於查詢的列有一個索引,MySQL能快

Hibernate mybatis 區別

精通 targe man 做的 select read 持久層 定義 順序 JAVA面試中問及HIBERNATE與 MYBATIS的對比,在這裏做一下總結 我是一名java開發人員,hibernate以及mybatis都有過學習,在java面試中也被提及問道過,在項

Cookiesession區別

瀏覽器 cookie 通信設備 session與Cookie的區別此文章 來自烏龜運維wuguiyunwei.comQQ群:602183872主要區別:Cookie,也稱為HTTP cookie,Web cookie或瀏覽器cookie,是從網站發送到服務器並存儲在用戶的Web瀏覽器中的一小部分數

AppiumRobotium區別

觸摸 用戶 不能 語言設置 分開 clas 輸入文字 例子 mat Appium是基於UIAutomator框架實現的。Appium測試進程與目標應用進程是分開的,所以Appium不能直接訪問目標應用的各種element屬性進行copy&paste,而只能模擬觸發

STDIN_FILENOstdin區別(轉)

strong 出現 stdin cti efi 兩個 正常 span col 標準輸入 (stdin) 標準輸入是指數據(通常是文件)走向程序。程序要求數據傳輸使用讀的運算。並非所有程序都要求輸入。如dir或ls程序(顯示一個目錄中的文件名)運行時不用任何輸入。 除非重導

cvCvtColorcvtColor區別

blank 參數 接口類 類型 ima 灰度 another out ray 用到了rgb轉灰度圖功能,查到兩個函數,發現名字很像,功能也一樣,但是參數類型不一樣。 記錄一下。 可以看聲明,cvCvtColor是c語言風格接口。 /* Converts input arr

execxargs區別

必須 合成 作文 back 方便 否則 dir name color 沒有哪個更好哪個更不好 復習一下 exec是對每個找到的文件執行一次命令,除非這單個的文件名超過了幾k,否則不會出現命令行超長出報錯的問題。而xargs是把所有找到的文件名一股腦的轉給命令。當文件

jQuery:find()children()區別

tar jquery col 1.2 ref net spa con arc 一、find() 1.1 說明 find()方法返回被選元素的後代元素,一路向下直到最後一個後代。 1.2 示例 <div> <p>

Oracle 的SID Service_Name 區別

實例 其它 部門 系統 oba 小明 如果 我們 的人 可以簡單的這樣理解:一個公司比喻成一臺服務器,數據庫是這個公司中的一個部門。1.SID:一個數據庫可以有多個實例(如RAC),SID是用來標識這個數據庫內部每個實例的名字,  就好像一個部門裏,每個人都有一個自己的名字

NSURLSessionNSURLConnection區別

pan 說明 內存 handler 代碼 停止 bsp append 推薦 說明:這篇文章是在百度上搜索“NSURLSession與NSURLConnection區別”查找到的資料,僅供自己學習理解,不屬於原創,本來想註明來源,但是發現很多內容相同的文章,也不知道誰才是真正

js == === 的區別[轉]

tro ber key 進行 nbsp 如果 不同 num false we文章轉自http://blog.sina.com.cn/s/blog_4b32835b01014iv9.html 1、對於string,number等基礎類型,==和===是有區別的 1)不同類型間

跨線程調用控件 Invoke BeginInvoke 區別

static pan textbox string new log action add this public delegate void Add_B(object x); List&l

jQuery中position()offset()區別

元素 page mini alert span 文檔 back www. class jQuery中position()與offset()區別 position()獲取相對於它最近的具有相對位置(position:relative或position:absolute)