Python wordpress mysql 开源 php java Firefox 程序员 Android nginx google centos 云计算 linux Ubuntu apache Windows 编程 shell 微软

雲計算-從基礎到應用架構系列-虛擬化的概念

開篇

     上篇我們講述了雲計算的發展歷史,當然也是IT信息產業發展的一個未來的趨勢,正如我們的互聯網應用的蓬勃發展,目前包括一些RIA富客戶端應

用的迅速發展,還包括開源軟件和HTML5的未來的推廣,無疑都是為了為用戶提供更好的服務。當然雲計算的提出,也是在前人的肩膀上,通過柔和現

有的技術,為用戶或者企業提供更好的服務的一種新的IT模式,因此我們可以說雲計算本身帶來的是一種IT產業格局的變化,因此,我們對雲計算抱的

態度可能不會說是非它不可,但是我們必須要思想上對其能夠把我,在自己的企業信息化的決策中,可以將其列為未來的企業發展的一個重要戰略之一。

      本篇將會從雲計算的核心技術之一或者說是,完成雲計算這個新興概念的底層的核心技術虛擬化的相關概念的介紹,至少我們應該知道雲計算這個

浪漫的名詞,它的底層實現是采用什麽技術,是什麽需求,促使這樣的概念的提出等等,具體的關於雲計算概念的相關的介紹,我們也已經在第一篇中

提過,所以我們這裏只要知道,虛擬化是實現雲計算的一個核心的技術之一就好。

摘要

      虛擬化技術的產生也是計算機技術發展道路上的一個趨勢和必然現象,在計算機發展道路上起到了重要的作用,虛擬化的技術早在20世紀50年代就

已經提出,第一次將虛擬化的技術應用到商業應用中還是20世紀的60年代,並且將虛擬化技術提出並應用到商業中的第一個公司就是IBM,IBM可以說

是在虛擬化技術方面一直是領導者,現在虛擬化的技術用到的地方太多了,隨便舉例吧,無論是操作系統的虛擬內存,還是說是虛擬機或者目前的服務

器的虛擬化或者是PC的虛擬化等都是離不開虛擬化技術。隨著虛擬化技術的廣泛使用,為數據中心和應用部署帶來了新的管理與部署方式,虛擬化技術

的使用,提高了高效便捷的管理,提高了資源的利用率,虛擬化技術目前以成為多家商業巨頭的重要企業戰略。

      本文將會從下面的幾個方面進行闡述。

      1、虛擬化的概念

      2、虛擬化的常見類型

      3、虛擬化的方面

本文大綱

1、開篇

2、摘要

3、本文大綱

4、虛擬化的概念

5、虛擬化的常見類型

6、虛擬化技術的演進

7、服務器虛擬化的方面

8、本文總結

9、後續

10、參考文獻

虛擬化的概念

      虛擬化概念的提出,是相對於真實的資源來說的,虛擬化的簡單的來說就是,模擬真實環境下運行的完全狀態到一個虛擬化的環境中,一般來說我

們知道計算機資源分為二種,硬件資源和軟件資源。

      虛擬化技術正是將虛擬化技術應用在計算機資源上的,所以既可以針對硬件也可以針對軟件,一般來說計算機的軟硬件資源結構圖,可能是如下情

況:

      image

上面給出的可虛擬化的計算機資源的組圖,基本上涵蓋了可虛擬化的資源。

      看過計算機操作系統教材的朋友,應該都知道操作系統中的內存虛擬化的技術,比如我們的現在用的比較多的操作系統的虛擬化桌面的虛擬內存的

概念,這個怎麼理解呢,我認為就可以用虛擬化的技術來解釋。在操作系統中的虛擬內存的的思想就是操作系統在硬盤的某個區域內,將內存中不使用

的狀態數據IO到硬盤上,等到某個程序需要使用的數據不在內存中的時候,通過IO操作,將應聘的數據IO到內存中,就算我們的本身的內存很小,但是

我們卻能運行數據量很大的程序,原因就是因為,我們在把數據裝入內存的過程中,並不是一次性的全部加載,有點類似我們平時應用程序的延遲加載

的意思呵呵,不過思路可不同,不能混淆。下面我們來簡單的說明下過程。

image 

    

  這裏將內存中的部分內存空間釋放,提供給當前要運行的程序,具體的IO到硬盤中的數據,根據一些策略來完成切換。我這裏並不詳細的講述這個方

面的內容,詳細的介紹,請大家查閱相關資料呵呵。

      下面我們來看看關於虛擬化的相關概念性的定義吧

      1.維基百科對虛擬化的描述

      虛擬化是將計算機資源進行抽象的一種方法,通過虛擬化出來的計算機資源,我們可以像我們未虛擬化訪問物力資源的形式,來訪問虛擬化後的資

