Linux下kvm和xen的區別

 

 一、KVM簡介


      KVM是一個全虛擬化的解決方案。可以在x86架構的計算機上實現虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

      Xen與KVM的比較

     Xen是Linux下的一個虛擬化解決方案,但由於被Citrix收購後,變成了和紅帽企業版一樣了,賣服務收取費用,Redhat從rhel6.0開始已經從內核中把XEN踢出去了,全心投入開發免費的KVM,雖然市場上老用戶還在用Xen,但相信kvm會逐步佔領大面積的市場,必竟有redhat做爲強大支持源。

 

     Xen的實現方法是運行支持Xen功能的kernel,這個kernel是工作在Xen的控制之下,叫做Domain0,使用這個kernel啓動機器後,你可以在這個機器上使用qemu軟件,虛擬出多個系統。Xen的缺點是如果你需要更新Xen的版本,你需要重新編譯整個內核,而且,稍有設置不慎,系統就無法啓動。

      相比較,KVM就簡化的多了。它不需要重新編譯內核,也不需要對當前kernel做任何修改,它只是幾個可以動態加載的.ko模塊。它結構更加精簡、代碼量更小。所以,出錯的可能性更小。並且在某些方面,性能比Xen更勝一籌。

  二、KVM的使用

  現在以Turbolinux 11版本爲基礎,介紹KVM的使用方法。

  在安裝之前,你需要先確認,你的CPU是否支持虛擬化技術,執行:
 
  # egrep '^flags.*(vmx|svm)' /proc/cpuinfo


  如果有輸出返回,則表示你的CPU支持虛擬化技術。

  1.KVM的安裝

  從官方網站下載KVM源碼包:http://kvm.qumranet.com
  我們使用KVM-33版本

  # tar zxf kvm-33.tar.gz
  # cd kvm-33
  # ./configure --prefix=/usr/local/kvm-33
  # make
  # make install

  make install後,kvm的模塊會安裝到/lib/modules/$KernelVersion/extra/目錄下。其他相關文件會安裝到/usr/local/kvm-33/目錄下。

  將kvm相關目錄連接到系統目錄中

  # ln -s /usr/local/kvm-33/bin/* /usr/bin/
  # ln -s /usr/local/kvm-33/lib/* /usr/lib/
  (若爲x86_64系統,則執行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)
  # ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/
  # ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/
  # ln -s /usr/local/kvm-33/share/qemu /usr/share/

  2.KVM的使用

  a.你需要先建立一個映像文件作爲虛擬系統的硬盤

  # mkdir /p_w_picpaths
  # cd /p_w_picpaths
  # /usr/bin/qemu-img -f qcow gtes11.img 20G

  b.創建網絡配置腳本

  # echo ’/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0’ > /etc/qemu-ifup

  c.加載KVM模塊

  Intel CPU使用:
  # modprobe kvm-intel
  AMD CPU使用:
  # modprobe kvm-amd

  d.安裝虛擬系統

  # /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /p_w_picpaths/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-\
disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,\
script=/etc/qemu-ifup -vnc localhost:1 -boot d

  在另一個終端執行:

  # vncviewer localhost:1

  參數分析:

  我們爲虛擬系統分配512MB內存。使用gtes11.img作爲它的第一塊硬盤,使用Turbolinux10.5的disc1作爲它的光盤。
並從光盤引導。它有一塊rtl8139的網卡,MAC地址爲:00:00:00:00:99:01,並把這個網卡與主機的tap0接口連接。
tap0接口使用/etc/qemu-ifup腳本進行初始化。虛擬系統的輸出作爲一個vnc服務器,綁定在主機的localhost:1上。

  注:

  1.若爲x86_64系統,則使用/usr/bin/qemu-system-x86_64代替qemu-i386

  2.在64位系統上,可以安裝32位和64位的虛擬系統。但在32位系統上,只能安裝32位的虛擬系統。

  qemu參數介紹:

  -da 映像文件:使用映像文件作爲虛擬系統的第一塊硬盤。同樣還可以使用hdb、hdc、hdd指定第2、3、4塊硬盤。
  -drom 光盤映像文件:使用光盤映像文件作爲虛擬系統的光盤。
  -oot [a|c|d|n]:設置虛擬系統的引導順序。a爲軟驅、c爲硬盤、d爲光驅、n爲網絡。
  - 內存大小:設置虛擬系統使用的內存大小,單位爲MB。
  - 語言:設置虛擬系統鍵盤類型。
  -et nic[,vlan=n][,macaddr=addr][,model=type]
                建立一個虛擬網卡,並把它連接到VLAN的n端口上。
  -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

  把主機的TAP網絡接口連接到VLAN的n端口上,並使用script指定的腳本進行初始化。

轉自:
http://blog.chinaunix.net/uid-12306154-id-2239335.html 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章