虛擬化 - Virtualization

    版本為 21:46, 5 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    eicay502.gif

    隨這幾年電腦硬體快速發展,INTEL與AMD 又推出多核心技術,隨之虛擬化技術變成非常重要與方便的應用.

    傳統虛擬化軟體台為 Hypervisor Type 2Virtual PC,VMware GSX Server .VMware workstation ,QMEU.缺點則是效能不佳.並且資源分配性不好.

     

     

     

    eicay501.gif

    OSSLab 主要討論的虛擬化技術以Hypervisor Type 1 (底層虛擬化技術)為主,所謂的Hypervisor Type 1 ,是指虛擬化主控平台與作業系統結合為一的架構.好處是能夠100%控制硬體並且獲得最佳效能.儘管Hypervisor Type 1 效能佳.但是下面應用用途無法應用.

    1. 沒有當地終端顯示,所以無法使用需要當地終端 單機多OS用途.(比如說玩遊戲) 
       
       
    2. 大部份Hypervisor Type 1 對Local 端 USB裝置 音效卡 硬體支援不佳



    Hypervisor Type 1 又分為全虛擬化跟半虛擬化 以下解說



    Ring

    在還未解說 CPU 虛擬化之前先解釋一個東西就是 Ring(環), 在 Intel CPU 的系統運行下可以區分成 Ring 0,Ring 1,Ring 2 和 Ring 3.Ring 0 擁有最高的權限,通常是由系統核心才會有 Ring0 的權限,Ring 0 可以直接和硬體溝通讀取 IO,CPU,Memory 與周邊裝置.其次是 Ring 1,以此類推.一般 Kernel,driver 會存在 Ring 0.一般 AP 存在 Ring 3,一般的作業系統也只運用到 Ring 0 和 Ring3.採取這種方式的優點是一般運行的程式沒有辦法直接與硬體溝通,所以不會有像 Window 3.1 時一樣的狀況發生,一個程式就能把整個系統摧毀(Crash)掉
     




    VMM(Virtual Machine Monitor)
    一個機台要能同時執行很多作業系統時不能像是傳統的方式讓 OS 的核心存放在 Ring0.取而代之的就是 VMM((Virtual Machine Monitor) 也可以稱作 Hybervisor.也為了虛擬化的資源分配管理,所以必須有一個東西來管理所有虛擬化的作業系統(Guest OS).也就是所謂的 VMM(Virtual Machine Monitor).

    此時的 VMM 主要工作為
    ‧ 模擬出一個完整的硬體環境給每一個 Guest OS
    ‧ 分配硬體支援給每一個 Guest OS
    ‧ 每一個 Guest OS 都是獨立出來不會被彼此影響的
     

    1 - Full Virtualization 使用的是 - Binary Translation
    也正因為 Intel CPU 架構的關係,不少的 CPU 指令必須執行在 Ring 0 底下,而傳統的作業系統核心也必須放在 Ring 0 讓他們能直接存取硬體.所以一開始的虛擬化幾乎不能在 X86的系統上使用.但是 VMware 使用了一種方式讓虛擬化能夠執行在 X86 的系統上.他們使用一種稱為 Binary Translation 加上 direct execution 的方式,所謂的 Binary translation 就是將原本要執行不能虛擬化的指令(nonvirtualizable instructions)VMM 會轉換成另一種語法,然後再交由 VMM 去執行.就像是 Guest OS 要將資料寫入硬碟中,但是其實 Guest OS 的硬碟可能只是硬碟中的一塊磁碟區塊(partition)或是檔案(Loop file),所以 VMM 會把他的請求轉換成另一種方式再來向硬體提出要求.而不再是用原本的指令去執行了.至於 direct execution 是一般性的指令不需要在 Ring0 才能執行就直接可以向硬體提出請求.

    這樣的缺點是會造成效率的低落,但好處是虛擬出來的作業系統(Guest OS)並不知道有 VMM 的存在,他會以為自己擁有整個機器,而且虛擬出來的作業系統(Guest OS)也不需要修改核心去配合 VMM.加上 VMM 會去虛擬整個機器包括了虛擬化的 BIOS,devices 和 memory的管理,.而且每一個虛擬出來的作業系統(Guest OS)都是獨立而且安全性高不會受到其他虛擬出來的作業系統(Guest OS)影響.

    目前採用這種方式的有 VMware’s 全系列 virtualization products Microsoft Virtual Server.

    2 - 另一種需要修改作業系統的核心才能支援 - Paravirtualization
    剛才有說明為什麼在一般 x86 系統下沒有辦法做虛擬化,大部分的原因是不能虛擬化的指令(nonvirtualizable instructions)必須直接在 Ring 0 執行.但是 Paravirtualization 使用了另一種方式,修改虛擬化作業系統(Guest OS)的核心,讓虛擬的作業系統(Guest OS)可以直接將不能虛擬化的指令(nonvirtualizable instructions)自動轉換成 VMM 可以執行的指令(hypercall),再由 VMM 去向硬體提出請求.所以像是(Windows 2000/XP)不能去修改它的核心(Microsoft 也不願意讓別人來修改它的核心),所以無緣使用 Paravirtualization.而所謂的 hypercall 就像是 OS kernel 的 syscall 只不過 hypercall 是針對 hypvisor(VMM)的.

    目前採用這種方式的有   Xen,KVM,Hyper V

    3 - Paravirtualization + Intel VT 或者 AMD-V
    在沒有 VT 的時代 VMM 是直接載入在 Ring 0 裡面,Dom0 的 kernel 則是被放在 Ring1(Dom0 是第一個在 Xen 底下運行的虛擬機器).後來產生出的 DomU 也是存放在 Ring1(需為 Para-Virtualized,沒有 VT 的支援 Xen 不支援 full-Virtualized).不過一般的 AP 還是運行在 Ring 3.也正因為如此 Para-Mode 的 Guest OS 必須知道 VMM 的存在.此時是不支援 Full-Mode 的.後來有了 VT 這一項技術.VMM 和Guest OS(Para/Full-Mode)都可以直接執行在 Ring0 運行.不過 VMM 是存在比 Guest OS 還要低的一層.

    Root Mode Privilege Levels.不能虛擬化的指令(nonvirtualizable instructions)會自動被 hypervisor 截取不需要再經過 binary translation 或 paravirtualization 的模式轉換.

    (以上引用自http://benjr.tw/?q=node/81 thx有做部份修改)

     

    OSSLab 新架構二號機將各家Hypervisor Type 1  軟體安裝於FC Storage 中的不同lun.並且以遠端控制卡去做設定選定那套Hypervisor Type 1環境,可全測試功能與效能.至於VM檔案也置於FC SAN Storage.

    關於 Xen vs. VMware 兩系統比較的文章
    還在為要使用 Xen 或 VMware 傷腦筋嗎?作決定前不妨先看看人家對這個的一些看法。

    (thx 曰:vmware 的測試報告有待懷疑,基本上在PV環境下 ,Guest os 為 Linux 的話 VMware Infrastructure 3應該是低落於 Xen 20-30% 不過UI 管理部份,Xen確實略輸點)

    VMware


    官方網站:http://www.vmware.com/products/vi/
    目前已到U4
     

    VMware
    我一直很喜歡用 XenServer 但是它的缺點是一定要使用含有 VT 的 CPU 要不然很多東西沒有辦法使用,因為礙於硬體的需求所以在家裡一直都沒辦法使用,在這一波的金融風暴能下能省就省吧.最近逛到 Vmware 的官方網站看到又有一個可以 Free Download 的東西,Vmware 真的是佛心來的.這 ESXi 相當於 ESX 的精簡版,他並不需要 VT 等的技術就能讓你 Linux , Windows 一手抓.心動了吧!!到下面的網站就可以下載了.
    http://www.vmware.com/download/esxi/
    當然免費的不能跟要錢的相比,你可以參考官方的網站列出這兩個產品(ESX 和 ESXi)的不同
    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd...

    VMware 也是最早應用 virtualization 的廠商,所以他的產品的成熟度相對的比較好.但是價錢相對的高.你可以參考它的官方網站 http://www.vmware.com/ 就可以發現它的產品相當齊全,不過最主要的 VMWare 的產品分成兩類,

    1.本身就是一個作業系統,需要切割 partitaion 安裝在邏輯的硬碟上.如 VMware ESX(i) Server.
    vmware_esx.png

    2. 另一種則是要安裝在 windows / Linux / MAC 作業系統上,如 VMWare Server / workstation /Fusion.
    vmware_server.png

    至於效率當然是第一種(VMWare ESX Server)會比第二種來(VMWare Server/ workstation)的好.其中的 VMWare Server 和 VMware ESXi 版本是可以免費下載來使用的.
    esxi02.png

    VMware Server
    1.下載 VMware Server
    VMware 提供了一個免費的版本 VMware Server 功能比較少不過拿來用用也夠了
    2.安裝 VMware Server Guest OS
    3.VMware Guest OS 時間延遲的其他解決方案
    最近常常遇到一個問題就是,Vmware 下的 OS 時間常常會跑掉,通常都是延遲.所以設定了 NTP - Network Time Protocol .
    4.Vmware Server 2
    一些應用.
    http://www.goodman-lai.idv.tw/2007/03/vmware_21.html

    VMware ESXi
    1.下載 VMware ESXi
    我一直很喜歡用 XenServer 但是它的缺點是一定要使用含有 VT 的 CPU 要不然很多東西沒有辦法使用,因為礙於硬體的需求所以在家裡一直都沒辦法使用,在這一波的金融風暴能下能省就省吧.最近逛到 VMware 的官方網站看到又有一個可以 Free Download 的東西,VMware 真的是佛心來的.這 ESXi 相當於 ESX 的精簡版,他並不需要 VT 等的技術就能讓你 Linux , Windows 一手抓
    2.安裝 VMware ESXi
    VMware ESXi 不同於 VMware server 他需要較高的硬體支援.如果你隨便拿一台桌機來安裝 VMware ESXi,很可能會在安裝時出現了下面的畫面."Unable to find a supported device to write the VMware ESX Server 3i 3.5.0 image to."
    3.安裝 VMware ESXi Guest OS
    安裝 VMware ESXi Guest OS 之前你要在桌機上安裝 VMware Infrastracture client 的管理套件.那裡可以找到這個套件.還記得我們安裝好 ESXi 時並且設定的一個 IP 嗎?使用瀏覽器 IE 或是 Firefox 都可以,連上這個 IP,連線正確的話會看到下面這個畫面.點選 "Download VMware Infrastructure Client" 下載管理介面程式 "VMware-viclient.exe"
    4.VMware ESXi - 硬裝 VMware ESXi 在 IDE / SATA / USB 硬碟上
    Mware ESX(i) 在安裝時對於硬體需求很高,基本上在開始安裝時 VMware ESX(i) 就會開始檢查系統是不是有符合需求.
    5.VMware ESXi Server 3.5 的 Command Line
    預設是看不到VMware ESXi Server 3.5 的 Command Line 的模式.不過還是有方法的.
    6.VMware ESXi 如何把 client 端的 CD/DVD 當做安裝媒體
    在一開始最常遇到的問題就是不知道要怎麼從光碟機開機,所以這邊跟大家說明一下 "VMware ESXi 如何把 client 端的 CD/DVD 當做安裝媒體",
    7.VMware ESXi 如何把 ISO 當做安裝媒體
    一般在安裝 VMware ESXi 的 Guest OS 時有 3 種方式可以當作安裝媒體
    8.如何進入 VMware ESXi BIOS
    如何進入 VMware ESXi BIOS 的方法有兩種
    9.VMware ESX(i) Import / Export VMs
    VMware ESX(i) Import / Export VMs 主要的功用為,將整個 VMs 的 OS 做轉移到另一台 VMware ESX(i) ,當然你也可以當成一整個的 OS 備份
    10.Vmware ESX(i) - Networking
    在 Host / Configuration / Hardware(Networking) 可以看到目前 Guest 的網路設定狀態!
    11.Vmware ESX(i) - 新增 Networking 裝置
    在新增 Connection Types 時有兩種模式.

     

     

                

    Xen


    Xen 由劍橋大學所開發半虛擬化Code,原本需要修改os kernel,但是與VT 功能cpu相配合用後.便不需要修改kernel.最大缺點為一般快照功能需要去指令模式下.
     

     

    KVM


    KVM 不支持 SMP CPU(已無此限制)
    http://www.linux-kvm.com/content/run...ows-smp-guests

    KVM 不支持 Host os(VMM) 與Guest os 之間網路

    (引用自 https://twiki.cern.ch/twiki/bin/view...ualization/KVM  有待考證)

    KVM VS Xen

     

    OpenVZ



    OpenVZ 的 Host OS 和 Guest OS 需要一樣

    • 在整臺伺服器上只有一個單一的作業系統實例,沒有多個系統的拷貝
    • 沒有任何虛擬任何之外的Hardware、GuestOS。
    • 每個容器也被稱為虛擬環境 virtuozzo 稱底下虛擬機不為 vm(virtual machine) 而是為 container
    • 用戶的程式運行于物理節點上,但實際上也是運行在容器中的。
       

    有下面特點

    1. 專屬 CPU 時間、記憶體、硬碟空間。
    2. 可自行修改或安裝符合需求的系統函式庫。 可自行安裝 RPM 套件,或自行編譯 (compile) 套件並進行安裝。
    3. 專屬的 process、使用者資料庫,同時並擁有主機 root 權限。
    4. 提供專屬 IP、及連接埠 (port)。 Linux VPS 虛擬專屬主機支援 IPTables 防火牆,並可自行設定防火牆規則。
       

    OpenVZ很適合一些主機商使用配上vtonf

     

    Windows 2008 Hyper V


    MS 的虛擬化軟體

     

    FAQ                          

     ■ 如何檢查 CPU 有否支援 Intel-VT 或 AMD-V 的虛擬化技術?

    官方網站查詢
    Intel
    http://compare.intel.com/pcc/default.aspx?familyID=1

    AMD
    http://products.amd.com/en-us/

    Linux 下查詢法
       CPU 是 Intel 時:
        #grep vmx /proc/cpuinfo
       Intel -> vmx

       CPU 是 AMD 時:
        #grep svm /proc/cpuinfo
        AMD -> svm


     

    See Also (虛擬機之家, )

    圖引用自 http://publib.boulder.ibm.com/infoce...ayvservers.htm

    Powered by MindTouch Core