A summary of VirtualBox, VMware, XEN 虛擬機的比較

虛擬化是近來很熱門的一個 IT 話題. 虛擬化有以下好處
  1. 節省能源
  2. 減低硬件佔用空間
  3. 減低硬件成本 reduce hardware cost
  4. 方便硬件管理 hardware management
  5. 方便系統備份
  6. 有助伺服器轉移 Server migration
  7. 資源管理 resource management

一般來說, 一套硬件伺服器只發揮了 5-25% 的能力, 其他的都在待機模式. Server idle time > 25%, 電力都花在待機與冷卻系統之上. 這就成了一個惡性循環. 畢竟待機跟冷卻都要花費的. 即是說, 如果使用了虛擬技術, 硬件成本有機會減少至 ¼. 虛擬化更有助資源管理, 比如說原本 一塊 1GB的ram 卡, 只可以給一台電腦使用. 但一台電腦只有 25 % 時間需要 1GB 的 ram, 虛擬化就能夠將那 1 GB ram 其餘 75% 的時間分給不同的系統使用. 虛擬化後, 服務器實體為一個電腦檔案. 就像我們日常打開的 file. 以下是虛擬機 VirtualBox 的虛擬硬碟 screenshot-vdi-file-browser3 因此, 我們可以隨意調動這些硬碟作伺服器轉移或備份. 這篇文章, 我將會以 VirtualBox, Vmware, XEN 作個比較

VirtualBox

Sun xVM VirtualBox 是由德國InnoTek(已被Sun併購) 這家軟體公司出品的軟體,它提供使用者在32或64位元的 Windows、Solaris 及 Linux 作業系統上虛擬另外的機器執行其它x86的作業系統,使用者可以在 VirtualBox 上安裝並且執行 Solaris、Windows、Linux、OS/2 Warp、OpenBSD 及 FreeBSD 等系統作為客戶機操作系統[1]。在2007年1月,InnoTek以GNU通用公共许可证 (GPL)釋出VirtualBox,並提供二進位版本及開放源碼版本的程式碼。 和同性質的VMware及Virtual PC比較下,VirtualBox獨到之處包括Remote Desktop Protocol(RDP)、iSCSI及USB的支援,VirtualBox在客戶機操作系統上已可以支援USB 2.0的硬體裝置。 http://zh.wikipedia.org/wiki/VirtualBox

安裝:

virtualbox 的下載包只有約 16-22MB, 無論在 LINUX or windows 只需要下載檔案後 double click 就可以安裝. http://www.virtualbox.org/wiki/Downloads 請留意 virtualbox 有 puel http://www.virtualbox.org/wiki/VirtualBox_PUEL 跟 gpl http://www.virtualbox.org/wiki/GPL 兩種發行方式, puel 下的 virtualbox 才有usb over rdp 這功能.

設計:

VirtualBox 屬於虛擬桌面, 沒有 server-client 的設計, 在伺服器管理上, 沒有 Vmware 和 xen 的方便. 但反應時間快, 適合家庭用戶. 用來虛擬 windows 就最好不過. VirtualBox 的賣點在 rdp – Remote desktop protocolusb over rdp , 明顯的就是針對 windows 的用戶. VirtualBox包含一般虛擬機的快照功能, 用家可以把現時的電腦設定存下來, 日後把設定回覆到之前的狀態.

screenshot-virtualbox-ose-state

VirtualBox 的虛擬硬件不能在系統運行中加減開關. 這方面 vmware 就比較優勝.

儲存:

VirtualBox 使用 virtual disk image ( .vdi ) 作虛擬硬碟, 十分安全. 因為所有 vdi 都有 session id 鎖著, 不能在虛擬機關閉的情況下打開虛擬硬碟內的資料. 連複製硬碟時都需要用特定的程式來做. 但安全從來就是雙刃刀. 會造成很多的不便. 例如檔案備份.

網絡:

VirtualBox 的虛擬網絡使用 NAT – network address translation為主, 用家需要自行設定 NAT 以外的連接方法. 虛擬網絡分為 NAT, host interface network ( 網橋 ), internal network.

  1. screenshot-winxp-network-settings

