A. 如何解決伺服器虛擬化中的存儲問題
但也因為虛擬化的特性,為承載環境中不斷增長的虛擬機,需要擴容存儲以滿足性能與容量的使用需求。IT經理們已經發現,那些因伺服器虛擬化所節省的資金都逐漸投入存儲購買的方案上了。 伺服器虛擬化因虛擬機蔓延、虛擬機中用於備份與災難恢復軟體配置的問題,讓許多組織徹底改變了原有的數據備份與災難恢復策略。EMC、Hitachi Data System、IBM、NetApp和Dell等都致力於伺服器虛擬化存儲問題,提供包括存儲虛擬化、重復數據刪除與自動化精簡配置等解決方案。 伺服器虛擬化存儲問題出現在數據中心虛擬化環境中傳統的物理存儲技術。導致虛擬伺服器蔓延的部分原因,在於虛擬伺服器可能比物理伺服器多消耗約30%左右的磁碟空間。還可能存在虛擬機「I/O 攪拌機」問題:傳統存儲架構無法有效管虛擬機產生的混雜模式隨機I/O。虛擬化環境下的虛擬存儲管理遠比傳統環境復雜——管理虛擬機就意味著管理存儲空間。解決伺服器虛擬化存儲問題 作為一名IT經理,你擁有解決此類伺服器虛擬化存儲問題的幾個選項,我們從一些實用性較低的方案開始介紹。其中一項便是以更慢的速度部署虛擬機。你可以在每台宿主上運行更少的虛擬機,降低「I/O混合器」問題出現的可能性。另外一個方法則是提供額外存儲,但價格不菲。 一個更好的選擇是在采購存儲設備時,選擇更智能的型號並引入諸如存儲虛擬化,重復數據刪除與自動化精簡配置技術。採用這一戰略意味著新技術的應用,建立與新產商的合作關系,例如Vistor、DataCore與FalconStor。將存儲虛擬化作為解決方案 許多分析師與存儲提供商推薦存儲虛擬化,作為伺服器虛擬化存儲問題的解決方案。即使沒有出現問題,存儲虛擬化也可以減少數據中心開支,提高商業靈活性並成為任何私有雲的重要組件之一。 概念上來說,存儲虛擬化類似伺服器虛擬化。將物理存儲系統抽象,隱藏復雜的物理存儲設備。存儲虛擬化將來自於多個網路存儲設備的資源整合為資源池,對外部來說,相當於單個存儲設備,連同虛擬化的磁碟、塊、磁帶系統與文件系統。存儲虛擬化的一個優勢便是該技術可以幫助存儲管理員管理存儲設備,提高執行諸如備份/恢復與歸檔任務的效率。 存儲虛擬化架構維護著一份虛擬磁碟與其他物理存儲的映射表。虛擬存儲軟體層(邏輯抽象層)介於物理存儲系統與運行的虛擬伺服器之間。當虛擬伺服器需要訪問數據時,虛擬存儲抽象層提供虛擬磁碟與物理存儲設備之間的映射,並在主機與物理存儲間傳輸數據。 只要理解了伺服器虛擬化技術,存儲虛擬化的區別僅在於採用怎樣的技術來實現。容易混淆的主要還是在於存儲提供商用於實現存儲虛擬化的不同方式,可能直接通過存儲控制器也可能通過SAN應用程序。同樣的,某些部署存儲虛擬化將命令和數據一起存放(in-band)而其他可能將命令與數據路徑分離(out-of-band)。 存儲虛擬化通過許多技術實現,可以是基於軟體、主機、應用或基於網路的。基於主機的技術提供了一個虛擬化層,並扮演為應用程序提供單獨存儲驅動分區的角色。基於軟體的技術管理著基於存儲網路的硬體設施。基於網路的技術與基於軟體的技術類似,但工作於網路交換層。 存儲虛擬化技術也有一些缺陷。實現基於主機的存儲虛擬化工具實際上就是卷管理器,而且已經流傳了好多年。伺服器上的卷管理器用於配置多個磁碟並將其作為單一資源管理,可以在需要的時候按需分割,但這樣的配置需要在每台伺服器上配置。此解決方式最適合小型系統使用。 基於軟體的技術,每台主機僅需要通過應用軟體查詢是否有存儲單元可用,而軟體將主機需求重定向至存儲單元。因為基於軟體的應用通過同樣的鏈路寫入塊數據與控制信息(metadata),所以可能存有潛在瓶頸,影響主機數據傳輸的速度。為了降低延遲,應用程序通常需要維護用於讀取與寫入操作的緩存,這也增加了其應用的價格。伺服器虛擬化存儲創新:自動化精簡配置與重復數據刪除 存儲技術的兩個創新,自動化精簡配置與重復數據刪除,同樣是減少伺服器虛擬化環境對存儲容量需求的解決方案。這兩項革新可以與存儲虛擬化結合,以提供牢固可靠的存儲容量控制保障。 自動精簡配置讓存儲「走的更遠」,可減少已分配但沒有使用的容量。其功能在於對數據塊按需分配,而不是對所有容量需求進行預先分配。此方法可以減少幾乎所有空白空間,幫助避免利用率低下的情況出現,通常可以降低10%的磁碟開銷,避免出現分配大量存儲空間給某些獨立伺服器,卻一直沒有使用的情況。 在許多伺服器部署需求中,精簡配置可通過普通存儲資源池提供應用所需的存儲空間。在這樣的條件下,精簡配置可以與存儲虛擬化綜合應用。 重復數據刪除從整體上檢測與刪除位於存儲介質或文件系統中的重復數據。檢測重復數據可在文件、位元組或塊級別進行。重復數據刪除技術通過確定相同的數據段,並通過一份簡單的拷貝替代那些重復數據。例如,文件系統中有一份相同的文檔,在50個文件夾(文件)中,可以通過一份單獨的拷貝與49個鏈接來替代原文件。 重復數據刪除可以應用與伺服器虛擬化環境中以減少存儲需求。每個虛擬伺服器包含在一個文件中,有時文件會變得很大。虛擬伺服器的一個功能便是,系統管理員可以在某些時候停下虛擬機,復制並備份。其可以在之後重啟,恢復上線。這些備份文件存儲於文件伺服器的某處,通常在文件中會有重復數據。沒有重復數據刪除技術支持,很容易使得備份所需的存儲空間急劇增長。改變購買存儲設備的觀念 即使通過存儲虛擬化,重復數據刪除與精簡配置可以緩解存儲數容量增長的速度,組織也可能需要改變其存儲解決方案購買標准。例如,如果你購買的存儲支持重復數據刪除,你可能不再需要配置原先規劃中那麼多的存儲容量。支持自動化精簡配置,存儲容量利用率可以自動提高並接近100%,而不需要管理員費心操作維護。 傳統存儲購買之前,需要評估滿足負載所需的存儲能力基線、三年時間存儲潛在增長率、存儲擴展能力與解決存儲配置文件,還有擬定相關的采購合同。以存儲虛擬化與雲計算的優勢,購買更大容量的傳統存儲將越來越不實際,尤其在預算仍是購買存儲最大的限制的情況下。以下是一些簡單的存儲購買指導: 除非設計中明確說明,不要購買僅能解決單一問題的存儲方案。這樣的做法將導致購買的存儲架構無法與其他系統共享使用。 ·關注那些支持多協議並提供更高靈活性的存儲解決方案。 ·考慮存儲解決方案所能支持的應用/負載范圍。 ·了解能夠解決存儲問題的技術與方案,例如重復數據刪除與自動化精簡配置等。 ·了解可以降低系統管理成本的存儲管理軟體與自動化工具。 許多組織都已經在內部環境中多少實施了伺服器虛擬化,並考慮如何在現有存儲硬體與伺服器上實現私有雲。存儲預算應用於購買合適的硬體或軟體,這點十分重要。不要將僅將注意力集中在低價格上。相反,以業務問題為出發點,提供解決問題最有價值的存儲解決方案才是王道。
B. 常見的虛擬化技術
虛擬化技術有哪些
1、CPU虛擬化
虛擬化在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬體的容量,簡化軟體的重新配置過程。簡單說來,CPU的虛擬化技術就是單CPU模擬多CPU並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
2、網路虛擬化
網路虛擬化是目前業界關於虛擬化細分領域界定最不明確,存在爭議較多的一個概念。微軟眼中的「網路虛擬化」,是指虛擬專用網路(VPN)。VPN對網路連接的概念進行了抽象,允許遠程用戶訪問組織的內部網路,就像物理上連接到該網路一樣。網路虛擬化可以幫助保護IT環境,防止來自Internet的威脅,同時使用戶能夠快速安全的訪問應用程序和數據。
3、伺服器虛擬化
與網路虛擬化不同,伺服器虛擬化卻是虛擬化技術最早細分出來的子領域。根據2006年2月ForresterResearch的調查,全球范圍的企業對伺服器虛擬化的認知率達到了75%。三分之一的企業已經在使用或者准備部署伺服器虛擬化。這個產生於20世紀60年代的技術日益顯示出其重要價值。由於伺服器虛擬化發展時間長,應用廣泛,所以很多時候人們幾乎把伺服器虛擬化等同於虛擬化。
4、存儲虛擬化
隨著信息業務的不斷運行和發展,存儲系統網路平台已經成為一個核心平台,大量高價值數據積淀下來,圍繞這些數據的應用對平台的要求也越來越高,不光是在存儲容量上,還包括數據訪問性能、數據傳輸性能、數據管理能力、存儲擴展能力等等多個方面。可以說,存儲網路平台的綜合性能的優劣,將直接影響到整個系統的正常運行。因為這個原因,虛擬化技術又一子領域——虛擬存儲技術,應運而生。
5、應用虛擬化
前面幾種虛擬化技術,主要還專注於對硬體平台資源的虛擬優化分配,隨著IT應用的日益廣泛,應用虛擬化作為虛擬化家族的明日之星登上了歷史舞台。2006年7月由Forrester咨詢公司在美國對各種不同行業的高層IT管理人員所做的一項研究顯示,當今的機構現在將應用虛擬化當作是業務上的一個必由之路,而不是一個IT決策。據統計,全世界目前至少有超過18萬個機構在利用應用虛擬化技術進行集中IT管理、加強安全性和減少總體成本。
C. 什麼是虛擬化為什麼要虛擬化
一.什麼是虛擬化?
簡單來講,虛擬化就是為一些組件創建虛擬(而不是物理)版本的過程。虛擬化可以應用到計算機、操作系統、存儲設備、應用或網路。但是,伺服器虛擬化才是虛擬化的核心。 現如今的 x86 伺服器的設計存在局限性,每次只能運行一個操作系統和應用,這為 IT 部門帶來了挑戰。因此,即使是小型數據中心也必須部署大量伺服器,而每台伺服器的容量利用率只有 5% 到 15%,無論以哪種標准來衡量,都十分的低效。
虛擬化使用軟體來模擬硬體並創建虛擬計算機系統。這樣一來,企業便可以在單台伺服器上運行多個虛擬系統,也就是運行多個操作系統和應用,而這可以實現規模經濟以及提高效益。
二.為什麼要虛擬化?
虛擬化技術能為我們解決很多以前解決不了的技術:
1、伺服器整合技術:這個技術在沒有虛擬化技術之前是很難完成的。因為什麼東西都是實際存在的,想把兩個工作相對較少的伺服器整合到一起是很困難的。然而當有了虛擬化技術以後使這種伺服器整合技術變得非常容易。而這個技術需要藉助我下面介紹的2、3條技術。
2、負載均衡技術:
負載均衡技術是只在每台伺服器上安裝一個負載均衡器,然後設置很多的調度演算法及臨界值。來判斷此時此刻伺服器的壓力是輕還是重。然後根據輕重來完成伺服器的合並,而合並又依據了第三條技術。
3、動態遷移技術:這個技術是前兩個技術的根基,但是卻不只僅僅限於前兩個技術。它的目的是可以在伺服器開啟的狀態下,把其上面的虛擬機遷移到其他的伺服器上面。工作原理大體是先將目標伺服器上模擬出此伺服器的硬體狀態,然後遷移數據,最後釋放此伺服器的信息。
4、克隆技術:這個技術說起來和上面那個技術很像,但是卻不一樣。克隆技術是把一台伺服器的環境配置好了後可以通過克隆技術使其他的機子都達到和這台機子一樣的效果,假如要配置100台甚至1000台伺服器的話這種克隆技術是非常可觀的。它和動態遷移的區別是在伺服器不停機的狀態下,動態遷移要求遷移的彼此必須是共享內存的,但是克隆並沒有這個限制。
5、災難恢復技術:災難恢復是所有大型公司必須考慮的問題,因為當一些意外發生時,比如:突然斷電,硬體損壞,洪水,地震,等一系列情況是,如何把災難所造成的數據損失降到最低甚至是不損失。這要依靠第六條技術。
6、虛擬快照技術:虛擬快照技術是將虛擬機此時的狀態像照片一樣保存下來,當然我說的很容易,其實現原理需要非常復雜,包括cpu運行狀態,內存中的數據等等。這樣保存下這些虛擬技術當發生災難或者某些失誤導致虛擬機出問題時,可以很快恢復。
7、改善系統可用性。這里的可用性只得是零 down機,在這種情況下我們才可以使得效率最大化。而零down機的前提是每台伺服器必須要有一個鏡像,在主虛擬機和次虛擬機之間有一條心跳線來維持兩者之間的關系,當心跳線停止時,次虛擬機立馬啟動,代替主虛擬機。
8、安全性:我們直到虛擬化在硬體層上都有一層VMM來時時刻刻偵測每台虛擬機的動向,包括捕獲異常,解決門事件,完成調度等等。所以當一些危險因素來臨時由於VMM的存在使得我們可以非常快的偵測到這個問題並解決它。這能比以前的硬體層上面直接是操作系統快速很多。
D. 虛擬化技術都包含什麼內容
虛擬化技術簡介
什麼是虛擬化
虛擬化(Virtualization)技術最早出現在 20 世紀 60 年代的 IBM 大型機系統,在70年代的 System 370 系列中逐漸流行起來,這些機器通過一種叫虛擬機監控器(Virtual Machine Monitor,VMM)的程序在物理硬體之上生成許多可以運行獨立操作系統軟體的虛擬機(Virtual Machine)實例。隨著近年多核系統、集群、網格甚至雲計算的廣泛部署,虛擬化技術在商業應用上的優勢日益體現,不僅降低了 IT 成本,而且還增強了系統安全性和可靠性,虛擬化的概念也逐漸深入到人們日常的工作與生活中。
虛擬化是一個廣義的術語,對於不同的人來說可能意味著不同的東西,這要取決他們所處的環境。在計算機科學領域中,虛擬化代表著對計算資源的抽象,而不僅僅局限於虛擬機的概念。例如對物理內存的抽象,產生了虛擬內存技術,使得應用程序認為其自身擁有連續可用的地址空間(Address Space),而實際上,應用程序的代碼和數據可能是被分隔成多個碎片頁或段),甚至被交換到磁碟、快閃記憶體等外部存儲器上,即使物理內存不足,應用程序也能順利執行。
虛擬化技術的分類
虛擬化技術主要分為以下幾個大類 [1]:
平台虛擬化(Platform Virtualization),針對計算機和操作系統的虛擬化。
資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,比如內存、存儲、網路資源等。
應用程序虛擬化(Application Virtualization),包括模擬、模擬、解釋技術等。
我們通常所說的虛擬化主要是指平台虛擬化技術,通過使用控製程序(Control Program,也被稱為 Virtual Machine Monitor 或 Hypervisor),隱藏特定計算平台的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境(稱為虛擬機)。虛擬機中運行的操作系統被稱為客戶機操作系統(Guest OS),運行虛擬機監控器的操作系統被稱為主機操作系統(Host OS),當然某些虛擬機監控器可以脫離操作系統直接運行在硬體之上(如 VMWARE 的 ESX 產品)。運行虛擬機的真實系統我們稱之為主機系統。
平台虛擬化技術又可以細分為如下幾個子類:
全虛擬化(Full Virtualization)
全虛擬化是指虛擬機模擬了完整的底層硬體,包括處理器、物理內存、時鍾、外設等,使得為原始硬體設計的操作系統或其它系統軟體完全不做任何修改就可以在虛擬機中運行。操作系統與真實硬體之間的交互可以看成是通過一個預先規定的硬體介面進行的。全虛擬化 VMM 以完整模擬硬體的方式提供全部介面(同時還必須模擬特權指令的執行過程)。舉例而言,x86 體系結構中,對於操作系統切換進程頁表的操作,真實硬體通過提供一個特權 CR3 寄存器來實現該介面,操作系統只需執行 "mov pgtable,%%cr3" 匯編指令即可。全虛擬化 VMM 必須完整地模擬該介面執行的全過程。如果硬體不提供虛擬化的特殊支持,那麼這個模擬過程將會十分復雜:一般而言,VMM 必須運行在最高優先順序來完全控制主機系統,而 Guest OS 需要降級運行,從而不能執行特權操作。當 Guest OS 執行前面的特權匯編指令時,主機系統產生異常(General Protection Exception),執行控制權重新從 Guest OS 轉到 VMM 手中。VMM 事先分配一個變數作為影子 CR3 寄存器給 Guest OS,將 pgtable 代表的客戶機物理地址(Guest Physical Address)填入影子 CR3 寄存器,然後 VMM 還需要 pgtable 翻譯成主機物理地址(Host Physical Address)並填入物理 CR3 寄存器,最後返回到 Guest OS中。隨後 VMM 還將處理復雜的 Guest OS 缺頁異常(Page Fault)。比較著名的全虛擬化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。
超虛擬化(Paravirtualization)
這是一種修改 Guest OS 部分訪問特權狀態的代碼以便直接與 VMM 交互的技術。在超虛擬化虛擬機中,部分硬體介面以軟體的形式提供給客戶機操作系統,這可以通過 Hypercall(VMM 提供給 Guest OS 的直接調用,與系統調用類似)的方式來提供。例如,Guest OS 把切換頁表的代碼修改為調用 Hypercall 來直接完成修改影子 CR3 寄存器和翻譯地址的工作。由於不需要產生額外的異常和模擬部分硬體執行流程,超虛擬化可以大幅度提高性能,比較著名的 VMM 有 Denali、Xen。
硬體輔助虛擬化(Hardware-Assisted Virtualization)
硬體輔助虛擬化是指藉助硬體(主要是主機處理器)的支持來實現高效的全虛擬化。例如有了 Intel-VT 技術的支持,Guest OS 和 VMM 的執行環境自動地完全隔離開來,Guest OS 有自己的「全套寄存器」,可以直接運行在最高級別。因此在上面的例子中,Guest OS 能夠執行修改頁表的匯編指令。Intel-VT 和 AMD-V 是目前 x86 體系結構上可用的兩種硬體輔助虛擬化技術。
部分虛擬化(Partial Virtualization)
VMM 只模擬部分底層硬體,因此客戶機操作系統不做修改是無法在虛擬機中運行的,其它程序可能也需要進行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑,最早出現在第一代的分時系統 CTSS 和 IBM M44/44X 實驗性的分頁系統中。
操作系統級虛擬化(Operating System Level Virtualization)
在傳統操作系統中,所有用戶的進程本質上是在同一個操作系統的實例中運行,因此內核或應用程序的缺陷可能影響到其它進程。操作系統級虛擬化是一種在伺服器操作系統中使用的輕量級的虛擬化技術,內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不了解對方的存在。比較著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。
這種分類並不是絕對的,一個優秀的虛擬化軟體往往融合了多項技術。例如 VMware Workstation 是一個著名的全虛擬化的 VMM,但是它使用了一種被稱為動態二進制翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的 Trap-And-Emulate 的處理方式,這與超虛擬化相似,只不過超虛擬化是靜態地修改程序代碼。對於超虛擬化而言,如果能利用硬體特性,那麼虛擬機的管理將會大大簡化,同時還能保持較高的性能。
本文討論的虛擬化技術只針對 x86 平台(含 AMD 64),並假定虛擬機中運行的 Guest OS 也是為 x86 平台設計的。
--------------------------------------------------------------------------------
回頁首
純軟體虛擬化技術的原理及面臨的挑戰
虛擬機監控器應當具備的條件
1974 年,Popek 和 Goldberg 在《Formal Requirements for Virtualizable Third Generation Architectures》[3] 論文中提出了一組稱為虛擬化准則的充分條件,滿足這些條件的控製程序可以被稱為虛擬機監控器(Virtual Machine Monitor,簡稱 VMM):
資源控制。控製程序必須能夠管理所有的系統資源。
等價性。在控製程序管理下運行的程序(包括操作系統),除時序和資源可用性之外的行為應該與沒有控製程序時的完全一致,且預先編寫的特權指令可以自由地執行。
效率性。絕大多數的客戶機指令應該由主機硬體直接執行而無需控製程序的參與。
盡管基於簡化的假設,但上述條件仍為評判一個計算機體系結構是否能夠有效支持虛擬化提供了一個便利方法,也為設計可虛擬化計算機架構給出了指導原則。
原理簡介
我們知道,傳統的 x86 體系結構缺乏必要的硬體支持,任何虛擬機監控器都無法直接滿足上述條件,所以不是一個可虛擬化架構,但是我們可以使用純軟體實現的方式構造虛擬機監控器。
虛擬機是對真實計算環境的抽象和模擬,VMM 需要為每個虛擬機分配一套數據結構來管理它們狀態,包括虛擬處理器的全套寄存器,物理內存的使用情況,虛擬設備的狀態等等。VMM 調度虛擬機時,將其部分狀態恢復到主機系統中。並非所有的狀態都需要恢復,例如主機 CR3 寄存器中存放的是 VMM 設置的頁表物理地址,而不是 Guest OS 設置的值。主機處理器直接運行 Guest OS 的機器指令,由於 Guest OS運行在低特權級別,當訪問主機系統的特權狀態(如寫 GDT 寄存器)時,許可權不足導致主機處理器產生異常,將運行權自動交還給 VMM。此外,外部中斷的到來也會導致 VMM 的運行。VMM 可能需要先將 該虛擬機的當前狀態寫回到狀態數據結構中,分析虛擬機被掛起的原因,然後代表 Guest OS 執行相應的特權操作。最簡單的情況,如Guest OS 對 CR3 寄存器的修改,只需要更新虛擬機的狀態數據結構即可。一般而言,大部分情況下,VMM 需要經過復雜的流程才能完成原本簡單的操作。最後 VMM 將運行權還給 Guest OS,Guest OS 從上次被中斷的地方繼續執行,或處理 VMM 「塞」入的虛擬中斷和異常。這種經典的虛擬機運行方式被稱為 Trap-And-Emulate,虛擬機對於 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設計會比較復雜,系統整體性能受到明顯的損害。
面臨的挑戰
在設計純軟體 VMM 的時候,需要解決如下挑戰 [4]:
確保 VMM 控制所有的系統資源。
x86 處理器有 4 個特權級別,Ring 0 ~ Ring 3,只有運行在 Ring 0 ~ 2 級時,處理器才可以訪問特權資源或執行特權指令;運行在 Ring 0 級時,處理器可以訪問所有的特權狀態。x86 平台上的操作系統一般只使用 Ring 0 和 Ring 3 這兩個級別,操作系統運行在 Ring 0 級,用戶進程運行在 Ring 3 級。為了滿足上面的第一個充分條件-資源控制,VMM 自己必須運行在 Ring 0 級,同時為了避免 Guest OS 控制系統資源,Guest OS 不得不降低自身的運行級別,運行在 Ring 1 或 Ring 3 級(Ring 2 不使用)。
特權級壓縮(Ring Compression)。
VMM 使用分頁或段限制的方式保護物理內存的訪問,但是 64 位模式下段限制不起作用,而分頁又不區分 Ring 0, 1, 2。為了統一和簡化 VMM的設計,Guest OS 只能和 Guest 進程一樣運行在 Ring 3 級。VMM 必須監視 Guest OS 對 GDT、IDT 等特權資源的設置,防止 Guest OS 運行在 Ring 0級,同時又要保護降級後的 Guest OS 不受 Guest 進程的主動攻擊或無意破壞。
特權級別名(Ring Alias)。
特權級別名是指 Guest OS 在虛擬機中運行的級別並不是它所期望的。VMM 必須保證 Guest OS 不能獲知正在虛擬機中運行這一事實,否則可能打破等價性條件。例如,x86 處理器的特權級別存放在 CS 代碼段寄存器內,Guest OS 可以使用非特權 push 指令將 CS 寄存器壓棧,然後 pop 出來檢查該值。又如,Guest OS 在低特權級別時讀取特權寄存器 GDT、LDT、IDT 和 TR,並不發生異常,從而可能發現這些值與自己期望的不一樣。為了解決這個挑戰,VMM 可以使用動態二進制翻譯的技術,例如預先把 「push %%cs」 指令替換,在棧上存放一個影子 CS 寄存器值;又如,可以把讀取 GDT 寄存器的操作「sgdt dest」改為「movl fake_gdt, dest」。
地址空間壓縮(Address Space Compression)。
地址空間壓縮是指 VMM 必須在Guest OS 的地址空間中保留一部分供其使用。例如,中斷描述表寄存器(IDT Register)中存放的是中斷描述表的線性地址,如果 Guest OS 運行過程中來了外部中斷或觸發處理器異常,必須保證運行權馬上轉移到 VMM 中,因此 VMM 需要將 Guest OS 的一部分線性地址空間映射成自己的中斷描述表的主機物理地址。VMM 可以完全運行在 Guest OS 的地址空間中,也可以擁有獨立的地址空間,後者的話,VMM 只佔用 Guest OS 很少的地址空間,用於存放中斷描述表和全局描述符表(GDT)等重要的特權狀態。無論如何哪種情況,VMM 應該防止 Guest OS 直接讀取和修改這部分地址空間。
處理 Guest OS 的缺頁異常。
內存是一種非常重要的系統資源,VMM 必須全權管理,Guest OS 理解的物理地址只是客戶機物理地址(Guest Physical Address),並不是最終的主機物理地址(Host Physical Address)。當 Guest OS 發生缺頁異常時,VMM 需要知道缺頁異常的原因,是 Guest 進程試圖訪問沒有許可權的地址,或是客戶機線性地址(Guest Linear Address)尚未翻譯成 Guest Physical Address,還是客戶機物理地址尚未翻譯成主機物理地址。一種可行的解決方法是 VMM 為 Guest OS 的每個進程的頁表構造一個影子頁表,維護 Guest Linear Address 到 Host Physical Address 的映射,主機 CR3 寄存器存放這個影子頁表的物理內存地址。VMM 同時維護一個 Guest OS 全局的 Guest Physical Address 到 Host Physical Address 的映射表。發生缺頁異常的地址總是Guest Linear Address,VMM 先去 Guest OS 中的頁表檢查原因,如果頁表項已經建立,即對應的Guest Physical Address 存在,說明尚未建立到 Host Physical Address的映射,那麼 VMM 分配一頁物理內存,將影子頁表和映射表更新;否則,VMM 返回到 Guest OS,由 Guest OS 自己處理該異常。
處理 Guest OS 中的系統調用。
系統調用是操作系統提供給用戶的服務常式,使用非常頻繁。最新的操作系統一般使用 SYSENTER/SYSEXIT 指令對來實現快速系統調用。SYSENTER 指令通過IA32_SYSENTER_CS,IA32_SYSENTER_EIP 和 IA32_SYSENTER_ESP 這 3 個 MSR(Model Specific Register)寄存器直接轉到 Ring 0級;而 SYSEXIT 指令不在 Ring 0 級執行的話將觸發異常。因此,如果 VMM 只能採取 Trap-And-Emulate 的方式處理這 2 條指令的話,整體性能將會受到極大損害。
轉發虛擬的中斷和異常。
所有的外部中斷和主機處理器的異常直接由 VMM 接管,VMM 構造必需的虛擬中斷和異常,然後轉發給 Guest OS。VMM 需要模擬硬體和操作系統對中斷和異常的完整處理流程,例如 VMM 先要在 Guest OS 當前的內核棧上壓入一些信息,然後找到 Guest OS 相應處理常式的地址,並跳轉過去。VMM 必須對不同的 Guest OS 的內部工作流程比較清楚,這增加了 VMM 的實現難度。同時,Guest OS 可能頻繁地屏蔽中斷和啟用中斷,這兩個操作訪問特權寄存器 EFLAGS,必須由 VMM 模擬完成,性能因此會受到損害。 Guest OS 重新啟用中斷時,VMM 需要及時地獲知這一情況,並將積累的虛擬中斷轉發。
Guest OS 頻繁訪問特權資源。
Guest OS對特權資源的每次訪問都會觸發處理器異常,然後由 VMM 模擬執行,如果訪問過於頻繁,則系統整體性能將會受到極大損害。比如對中斷的屏蔽和啟用,cli(Clear Interrupts)指令在 Pentium 4 處理器上需要花費 60 個時鍾周期(cycle)。又如,處理器本地高級可編程中斷處理器(Local APIC)上有一個操作系統可修改的任務優先順序寄存器(Task-Priority Register),IO-APIC 將外部中斷轉發到 TPR 值最低的處理器上(期望該處理器正在執行低優先順序的線程),從而優化中斷的處理。TPR 是一個特權寄存器,某些操作系統會頻繁設置(Linux Kernel只在初始化階段為每個處理器的 TPR 設置相同的值)。
軟體 VMM 所遇到的以上挑戰從本質上來說是因為 Guest OS 無法運行在它所期望的最高特權級,傳統的 Trap-And-Emulate 處理方式雖然以透明的方式基本解決上述挑戰,但是帶來極大的設計復雜性和性能下降。當前比較先進的虛擬化軟體結合使用二進制翻譯和超虛擬化的技術,核心思想是動態或靜態地改變 Guest OS 對特權狀態訪問的操作,盡量減少產生不必要的硬體異常,同時簡化 VMM 的設計。
--------------------------------------------------------------------------------
回頁首
Intel-VT 硬體輔助虛擬化技術詳解
2005 年冬天,英特爾帶來了業內首個面向台式機的硬體輔助虛擬化技術 Intel-VT 及相關的處理器產品,從而拉開了 IA 架構虛擬化技術應用的新時代大幕。支持虛擬化技術的處理器帶有特別優化過的指令集來自動控制虛擬化過程,從而極大簡化 VMM 的設計,VMM 的性能也能得到很大提高。其中 IA-32 處理器的虛擬化技術稱為 VT-x,安騰處理器的虛擬化技術稱為 VT-i。AMD 公司也推出了自己的虛擬化解決方案,稱為 AMD-V。盡管 Intel-VT 和 AMD-V 並不完全相同,但是基本思想和數據結構卻是相似的,本文只討論 Intel-VT-x 技術。
新增的兩種操作模式
VT-x 為 IA 32 處理器增加了兩種操作模式:VMX root operation 和 VMX non-root operation。VMM 自己運行在 VMX root operation 模式,VMX non-root operation 模式則由 Guest OS 使用。兩種操作模式都支持 Ring 0 ~ Ring 3 這 4 個特權級,因此 VMM 和 Guest OS 都可以自由選擇它們所期望的運行級別。
這兩種操作模式可以互相轉換。運行在 VMX root operation 模式下的 VMM 通過顯式調用 VMLAUNCH 或 VMRESUME 指令切換到 VMX non-root operation 模式,硬體自動載入 Guest OS的上下文,於是 Guest OS 獲得運行,這種轉換稱為 VM entry。Guest OS 運行過程中遇到需要 VMM 處理的事件,例如外部中斷或缺頁異常,或者主動調用 VMCALL 指令調用 VMM 的服務的時候(與系統調用類似),硬體自動掛起 Guest OS,切換到 VMX root operation 模式,恢復 VMM 的運行,這種轉換稱為 VM exit。VMX root operation 模式下軟體的行為與在沒有 VT-x 技術的處理器上的行為基本一致;而VMX non-root operation 模式則有很大不同,最主要的區別是此時運行某些指令或遇到某些事件時,發生 VM exit。
虛擬機控制塊
VMM 和 Guest OS 共享底層的處理器資源,因此硬體需要一個物理內存區域來自動保存或恢復彼此執行的上下文。這個區域稱為虛擬機控制塊(VMCS),包括客戶機狀態區(Guest State Area),主機狀態區(Host State Area)和執行控制區。VM entry 時,硬體自動從客戶機狀態區載入 Guest OS 的上下文。並不需要保存 VMM 的上下文,原因與中斷處理程序類似,因為 VMM 如果開始運行,就不會受到 Guest OS的干擾,只有 VMM 將工作徹底處理完畢才可能自行切換到 Guest OS。而 VMM 的下次運行必然是處理一個新的事件,因此每次 VMM entry 時, VMM 都從一個通用事件處理函數開始執行;VM exit 時,硬體自動將 Guest OS 的上下文保存在客戶機狀態區,從主機狀態區中載入 VMM 的通用事件處理函數的地址,VMM 開始執行。而執行控制區存放的則是可以操控 VM entry 和 exit 的標志位,例如標記哪些事件可以導致 VM exit,VM entry 時准備自動給 Guest OS 「塞」入哪種中斷等等。
客戶機狀態區和主機狀態區都應該包含部分物理寄存器的信息,例如控制寄存器 CR0,CR3,CR4;ESP 和 EIP(如果處理器支持 64 位擴展,則為 RSP,RIP);CS,SS,DS,ES,FS,GS 等段寄存器及其描述項;TR,GDTR,IDTR 寄存器;IA32_SYSENTER_CS,IA32_SYSENTER_ESP,IA32_SYSENTER_EIP 和 IA32_PERF_GLOBAL_CTRL 等 MSR 寄存器。客戶機狀態區並不包括通用寄存器的內容,VMM 自行決定是否在 VM exit 的時候保存它們,從而提高了系統性能。客戶機狀態區還包括非物理寄存器的內容,比如一個 32 位的 Active State 值表明 Guest OS 執行時處理器所處的活躍狀態,如果正常執行指令就是處於 Active 狀態,如果觸發了三重故障(Triple Fault)或其它嚴重錯誤就處於 Shutdown 狀態,等等。
前文已經提過,執行控制區用於存放可以操控 VM entry 和 VM exit 的標志位,包括:
External-interrupt exiting:用於設置是否外部中斷可以觸發 VM exit,而不論 Guest OS 是否屏蔽了中斷。
Interrupt-window exiting:如果設置,當 Guest OS 解除中斷屏蔽時,觸發 VM exit。
Use TPR shadow:通過 CR8 訪問 Task Priority Register(TPR)的時候,使用 VMCS 中的影子 TPR,可以避免觸發 VM exit。同時執行控制區還有一個 TPR 閾值的設置,只有當 Guest OS 設置的 TR 值小於該閾值時,才觸發 VM exit。
CR masks and shadows:每個控制寄存器的每一位都有對應的掩碼,控制 Guest OS 是否可以直接寫相應的位,或是觸發 VM exit。同時 VMCS 中包括影子控制寄存器,Guest OS 讀取控制寄存器時,硬體將影子控制寄存器的值返回給 Guest OS。
VMCS 還包括一組點陣圖以提供更好的適應性:
Exception bitmap:選擇哪些異常可以觸發 VM exit,
I/O bitmap:對哪些 16 位的 I/O 埠的訪問觸發 VM exit。
MSR bitmaps:與控制寄存器掩碼相似,每個 MSR 寄存器都有一組「讀」的點陣圖掩碼和一組「寫」的點陣圖掩碼。
每次發生 VM exit時,硬體自動在 VMCS 中存入豐富的信息,方便 VMM 甄別事件的種類和原因。VM entry 時,VMM 可以方便地為 Guest OS 注入事件(中斷和異常),因為 VMCS 中存有 Guest OS 的中斷描述表(IDT)的地址,因此硬體能夠自動地調用 Guest OS 的處理程序。
更詳細的信息請參閱 Intel 開發手冊 [5]。
解決純軟體虛擬化技術面臨的挑戰
首先,由於新的操作模式的引入,VMM 和 Guest OS 的執行由硬體自動隔離開來,任何關鍵的事件都可以將系統控制權自動轉移到 VMM,因此 VMM 能夠完全控制系統的全部資源。
其次,Guest OS 可以運行在它所期望的最高特權級別,因此特權級壓縮和特權級別名的問題迎刃而解,而且 Guest OS 中的系統調用也不會觸發 VM exit。
硬體使用物理地址訪問虛擬機控制塊(VMCS),而 VMCS 保存了 VMM 和 Guest OS 各自的 IDTR 和 CR3 寄存器,因此 VMM 可以擁有獨立的地址空間,Guest OS 能夠完全控制自己的地址空間,地址空間壓縮的問題也不存在了。
中斷和異常虛擬化的問題也得到了很好的解決。VMM 只用簡單地設置需要轉發的虛擬中斷或異常,在 VM entry 時,硬體自動調用 Guest OS 的中斷和異常處理程序,大大簡化 VMM 的設計。同時,Guest OS 對中斷的屏蔽及解除可以不觸發 VM exit,從而提高了性能。而且 VMM 還可以設置當 Guest OS 解除中斷屏蔽時觸發 VM exit,因此能夠及時地轉發積累的虛擬中斷和異常。
--------------------------------------------------------------------------------
回頁首
未來虛擬化技術的發展
我們可以看到,硬體輔助虛擬化技術必然是未來的方向。Intel-VT目前還處在處理器級虛擬化技術的初級階段,尚需在如下方面進行發展:
提高操作模式間的轉換速度。
兩種操作模式間的轉換發生之如此頻繁,如果不能有效減少其轉換速度,即使充分利用硬體特性,虛擬機的整體性能也會大打折扣。早期的支持硬體輔助虛擬化技術的 Pentium 4 處理器需要花費 2409 個時鍾周期處理 VM entry,花費 508 個時鍾周期處理由缺頁異常觸發的 VM exit,代價相當高。隨著 Intel 技術的不斷完善,在新的 Core 架構上,相應時間已經減少到 937 和 446 個時鍾周期。未來硬體廠商還需要進一步提高模式的轉換速度,並提供更多的硬體特性來減少不必要的轉換。
優化翻譯後援緩沖器(TLB)的性能。
每次 VM entry 和 VM exit 發生時,由於需要重新載入 CR3 寄存器,因此 TLB(Translation Lookaside Buffer)被完全清空。虛擬化系統中操作模式的轉換發生頻率相當高,因此系統的整體性能受到明顯損害。一種可行的方案是為 VMM 和每個虛擬機分配一個全局唯一 ID,TLB 的每一項附加該 ID 信息來索引線性地址的翻譯。
提供內存管理單元(MMU)虛擬化的硬體支持。
即使使用 Intel-VT 技術,VMM 還是得用老辦法來處理 Guest OS 中發生的缺頁異常以及Guest OS 的客戶機物理地址到主機物理地址的翻譯,本質原因是 VMM 完全控制主機物理內存,因此 Guest OS 中的線性地址的翻譯同時牽涉到 VMM 和 Guest OS 的地址空間,而硬體只能看到其中的一個。Intel 和 AMD 提出了各自的解決方案,分別叫做 EPT(Extended Page Table)和 Nested Paging。這兩種技術的基本思想是,無論何時遇到客戶機物理地址,硬體自動搜索 VMM 提供的關於該 Guest OS 的一個頁表,翻譯成主機物理地址,或產生缺頁異常來觸發 VM exit。
支持高效的 I/O 虛擬化。
I/O 虛擬化需要考慮性能、可用性、可擴展性、可靠性和成本等多種因素。最簡單的方式是 VMM為虛擬機模擬一個常見的 I/O 設備,該設備的功能由 VMM 用軟體或復用主機 I/O 設備的方法實現。例如 Virtual PC 虛擬機提供的是一種比較古老的 S3 Trio64顯卡。這種方式提高了兼容性,並充分利用 Guest OS 自帶的設備驅動程序,但是虛擬的 I/O 設備功能有限且性能低下。為了提高性能,VMM 可以直接將主機 I/O 設備分配給虛擬機,這會帶來兩個主要挑戰:1. 如果多個虛擬機可以復用同一個設備,VMM 必須保證它們對設備的訪問不會互相干擾。2. 如果 Guest OS 使用 DMA 的方式訪問 I/O 設備,由於 Guest OS 給出的地址並不是主機物理地址,VMM 必須保證在啟動 DMA 操作前將該地址正確轉換。Intel 和 AMD 分別提出了各自的解決方案,分別稱為 Direct I/O(VT-d)和 IOMMU,希望用硬體的手段解決這些問題,降低 VMM 實現的難度。
E. 存儲虛擬化的問題
據統計,存儲數據量的年增長率達50%~60%。面對新的應用,以及不斷增加的存儲容量,企業用戶需要借用虛擬技術來降低管理的復雜性,提高效率。但是隨著存儲技術的發展,用戶對於數據的需求增加,為什麼虛擬存儲技術沒有完全普及呢?這還要從虛擬存儲技術面臨的困難說起。
目前,企業用戶面臨的最大壓力是什麼?一是存儲數據的成本在不斷地增加;二是數據存儲容量爆炸性增長;三是越來越復雜的環境使得存儲的數據無法管理。周所周知,虛擬化有三種方式實現,基於伺服器、基於存儲以及基於網路。基於存儲的虛擬化手段,目的就是面向用戶的應用進行優化。存儲虛擬化首先要解決的難題就是異構平台的數據管理問題。存儲虛擬化可以把用戶不同的存儲系統融合成單一的平台,解決數據管理難題,並通過分級存儲實現信息的生命周期管理,從而進一步優化應用環境。
虛擬存儲技術最受關注的問題是數據安全問題。因為虛擬存儲把所有數據都放在了一個系統環境下,這就相當於把雞蛋都放在一個籃子里,一旦打翻,所有雞蛋都會損失。所以一旦數據被存放進虛擬存儲環境中,就不能被輕易刪除。這無疑加大了數據的風險,在安全投資上也要相應加大。
虛擬存儲的第二個問題在於忽視了我國龐大的中小企業需求。目前的虛擬存儲技術大部分都是專注於高端用戶的,這些用戶存儲系統龐大,不僅設備多,所採用的軟體也很復雜,在這種情況下,虛擬存儲技術可以帶來管理,成本上的諸多優勢。但是目前我國中小企業已經成為企業市場的主力軍,不針對中小企業用戶的需求推廣虛擬存儲技術,使該技術的發展變得緩慢了。
阻礙存儲虛擬化產品的因素還有一個就是價格,這也正是由於專注於高端市場帶來的弊端。對於多數的中小企業用戶面臨存儲空間不足,直接買大容量硬碟來解決存儲上的問題,即使在存儲空間上有所浪費,但相比使用虛擬化存儲架構,大容量的硬碟還是比較合算,此外中小企業存儲系統不復雜,管理起來也沒有太大難度,這些都導致虛擬存儲技術在普及上存在著一定的困難。
一款存儲虛擬化產品只能對有限的存儲空間起作用。擴展性和性能哪個更為重要,要根據實際的情況來分析。在部署產品之前要進行系統測試。在剛部署完成的初期,擴展性問題也許不會顯現出來。因此提前對擴展性進行評估可以幫助用戶選擇正確的產品。
基於陣列的存儲虛擬化產品只是對自己廠家的產品有效。基於主機或者光纖的存儲虛擬化產品也是對某些特定廠家的軟體或者設備有效。用戶需要檢查存儲虛擬化產品是否跟自己當前的存儲環境兼容。
綜上所述,虛擬存儲技術不僅在存儲廠商是熱門話題,而且在用戶中對於存儲虛擬化技術呼聲越來越高,隨著人們對於數據安全性、完整性的要求提高,存儲系統已經成為IT應用中的重要環節,存儲系統的復雜化,存儲系統的管理也成為難點,相信在不久的將來虛擬存儲技術在克服了面臨的困難後,會給企業用戶存儲系統的效率的提高,系統安全穩定的運行,減少總體擁有成本,增加投資回報等方面有效的實現。
F. 在提供虛擬存儲的系統中,用戶的邏輯地址空間主要受什麼的限制
在提供虛擬存儲的系統中,用戶的邏輯地址空間主要受計算機編址范圍的限制。
將多個不同類型、獨立存在的物理存儲體,通過軟、硬體技術,集成轉化為一個邏輯上的虛擬的存儲單元,集中管理供用戶統一使用。
這個虛擬邏輯存儲單元的存儲容量是它所集中管理的各物理存儲體的存儲量的總和,而它具有的訪問帶寬則在一定程度上接近各個物理存儲體的訪問帶寬之和。
(6)信息系統虛擬化存儲擴展閱讀:
對物理存儲設備進行邏輯化的處理,並將統一的邏輯視圖呈現給用戶。因此,用戶在使用時,操作的是虛擬設備,無需關心底層的物理環境。因而,可以充分利用基於異構平台的存儲空間,達到最優化的使用效率。
數據塊虛擬存儲方案利用虛擬的多埠並行技術,為多台客戶機提供了極高的帶寬,最大限度上減少了延時與沖突的發生,在實際應用中,數據塊虛擬存儲方案以對稱式拓撲結構為表現形式。
G. 什麼是虛擬化技術,為什麼要虛擬化技術
一.什麼是虛擬化?
簡單來講,虛擬化就是為一些組件創建虛擬(而不是物理)版本的過程。虛擬化可以應用到計算機、操作系統、存儲設備、應用或網路。但是,伺服器虛擬化才是虛擬化的核心。 現如今的 x86 伺服器的設計存在局限性,每次只能運行一個操作系統和應用,這為 IT 部門帶來了挑戰。因此,即使是小型數據中心也必須部署大量伺服器,而每台伺服器的容量利用率只有 5% 到 15%,無論以哪種標准來衡量,都十分的低效。
虛擬化使用軟體來模擬硬體並創建虛擬計算機系統。這樣一來,企業便可以在單台伺服器上運行多個虛擬系統,也就是運行多個操作系統和應用,而這可以實現規模經濟以及提高效益。
二.為什麼要虛擬化?
虛擬化技術能為我們解決很多以前解決不了的技術:
1、伺服器整合技術:這個技術在沒有虛擬化技術之前是很難完成的。因為什麼東西都是實際存在的,想把兩個工作相對較少的伺服器整合到一起是很困難的。然而當有了虛擬化技術以後使這種伺服器整合技術變得非常容易。而這個技術需要藉助我下面介紹的2、3條技術。
2、負載均衡技術:
負載均衡技術是只在每台伺服器上安裝一個負載均衡器,然後設置很多的調度演算法及臨界值。來判斷此時此刻伺服器的壓力是輕還是重。然後根據輕重來完成伺服器的合並,而合並又依據了第三條技術。
3、動態遷移技術:這個技術是前兩個技術的根基,但是卻不只僅僅限於前兩個技術。它的目的是可以在伺服器開啟的狀態下,把其上面的虛擬機遷移到其他的伺服器上面。工作原理大體是先將目標伺服器上模擬出此伺服器的硬體狀態,然後遷移數據,最後釋放此伺服器的信息。
4、克隆技術:這個技術說起來和上面那個技術很像,但是卻不一樣。克隆技術是把一台伺服器的環境配置好了後可以通過克隆技術使其他的機子都達到和這台機子一樣的效果,假如要配置100台甚至1000台伺服器的話這種克隆技術是非常可觀的。它和動態遷移的區別是在伺服器不停機的狀態下,動態遷移要求遷移的彼此必須是共享內存的,但是克隆並沒有這個限制。
5、災難恢復技術:災難恢復是所有大型公司必須考慮的問題,因為當一些意外發生時,比如:突然斷電,硬體損壞,洪水,地震,等一系列情況是,如何把災難所造成的數據損失降到最低甚至是不損失。這要依靠第六條技術。
6、虛擬快照技術:虛擬快照技術是將虛擬機此時的狀態像照片一樣保存下來,當然我說的很容易,其實現原理需要非常復雜,包括cpu運行狀態,內存中的數據等等。這樣保存下這些虛擬技術當發生災難或者某些失誤導致虛擬機出問題時,可以很快恢復。
7、改善系統可用性。這里的可用性只得是零 down機,在這種情況下我們才可以使得效率最大化。而零down機的前提是每台伺服器必須要有一個鏡像,在主虛擬機和次虛擬機之間有一條心跳線來維持兩者之間的關系,當心跳線停止時,次虛擬機立馬啟動,代替主虛擬機。
8、安全性:我們直到虛擬化在硬體層上都有一層VMM來時時刻刻偵測每台虛擬機的動向,包括捕獲異常,解決門事件,完成調度等等。所以當一些危險因素來臨時由於VMM的存在使得我們可以非常快的偵測到這個問題並解決它。這能比以前的硬體層上面直接是操作系統快速很多。
H. 簡述虛擬化存儲技術的三種實現方法及工作原理
從系統的觀點看,有三種主要的存儲虛擬化方法:
基於主機的虛擬存儲;
基於存儲設備的虛擬存儲;
基於網路的虛擬存儲。
方法1:基於主機的虛擬存儲
基於主機的虛擬存儲依賴於代理或管理軟體,它們安裝在一個或多個主機上,實現存儲虛擬化的控制和管理。由於控制軟體是運行在主機上,這就會佔用主機的處理時間。因此,這種方法的可擴充性較差,實際運行的性能不是很好。基於主機的方法也有可能影響到系統的穩定性和安全性,因為有可能導致不經意間越權訪問到受保護的數據。這種方法要求在主機上安裝適當的控制軟體,因此一個主機的故障可能影響整個SAN系統中數據的完整性。軟體控制的存儲虛擬化還可能由於不同存儲廠商軟硬體的差異而帶來不必要的互操作性開銷,所以這種方法的靈活性也比較差。
但是,因為不需要任何附加硬體,基於主機的虛擬化方法最容易實現,其設備成本最低。使用這種方法的供應商趨向於成為存儲管理領域的軟體廠商,而且目前已經有成熟的軟體產品。這些軟體可以提供便於使用的圖形介面,方便地用於SAN的管理和虛擬化,在主機和小型SAN結構中有著良好的負載平衡機制。從這個意義上看,基於主機的存儲虛擬化是一種性價比不錯的方法。
方法2:基於存儲設備的虛擬化
基於存儲設備的存儲虛擬化方法依賴於提供相關功能的存儲模塊。如果沒有第三方的虛擬軟體,基於存儲的虛擬化經常只能提供一種不完全的存儲虛擬化解決方案。對於包含多廠商存儲設備的SAN存儲系統,這種方法的運行效果並不是很好。依賴於存儲供應商的功能模塊將會在系統中排斥JBODS(Just a Bunch of Disks,簡單的硬碟組)和簡單存儲設備的使用,因為這些設備並沒有提供存儲虛擬化的功能。當然,利用這種方法意味著最終將鎖定某一家單獨的存儲供應商。
基於存儲的虛擬化方法也有一些優勢:在存儲系統中這種方法較容易實現,容易和某個特定存儲供應商的設備相協調,所以更容易管理,同時它對用戶或管理人員都是透明的。但是,我們必須注意到,因為缺乏足夠的軟體進行支持,這就使得解決方案更難以客戶化(customzing)和監控。
方法3:基於網路的虛擬存儲
基於網路的虛擬化方法是在網路設備之間實現存儲虛擬化功能,具體有下面幾種方式:
1. 基於互聯設備的虛擬化
基於互聯設備的方法如果是對稱的,那麼控制信息和數據走在同一條通道上;如果是不對稱的,控制信息和數據走在不同的路徑上。在對稱的方式下,互聯設備可能成為瓶頸,但是多重設備管理和負載平衡機制可以減緩瓶頸的矛盾。同時,多重設備管理環境中,當一個設備發生故障時,也比較容易支持伺服器實現故障接替。但是,這將產生多個SAN孤島,因為一個設備僅控制與它所連接的存儲系統。非對稱式虛擬存儲比對稱式更具有可擴展性,因為數據和控制信息的路徑是分離的。
基於互聯設備的虛擬化方法能夠在專用伺服器上運行,使用標准操作系統,例如Windows、Sun Solaris、Linux或供應商提供的操作系統。這種方法運行在標准操作系統中,具有基於主機方法的諸多優勢--易使用、設備便宜。許多基於設備的虛擬化提供商也提供附加的功能模塊來改善系統的整體性能,能夠獲得比標准操作系統更好的性能和更完善的功能,但需要更高的硬體成本。
但是,基於設備的方法也繼承了基於主機虛擬化方法的一些缺陷,因為它仍然需要一個運行在主機上的代理軟體或基於主機的適配器,任何主機的故障或不適當的主機配置都可能導致訪問到不被保護的數據。同時,在異構操作系統間的互操作性仍然是一個問題。
3. 基於路由器的虛擬化
基於路由器的方法是在路由器固件上實現存儲虛擬化功能。供應商通常也提供運行在主機上的附加軟體來進一步增強存儲管理能力。在此方法中,路由器被放置於每個主機到存儲網路的數據通道中,用來截取網路中任何一個從主機到存儲系統的命令。由於路由器潛在地為每一台主機服務,大多數控制模塊存在於路由器的固件中,相對於基於主機和大多數基於互聯設備的方法,這種方法的性能更好、效果更佳。由於不依賴於在每個主機上運行的代理伺服器,這種方法比基於主機或基於設備的方法具有更好的安全性。當連接主機到存儲網路的路由器出現故障時,仍然可能導致主機上的數據不能被訪問。但是只有聯結於故障路由器的主機才會受到影響,其他主機仍然可以通過其他路由器訪問存儲系統。路由器的冗餘可以支持動態多路徑,這也為上述故障問題提供了一個解決方法。由於路由器經常作為協議轉換的橋梁,基於路由器的方法也可以在異構操作系統和多供應商存儲環境之間提供互操作性。