虛擬化 - Virtualization

    版本為 21:38, 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)的.

    目前採用這種方式的有  open source Xen project.

    3 - 這也是最新的方式需要有硬體(CPU) 的支援 - 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)

     

     

    • 全虛擬化 VMware 
    • 半虛擬化 Xen 
    • 半虛擬KVM
    • 半虛擬Windows 2008 Hyepr V
    • Openvz 半虛擬化 限定為Guest os 要跟Host os 一模一樣

    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

                

    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