源。並且這種抽象後的資源,不會受到物力資源配置、地域、實現等因素的影響。

      2、信息技術術語庫

      虛擬化是某些事物的虛擬版本,例如操作系統,計算機系統,CUP,內存,硬盤,負載均衡,路由器等。

      3、IBM的虛擬化定義

      虛擬化是資源的邏輯表示,不受物理限制的約束。

      通過上面的總結,我們不難發現他們之間的共性。

      a、虛擬化的對象是各式各樣的資源。

      b、經過虛擬化後的邏輯資源,隱藏了一些細節性的維護。

      c、用戶可以在虛擬環境中,使用真實環境中的部分或者全部功能。

虛擬化的分類

      可虛擬化的資源有多種多樣,我們前面也是給出了按照軟硬件方面的內容,來分析的,一般都是軟硬件相結合的形式,下面我們來按照虛擬化的分類

來講述下,虛擬化資源的不同類型,針對每個類型虛擬化的具體的作用和功效是什麽,我們來簡單的分析下。我們先看下可虛擬化資源的整體結構。

      image 

     

開篇的時候,我們對虛擬化的軟硬件資源進行了拆分,下面我們針對拆分後的結果進行分類,從下面的幾個類型進行講述,我們先來看看基礎設施

分類的內容。

一、基礎設施的虛擬化

       在這些虛擬化的資源中,我想我們使用最多的虛擬化的實踐就是-按照VMware Workstation提供的虛擬機,我們通過按照虛擬機虛擬一個邏輯的操

作系統,同時虛擬化後的操作系統,我們可以和正常的操作系統使用一樣來使用虛擬化的操作系統,這個虛擬化後的操作系統,就是一個獨立的操作系統,我們

需要為這個虛擬操作系統重新安裝相應的軟件,

       我們平時在管理一些數據文件,網絡資源,存儲資源時,我們都認為是基礎設施類型的虛擬化,網絡的虛擬化指的是將網絡中的軟硬件資源整合,為用戶

提供虛擬化的網絡鏈接技術,針對網絡的虛擬化技術,我們可以分為局域網虛擬化和廣域網虛擬化,局域網的虛擬化,是將局域網內的多個網絡虛擬成為一個

邏輯網絡,或者將局域網進行劃分,劃分成多個子網,通過這樣的方法來提供網絡的資源利用率,廣域網的虛擬化的典型代表是VPN,通過使用VPN的技術,我

們能夠遠程訪問公司內部的網絡資源,就像是在公司內部訪問一樣,同時這樣的技術,保證了外部網絡鏈接的安全性和私密性。

       基於存儲的虛擬化技術是指,為物理設備提供一個抽象的邏輯視圖,用戶通過這個視圖來訪問整合後的資源,采用這個技術的典型代表是磁盤陣列

技術(RAID) 該技術通過將多塊物理硬盤組合成為磁盤陣列,用廉價的設備,組合成高容錯,高性能的存儲空間。

二、操作系統的虛擬化

       我想大部分的從事IT的朋友,可能在沒有充分了解虛擬化技術之前,我們對虛擬化技術的理解,在操作系統層面上的認識比較多,認為操作系統的

虛擬化就是虛擬化,還有就是操作系統中的內存的虛擬化,打印機的虛擬化等。系統的虛擬化,實現了操作系統與物理設備的分離,例如,我們可以在

windows的操作系統上安裝Linux操作系統,我們都知道一個計算機上不能同時運行多個物理的操作系統,但是通過虛擬化技術,我們就能將一個計算

機設備上,同時運行多個操作系統,這個我想大家的理解最深刻。

       我們通過使用虛擬機來創建多個操作系統實例,那麽我們就可以在計算機中通過同事運行多個系統實例來完成多系統的同時運行,並且,我們使用

虛擬機,我們需要為虛擬機的運行環境提供相應資源的虛擬。

       image

      

通過上圖我們可以看到虛擬機的下的運行設備,是通過虛擬機從計算機物力資源中分配相應的計算機資源來提供給虛擬機運行環境,這樣,我們在

使用虛擬機中的操作系統實例時,就和我們的物理操作系統一樣使用方便。

       並且通過虛擬化後的操作系統,如果我們將一些自己的應用程序安裝在虛擬機上之後,我們通過創建快照,創建的機器映像,我們就可以還原鏡

像,虛擬機會從快照中恢復虛擬機的實例。一般恢復實例只要幾分鐘的時間,我們可以通過這樣的方式,來迅速的恢復一個操作系統或者為我們省去了

一些不必要的按照應用程序的時間浪費。