自行設定網絡時比較複雜. 這裹就示範設定 bridge network – host interface network 的在 ubuntu linux 上的做法

  1. 先安裝 bridge-utils & uml-utilities sudo apt-get install bridge-utils uml-utilities
  2. 在 /etc/rc.local 中輸入以下設定 (把 keithyau 轉成你的使用者名稱)
    1. HOST_IF=”eth0″
    2. sudo modprobe tun
    3. # First disable running network (common as eth0)
    4. sudo ifconfig $HOST_IF down
    5. sudo /etc/init.d/networking stop
    6. # Create a tap device with permission for the user running vbox
    7. sudo tunctl -t tap0 -u keithyau
    8. sudo chmod 666 /dev/net/tun
    9. # 將ethx和tapx網卡界面設為混雜模式(Promiscuous)
    10. sudo ifconfig $HOST_IF 0.0.0.0 promisc
    11. # 建立新的橋接界面(bridge),並把 eth0, tap0加入bridge
    12. sudo brctl addbr br0
    13. sudo brctl addif br0 $HOST_IF
    14. # ifconfig br0 0.0.0.0 up 則Host OS 和Guest OS各自可以不同的撥接帳號來連網 )
    15. sudo dhclient br0
    16. sudo brctl addif br0 tap0
    17. sudo ifconfig tap0 up
    18. exit 0
  3. 在 virtualbox 中設定如下screenshot-winxp-hostint

  4. 重新開動虛擬機

支援:

現時 virtualbox 的支援不算很充足, 除了 windows 和 linux 的虛擬化外, 虛擬其他系統都錯漏百出. 特別在 bsd 系統. 在 windows 亦經常出現不穩定情況. 因此, 還有很多改進空間.

VMware:

相信vmware 是最多用家的虛擬機. Vmware 其實是一間軟件公司的名稱. 發行以下產品 VMware工作站

VMware Fusion
VMware Player
VMware伺服器
VMware架構
VMware ACE
VMware Lab Manager
VMware Converter
Vmware Server

其中最普及的相信是以 EULA 免費發行的 vmware server, 在免費軟件中為最容易使用的虛擬機. 新手多數會以 vmware 入門, 因為 vmware 的虛擬硬碟 ( vmdk ) 可以轉為其他硬碟如 img, vdi. 令使用者不需要重新安裝系統. 安裝 Vmware 的安裝包較大, 約有 150 MB. 在 windows 下載後 doule click 就可以安裝. 在 Linux 安裝的話, 不同的 Linux 安裝的方法有些少不同. 都是一些程式錯誤問題. 簡單地就一下在 Linux 安裝的做法:

  1. 下載檔案包, 後解壓 tar -zxvf <你的檔名>
  2. cd <你的檔名>
  3. vmware 可能需要核心編釋, 所以需要安裝 kernel header files
    1. sudo apt-get install linux-headers-‘uname -r’
    2. sudo apt-get install build-essential
  4. sudo ./vmware-install.pl
  5. 跟vmware指示去做

設計

Vmware server 屬於 server-client 設計, 有平台 vmware-server-console 讓使用者直接控制虛擬系統. 反應時間較 VirtualBox 慢. 但穩定性比較好. 除 vmware-server-console, 使用者可以選用比較輕便的 vmware player 來打開虛擬機.

硬碟

Vmware server 的虛擬硬碟叫 vmdk, 沒有 virtualbox ( .vdi ) 的保安程度與 session id. 用起來比較方便. 除使用 vmdk 外, Vmware server可以直接使用實體硬碟, 增加伺服器速度. 安裝系統的時侯, 可以選擇用多個檔案來儲存一個 virtual hard disk. 這樣有助虛擬機的運行速度.

網絡

Vmware 的虛擬網絡有 bridge, private 和 NAT. 在 vmware 使用 bridge 很方便, 只需要在以下介面做少少更改就可以了. 用 bridge 的時侯, 如果需要 host 和 虛擬機一同上網的話, 需要一個路由器支持. 否則, 因為 isp 只會供應一個 ip 的關係, 只有一個系統可以上網.

screenshot-virtual-machine-settings

支援

相對上, vmware 的錯誤比較少. 可能是使用群較大的關係. vmware 公司的vCenter Converter http://www.vmware.com/products/converter/ 能夠把安裝在實體硬件上的 windows虛擬化.

XEN:

