字體:小 中 大 | |
|
|
2020/11/26 16:09:59瀏覽3577|回應0|推薦0 | |
第11章虛擬機器(virtual machines) 虛擬機器簡介 虛擬機器的結構與類型 虛擬化與作業系統的關聯 虛擬機器的實例 電腦系統可以看成是由很多層次所組成的,最底下的層次是硬體,作業系統的核心(kernel)在硬體之上,以系統呼叫來代表一些硬體的指令,讓更上層的成員使用,核心之上的系統程式可以使用系統呼叫或是硬體指令來建立更複雜的功能。系統程式可以讓更上層的應用程式使用。對於應用程式來說,反正下層的功能都可以看成是電腦系統的一部分,假如有採用虛擬機器的技術,則處理元是在一個虛擬機器的環境中執行的。 在CPU排程機制與虛擬記憶體技術的配合下,作業系統可以讓一個處理元在執行上好像擁有自己的處理器與記憶體一樣,但是事實上並非如此,圖11-1顯示虛擬機器的概念,圖11-1左邊是一般的電腦系統架構,圖右邊採用虛擬機器的技術,不同的處理元可以在不同的核心上執行,IBM的VM作業系統就是相當有名的虛擬機器的實例。
簡單地說,虛擬機器以軟體技術在一個作業系統中模擬另外一種作業系統,讓另外一種作業系統的程式能在同一台電腦上執行。 虛擬機器的開端 西元1972年IBM公司的大型主機系統mainframe,IBM VM370可以把一台大型主機系統分割成多個虛擬機器,每個虛擬機器執行自己的作業系統,以minidisks來解決儲存磁碟的問題。 虛擬化的需求 虛擬機器的管理程式必須提供執行程式一個跟原本機器一樣的環境,在虛擬機器中執行的程式不能有太大的效能上的落差,虛擬機器的管理程式對於系統的資源有完整的控制權限。 近年的發展:1990年代末期,80x86的CPU普及之後,出現了Xen與VMware等技術,開放程式碼的免費軟體Virtualbox支援多種平台,支援雲端運算。
虛擬化最顯著的優點 虛擬機器與母系統host system之間彼此隔離,虛擬機器之間彼此隔離,達到有效的保護作用,但是可能造成資源分享的困難。 其他優點: 可以將虛擬機器打包,方便進行系統的開發與測試,可以支援合併consolidation來提升硬體的使用率,改善資源的使用與管理狀況,應用系統的安裝可以更方便, 支援雲端運算,支援虛擬化桌面的運用。 分散虛擬機器通訊的方式 基本觀念: 虛擬機器的概念很有用,但是要實現並沒有那麼容易;提供與母系統一樣的環境不容易;作業系統雙模式dual-mode的執行情形使狀況變得更複雜;虛擬化與否跟電腦CPU的功能密切相關。 虛擬機器的組成 VCPU的概念: 虛擬機器的組成之一是VCPU, Virtual CPU; VCPU不執行程式碼,VCPU用來保存CPU的狀態,虛擬機器管理程式針對每個虛擬機器使用個別的VCPU來保存其CPU的狀態,假如虛擬機器被切換到(context switched)另一個CPU,其VCPU就用來將其狀態(context)載入,VCPU跟PCB的概念很像。 Trap-and-Emulate的實作方法 在雙模式的系統中,虛擬機器只能在user-mode底下執行;虛擬機器提供virtual kernel mode與virtual user mode. 假如虛擬機器執行需要特殊權限的指令(privileged instruction),由虛擬機器管理程式打斷原本的執行(trap),以模擬的方式(emulate)在母系統的kernel mode下代為執行指令,再回到虛擬機器繼續執行。執行的效能會受到影響。
Binary Translation的實作方法 假如虛擬機器在user-mode底下執行,不需要做特別的處理;假如虛擬機器需要在kernel-mode底下執行,則所執行的指令會轉譯成另外一組需要特別處理的指令;虛擬機器管理程式必須做及時的轉譯(translation).
虛擬機器的類型 虛擬機器的生命週期: 建立虛擬機器時要提供相關的參數,例如CPU的數目、記憶體大小、網路設定與儲存空間的大小;虛擬機器的建立是否成功跟目前可分配的資源有關,假如虛擬機器不再需要使用,可以直接刪除,讓所占用的資源釋出,現有的虛擬機器可以直接透過複製來建立虛擬機器。 虛擬機器管理員: 在雲端運算的領域中常聽到「Hypervisor」的名詞,代表「虛擬機器管理員virtual machine manager」,所以hypervisor是一種軟體,主要的功能是讓多個作業系統共用一套電腦硬體,但是彼此之間不會互相產生交互作用,相當於一台電腦上有多個作業系統同時在執行中。 Type 0 hypervisor: 對於Type 0 hypervisor來說,虛擬機器管理員寫在韌體(firmware)中,在電腦開機時載入執行,系統可以被分成多個虛擬系統,各有專屬的資源,Type 0 hypervisor屬於純粹硬體的解決方式,效能會比較好。 Type I hypervisor: 第1種形式(Type I)的hypervisor也稱為bare-metal hypervisor 或是Native VM, 可以在新電腦上直接安裝hypervisor的軟體,屬於Type I hypervisor的軟體包括VMWare ESX/ESXi、Microsoft Hyper-V等
Type II hypervisor: 第2種型式(Type II)的hypervisor也稱為hosted hypervisor或是hosted VM,電腦必須先安裝了一種作業系統之後才安裝hypervisor的軟體。屬於Type II hypervisor的軟體則包括VMWare Workstation、VirtualBox等,其中不乏開放原始碼的軟體,例如VirtualBox。
除了虛擬機器之外,雲端運算採用的虛擬化技術是很多元的,包括運算資源、網路資源與儲存資源都經由虛擬化來支援雲端運算彈性分配資源的需求,是雲端運算發展的關鍵技術之一。虛擬桌面基礎結構(VDI,Virtual Desktop Infrastructure)也是雲端虛擬化技術的一種,屬於桌面虛擬化(desktop virtualization)的技術。主要是因為導入雲端服務以後,使用者對於複雜的服務來源往往摸不著頭緒,透過虛擬桌面可以將底下的細節隱藏起來,讓使用者能輕易地運用雲端服務。 虛擬化與作業系統的關聯 基本觀念: 在虛擬化的環境中,單一處理器的系統也可以像多處理器系統那樣地運作;虛擬化軟體承諾提供虛擬機器的CPU資源,再透過真實CPU的排程來達成承諾,通常虛擬機器管理程式會有能運用的真實CPU,這些CPU會執行虛擬機器管理程式,也會執行虛擬系統的工作。 排程的狀況: 假如CPU數目足夠,虛擬機器管理程式可以把CPU安排成專屬於虛擬機器的CPU,假如實體CPU數目低於虛擬CPU的數目,則虛擬機器上執行的程式真正得到的CPU的運算資源會比預期少很多。 記憶體管理基本觀念: 在一般電腦上,記憶體的管理會影響系統的效能,對於虛擬系統來說,會用到記憶體的程式更多,記憶體的管理更重要;虛擬系統承諾提供的記憶體容量可能會大於實際的記憶體容量。 記憶體管理的基本步驟: 虛擬系統管理程式要預估每個虛擬機器可用到的記憶體容量,虛擬系統管理程式依據其他因素評估虛擬機器可分配到的記憶體容量,虛擬系統管理程式要能從虛擬機器取回原先分配的記憶體。 從虛擬機器取回記憶體的機制: 虛擬機器任為自己對於記憶體有完全的控制權,不過實際上是透過他自己的page table管理,虛擬系統管理程式必須做一些對應的轉換,虛擬系統管理程式可以在每個虛擬機器上安裝一個虛擬驅動程式virtual device driver,負責記憶體資源分配的溝通;虛擬系統管理程式可以試著了解那些相同的page被重複載入,減少需要重複載入的次數。 I/O管理基本觀念: I/O設備的差異性太大,必須依賴作業系統來處理這些個別化的特徵,通常藉由輸出入的驅動程式I/O device drivers來簡化問題;虛擬化技術提供虛擬的驅動程式。 虛擬機器管理程式VMM提供I/O的方式: 專屬於虛擬機器的方式,將虛擬機器的I/O對應到驅動程式的動作;直接提供虛擬驅動程式。 直接與共享的存取方式: 對輸出入直接存取direct acess的方式有比較高的效能;共享的存取shared access—VMM 必須做到保護protection, VMM必須參與每個I/O確認正確性並且做好資料在虛擬機器與I/O設備之間的轉送。 網路通訊的問題: 通常每個虛擬機器會有個別的IP位址,VMM扮演虛擬交換器virtual switch的角色。 儲存管理基本觀念: 一般的作業系統都會有一個開機磁碟(boot disk),透過磁碟分割的方式無法解決虛擬機器的問題, type 0 hypervisor傾向於運用分割的方式,因為通常虛擬機器的數量沒有那麼大。 type I 與type II hypervisor的解決方法: type I hypervisor將guest root disk儲存在VMM檔案系統的檔案中;type II hypervisor將同樣的資訊儲存於host operating system的檔案系統中,運用磁碟映像disk image簡化了很多作業方式,假如虛擬機器更大的磁碟空間,VMM可能需要把虛擬機器disk I/O的請求轉換成實際的I/O指令。 虛擬機器的實例 VMWare workstation: 一種商業化的type II hypervisor,作業系統執行VMWare的軟體,然後透過VMWare來執行虛擬機器。 JVM, Java Virtual Machine: 電腦作業系統執行JVM, 提供java程式執行的環境,java程式可以在不同的作業系統的JVM環境中執行,完全不需要修改,JVM是抽象電腦的一種規格,用來執行Java程式編譯所產生的bytecode. |
|
( 知識學習|隨堂筆記 ) |