虛擬化
在計算機技术中,虛擬化(技術)或虛擬技術(英語:Virtualization)是一種資源管理技術,是将计算机的各種實體资源(CPU、内存、磁盘空间、網路適配器等),予以抽象、转换后呈现出来並可供分割、組合為一個或多個電腦組態環境。由此,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來应用這些電腦硬體资源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料儲存。 定义由于目前信息技术领域的很多企业都曾在宣传中将该企业的某种技术称为虚拟化技术,这些技术涵盖的范围可以从Java虚拟机技术到系统管理软件,这就使得准确的界定虚拟技术变得困难。因此各种相关学术论文在谈到虚拟技术时常常提到的便是如前面所提到的那个不严格的定义。 历史虚拟化技术起源于20世纪60年代末,美国IBM公司当时开发了一套被称作虚拟机监视器(Virtual Machine Monitor)的软件,该软件作为计算机硬件层上面的一层软件抽象层,将计算机硬件虚拟分割成一个或多个虚拟机,并提供多用户对大型计算机的同时、交互访问。 虚拟化技術的类别按虛擬的對象分類
按照抽象程度分類按照抽象程度的不同,常常把虚拟技术分为五个层次: 指令集架構等級的虛擬化(Instruction Set Architecture Level)指令集架構的虛擬化是透過軟體來模擬不同架構的處理器、記憶體、匯流排、磁碟控制卡、計時器等多個I/O設備,軟體會將虛擬機所發出的指令轉換為本機可以操作的指令在現有的硬體上執行。這種等級的虛擬化對於模擬相同處理器架構的平台可以提供很好的相容性,例如︰x86架構、Sparc架構、Alpha架構。 若主機處理器可以執行由虛擬機轉換出來的指令,或是使用相同的指令集來完成任務,那就表示除了處理器以外的作業系統、I/O設備皆可不受特定平台所綁定,但由於虛擬機的每條指令都必須透過軟體來模擬,所以在效能會有較大程度的耗損。 硬體抽象層等級的虛擬化(Hardware Abstraction Level)硬體抽象層等級的虛擬化是由虛擬機器監視器來隱藏不同廠商的處理器、記憶體、晶片組…等特徵,為這些虛擬機器提供抽象與統一的虛擬平台。運行此平台的電腦稱之為主體機器(Host Machine),而在此平台中運作的虛擬機稱為客體機器(Guest Machine), 目前大多數x86平台的商業電腦都在使用這種虛擬化,最主要是由於現今處理器廠商提供了硬體輔助虛擬化技術,例如︰第三世代的Intel VT-d、AMD-Vi皆提供虛擬機直接記憶體存取(Direct Memory Access)以及對各種PCI介面的直接存取功能(PCI passthrough)。 這個分類底下代表性的有VMware ESXi、Hyper-V、以及Citrix。 作業系統等級的虛擬化(Operating System Level)硬體抽象層等級的虛擬化中的全虛擬化與作業系統底層間有非常高的隔離能力,支援不同的作業系統,安裝後不須要重新啟動主機、或修改開機程式(Boot Loader)以達到雙系統的目的,風險低、維護簡單。由於此等級的虛擬機可以訪問底層作業系統,因此使用者必須花費大量的時間來安裝與設定虛擬機器,接著才能開始評估或測試所需運作的軟體,這些設定包含了作業系統的安裝、安全性或相容性軟體的更新、網路、系統調校…等,如果所需的作業系統與底層作業系統相同,那麼其實它們所作的跟實際上安裝一台實體機器沒有什麼區別。 作業系統內核虛擬化可以最大限度的減少新增虛擬機的所需,在這個等級的虛擬機器共用實體主機上的硬體以及作業系統,呈現彼此獨立且隔離的虛擬機環境。 應用軟體的環境是由作業系統、函式庫、相依性軟體、特定於系統的資料結構或檔案系統,例如︰NTFS或Ext4,以及其他環境設定所組成。如果這些都保持不變,應用軟體很難發現與真實環境的區別。這是所有作業系統等級虛擬化的關鍵想法。 程式語言等級的虛擬化(Programming Language Level)傳統電腦是由指令集架構所驅動的一種機械語言,硬體的操作由特殊的I/O指令處理,也可以透過區塊映射(Mapping)來操作記憶體,此等級的虛擬化會將高階語言轉譯成一種名為位元組碼的語言,透過虛擬機器轉譯成為可以直接執行的命令。跨作業系統平台、跨語言皆為其優點。 這個分類底下代表性的有Oracle Java、Microsoft . NET、Parrot。 函式庫等級的虛擬化(Library Level)大部分的應用程式都是使用由許多函式庫組成的API(Application Programming Interface)來設計,使用動態連結的方式用於隱藏作業系統的細節,目的是提供程式設計師更簡單的工作。這也產生了一種新的虛擬化方式,使用不同的API與不同作業系統底層的ABI(Application Binary Interface)來進行模擬的工作。 這個分類底下代表性的有Wine以及WSL(Windows Subsystem for Linux)。 虚拟化技術的应用参考文献
相关条目外部链接
|