三、軟件的虛擬化

      除了前面講述的2個虛擬化類型的資源,還有一種是應用類型的虛擬化技術,我們通過將軟件虛擬化技術,我們可以實現軟件和操作系統之間解耦,

為軟件提供一個虛擬的運行環境。例如如下的場景,我們現在開發一個應用程序,我們在虛擬化的服務器上部署相應的組件,當用戶訪問相關的應用程

序時,我們通過虛擬化服務器將組件推送到客戶的客戶端的虛擬化環境中,完成應用,當客戶關閉軟件時,將客戶的變更和數據信息傳送回虛擬服務

器,這樣用戶可以不單局限於單一的客戶端,可以在不同的終端使用自己的應用程序。

      還有比較典型的軟件虛擬化技術的代表是JAVA的虛擬機,JAVA的虛擬機將高級編程語言編譯成中間語言,JAVA虛擬機將中間語言解釋成特定平臺

上可執行的二進制機器碼,從而達到了一次編譯,處處運行的效果,不過當然這是目標,可能還有一些細節的問題需要處理。

      我這裏就不給去其他的例子了,那麽我們可以看看,我們實現應用虛擬化的簡單過程。

      image

服務器虛擬化的方面

      服務器虛擬化技術,我們上篇就講述了服務器虛擬化的相關概念,並且分析了服務器虛擬化的核心技術的三個方面,CUP,內存,設備及IO,本節

針對這三個方面進行闡述,實現的優勢及特點。

      1、Cpu

      CPU的虛擬化技術,是將物理的CPU抽象為虛擬的CPU,我們知道,任意時刻,物理的CPU只能處理一個指令,我們也知道分時的CPU通過CPU的

執行時間,來對多個指令進行響應,不停的切換始終,執行不同的指令。我們很早的時候,是采用集中式的服務器模式,就是一臺中央服務器,多個客

戶端,每個客戶端訪問服務器內的CPU響應自己的命令,這個時候,客戶在使用計算機的時候,感覺不到自己使用的是集中式的服務器,而是感覺自己

使用的單獨的PC,這個時候,我們可以說內部其實就已經有了虛擬化的概念。

      CPU的虛擬化的過程中會出現如下的問題,有的時候,如果我們在虛擬機裏面執行一些類似中斷,或者是內存管理的指令這樣的命令操作的時候,

我們其實是要訪問物理資源,那麽我們如何處理這樣的問題,我們只能通過虛擬機監視器監視這樣的操作。然後執行相應的處理。

      在X86結構體系下,關於CPU的虛擬化提供了二種方式,全虛擬化和半虛擬化,我們來介紹下這2類虛擬化的原理。

      全虛擬化:是指我們通過虛擬機監視器,監視用戶的操作,當用戶執行某些特殊指令時,虛擬機監視器將這些指令進行動態的轉換,轉化成由虛擬

機可完成的相同的指令序列。一般全虛擬化采用的是二進制動態翻譯機制,通過這樣的機制,給客戶的感覺就是自己的系統就是運行在真實的物理環境

當中。

      半虛擬化:是指通過超級調用的形式,使虛擬機完成真實物理環境中特殊指令的執行,半虛擬化要求客戶的操作系統與虛擬機是兼容的,否則如果

虛擬機無法操控物理的操作系統,那麽將無法完成超級調用的操作。

      只要采用虛擬化技術,就會造成性能上的損失,隨著虛擬機技術的發展,目前CPU生產廠商中的絕對代表Intel、AMD已經將硬件輔助虛擬化技術帶

入了CPU,Intel的Intel-VT,AMD-V,通過CPU提供的硬件輔助技術,就是提供虛擬化操作的相關指令集合,這些指令集合輔助完成前面我們介紹的全

虛擬化與半虛擬化中解決的問題。

             2、內存及設備、IO

             這塊的內容,本章就不講述了,基本上來說與計算機操作系統中的講述的虛擬化的應用差不多,我這裏就不詳說了。

本文總結

      本章主要講述了虛擬化的相關概念,介紹了虛擬化資源的分類及虛擬化的幾種類型,並且分析了虛擬化產生的優勢,通過虛擬化技術,我們提供了

資源的利用率,提高了系統的性能,虛擬化技術隨著硬件及軟件的不斷發展,虛擬化技術將會在IT產業中占據越來越重要的角色,所以我們對虛擬化技

術方面的只是了解的越深入,對未來的IT的發展方向就越有把握。

後續

      下一篇我們就開始講述虛擬化技術方面內容了,希望大家看完本章內容後,如果有什麽意見和建議,請您提出來,我在下篇書寫的時候,會及時的

改進,謝謝您的意見,由於個人水平有限,錯誤或不足之處還請多多指點。

延伸阅读

评论