安裝 設定XEN 伺服器在三者之中最為複習. 而且必需安裝在unix 系統之上. 常用的系統 ( host ) 為 Linux, FreeBSD. 以 ubuntu linux 為例示範一下

  1. sudo apt-get install ubuntu-xen-server
  2. sudo apt-get remove network-manager
  3. sudo apt-get install vncviewer
  4. sudo vi /etc/xen/xend-config.sxp //一般程況不用更動
    1. (network-script network-bridge) // 自動打開網橋
    2. (vif-script vif-bridge) //自動打開虛擬網卡
  5. 以xen-tool 製作Debian linux 虛擬系統 ( para-virtualization )
    1. sudo xen-create-image –hostname=系統名稱 –size=虛擬硬碟大小 –swap=128Mb –ide \
    2. –ip=地址 –netmask=255.255.255.0 –gateway=閘道 –force \
    3. –dir=/home/xen –memory=內存分配 –arch=i386 –kernel=/boot/vmlinuz-2.6.24-19-xen \
    4. –initrd=/boot/initrd.img-2.6.24-19-xen –install-method=debootstrap –dist=etch \
    5. –mirror=http://ftp.tw.debian.org/debian/ –passwd
  6. /boot/initrd.img-2.6.24-19 跟xen 的版本不同而改變
  7. 製作 windows 虛擬系統 ( HVM-virtualization )
    1. sudo dd if=/dev/zero of=硬碟地址(以.img 為檔案類型) bs=1M count=1524
    2. 1 count = 1 bs, 以上來說就是1.5 GB
    3. 製作以下設定檔 (/etc/xen/虛擬系統名稱.cfg)
      1. kernel = ‘/usr/lib/xen/boot/hvmloader’
      2. builder = ‘hvm’
      3. memory = ‘256’ # 內存分配
      4. device_model=’/usr/lib/xen/bin/qemu-dm’
      5. # Disks
      6. disk = [ ‘tap:aio:/home/xen/domains/winxp/disk.img,ioemu:hda,w’, #虛擬硬碟地址
      7. ‘phy:/dev/scd0,hdc:cdrom,r’ ] #使用實體光碟機
      8. cdrom=’/dev/scd0′ #實體光碟機名稱
      9. # Hostname
      10. name = ‘winxp’ #虛擬系統名稱
      11. # Networking
      12. vif = [‘type=ioemu, bridge=xenbr0’]
      13. # Behaviour
      14. boot=’d’
      15. vnc=1
      16. vncconsole=1
      17. ne2000=0
      18. sdl=0
      19. serial=’pty’
      20. usbdevice=’tablet’
    4. sudo xm create /etc/xen/虛擬系統名稱.cfg
    5. sudo vncviewer localhost
    6. 正常地安裝 windows

設計

XEN 本身不算是一個虛擬機. 其實 UNIX / LINUX 本身已經有虛擬的能力 ( jails / chroot / zone ). XEN 的工作就是管理監察這些已有的虛擬能力. 跟我們一般使用的 LINUX 內核不同, 虛擬化需要特有的 xen-kernel. XEN 分別有兩種虛擬技術. Para-virtualization 半虛擬化.半虛擬化在 xen vm monitor 之下, 會輪流共享硬體,因此,每個虛擬系統都是直接與host 內核連接. 造到極佳的效能. 速度上, 可以說跟 host 沒有大分別.

hypervisorcomparison-xen(本圖轉載自http://it20.info/blogs/main/archive/2007/06/17/25.aspx )

xen hvm 就是說 full-virtualization 全虛擬化. 全虛擬化會製作一些虛擬硬體,分給不同的虛擬系統. 因此, 可支援的系統較多, 但效能較低.

vmware Vmware 上的 full virtualization

硬碟

Xen 使用 .img 作虛擬硬碟. 可以直接從外部更改虛擬硬碟內容.方法為

  1. sudo mount -o loop 你的img檔 /mnt

  2. cd /mnt

  3. ls

img 檔就像我們常用的 cd 檔. 在三種虛擬硬碟中, 安全性為最低的一種. 因為任何人得到這個虛擬硬碟就可以知道內容. 但可以直接跟外部溝通, 所以最大彈性.

網絡

XEN 的網絡安裝主要為 bridge, 除最簡單的bridge 方法 ( 可參考 virtualbox 的bridge 方法 ), 用家需要用linux networking 的知識來製作其他功能. 如source routing, nat, one-to-one nat, iptables.

支援

XEN不像vmware / virtualbox, 沒有大財團的支持, 靠的都是 community support, 即是說用Google 找答案吧. 在技術轉移方面,以xen 作基礎製作 xen_server 的公司critix, 支援客戶的 vmware 虛擬系統轉換成xen 的系統.

VirtualBox, Vmware, XEN 在各方面的對照表


5 = highest VirtualBox Vmware XEN HVM XEN para-virtualization
反應時間
User Response time
4 3 2 5
虛擬硬碟 .vdi .vmdk .img .img
虛擬網絡 NAT, bridge (self-define) NAT, bridge (pre-define) bridge (self-define) bridge (self-define)
穩定性 stability 2 4 3 5
虛擬硬件支援 4 5 3 2
錯誤最少 2 4 3 3
程式大小 2 5 4 4
安全性 4 3 2 2
技術支援 4 5 3 3
效能 4 3 3 5

有任何虛擬化上的討論, 歡迎留言/ 交流一下 ! msn: funnykeith@msn.com

https://keithyau.wordpress.com

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.