官术网_书友最值得收藏!

1.4 云計算關鍵技術

1.4.1 虛擬化技術

虛擬化(Virtualization)是指通過虛擬化技術將一臺物理計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率,如圖1-3所示。

虛擬化技術最早出現在20世紀60年代的IBM大型機系統,在70年代的System 370系列中逐漸流行起來,這些機器通過一種叫虛擬機監控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成許多可以運行獨立操作系統軟件的虛擬機(Virtual Machine)實例。隨著近年多核系統、群集、網格甚至云計算的廣泛部署,虛擬化技術在商業應用上的優勢日益體現,不僅降低了IT成本,而且還增強了系統安全性和可靠性,虛擬化的概念也逐漸深入到人們日常的工作與生活中。

圖1-3 虛擬化技術示意圖

虛擬化使用軟件的方法重新劃分 IT資源,可以實現 IT資源的動態分配、靈活調度、跨域共享,提高 IT資源利用率,使 IT資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求。

虛擬化是一個廣義的術語,對于不同的人來說可能意味著不同的東西,這要取決他們所處的環境。在計算機科學領域中,虛擬化代表著對計算資源的抽象,而不僅僅局限于虛擬機的概念。例如對物理內存的抽象,產生了虛擬內存技術,使得應用程序認為其自身擁有連續可用的地址空間(Address Space),而實際上,應用程序的代碼和數據可能是被分隔成多個碎片頁或段),甚至被交換到磁盤、閃存等外部存儲器上,即使物理內存不足,應用程序也能順利執行。

虛擬化技術主要分為以下幾個大類。

● 平臺虛擬化(Platform Virtualization),針對計算機和操作系統的虛擬化。

● 資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,例如內存、存儲、網絡資源等。

● 應用程序虛擬化(Application Virtualization),包括仿真、模擬、解釋技術等。

通常所說的虛擬化主要是指平臺虛擬化技術,通過使用控制程序(Control Program,也被稱為Virtual Machine Monitor或Hypervisor),隱藏特定計算平臺的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境(稱為虛擬機)。虛擬機中運行的操作系統被稱為客戶機操作系統(Guest OS),運行虛擬機監控器的操作系統被稱為主機操作系統(Host OS),當然某些虛擬機監控器可以脫離操作系統直接運行在硬件之上(如 VMware 的 ESX 產品)。運行虛擬機的真實系統通常稱之為主機系統。

平臺虛擬化技術又可以細分為以下幾個子類。

(1)全虛擬化(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。

(2)超虛擬化(Paravirtualization)。

這是一種修改Guest OS部分訪問特權狀態的代碼以便直接與VMM交互的技術。在超虛擬化虛擬機中,部分硬件接口以軟件的形式提供給客戶機操作系統,這可以通過 Hypercall(VMM提供給Guest OS的直接調用,與系統調用類似)的方式來提供。例如,Guest OS 把切換頁表的代碼修改為調用 Hypercall 來直接完成修改影子 CR3寄存器和翻譯地址的工作。由于不需要產生額外的異常和模擬部分硬件執行流程,超虛擬化可以大幅度提高性能,比較著名的VMM有Denali、Xen。

(3)硬件輔助虛擬化(Hardware Assisted Virtualization)。

硬件輔助虛擬化是指借助硬件(主要是主機處理器)的支持來實現高效的全虛擬化。例如有了Intel-VT(Intel公司的虛擬化技術)的支持,Guest OS和VMM的執行環境自動地完全隔離開來,Guest OS有自己的“全套寄存器”,可以直接運行在最高級別。因此在上面的例子中,Guest OS能夠執行修改頁表的匯編指令。Intel-VT和AMD-V(AMD公司的虛擬化技術)是目前x86體系結構上可用的兩種硬件輔助虛擬化技術。

(4)部分虛擬化(Partial Virtualization)。

VMM只模擬部分底層硬件,因此客戶機操作系統不做修改是無法在虛擬機中運行的,其他程序可能也需要進行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑,最早出現在第一代的分時系統CTSS和IBM M44/44X實驗性的分頁系統中。

(5)操作系統級虛擬化(Operating System Level Virtualization)。

在傳統操作系統中,所有用戶的進程本質上是在同一個操作系統的實例中運行,因此內核或應用程序的缺陷可能影響其他進程。操作系統級虛擬化是一種在服務器操作系統中使用的輕量級的虛擬化技術,內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不了解對方的存在。比較著名的有 Solaris Container(容器),FreeBSD Jail(FreeBSD操作系統層虛擬化技術)和OpenVZ(一種基于Linux內核和作業系統的操作系統級虛擬化技術)等。

這種分類并不是絕對的,一個優秀的虛擬化軟件往往融合了多項技術。例如 VMware Workstation 是一個著名的全虛擬化的 VMM,但是它使用了一種被稱為動態二進制翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的Trap-And-Emulate的處理方式,這與超虛擬化相似,只不過超虛擬化是靜態地修改程序代碼。對于超虛擬化而言,如果能利用硬件特性,那么虛擬機的管理將會大大簡化,同時還能保持較高的性能。

1.4.2 分布式海量數據存儲

云存儲是在云計算概念上延伸和發展出來的一個新的概念,是指通過群集應用、網格技術或分布式文件系統等功能,將網絡中大量不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。當云計算系統運算和處理的核心是大量數據的存儲和管理時,云計算系統中就需要配置大量的存儲設備,那么云計算系統就轉變成為一個云存儲系統,所以云存儲是一個以數據存儲和管理為核心的云計算系統。

云存儲中的存儲設備數量龐大且分布在不同地域,如何實現不同廠商、不同型號甚至于不同類型(如FC存儲和IP存儲)的多臺設備之間的邏輯卷管理、存儲虛擬化管理和多鏈路冗余管理將會是一個巨大的難題,這個問題得不到解決,存儲設備就會是整個云存儲系統的性能瓶頸,結構上也無法形成一個整體,而且還會帶來后期容量和性能擴展難等問題。

云存儲中的存儲設備數量龐大、分布地域廣造成的另外一個問題就是存儲設備運營管理問題。雖然這些問題對云存儲的使用者來講根本不需要關心,但對于云存儲的運營單位來講,卻必須要通過切實可行和有效的手段來解決集中管理難、狀態監控難、故障維護難、人力成本高等問題。因此,云存儲必須要具有一個高效的類似網絡管理軟件的集中管理平臺,可實現云存儲系統中設有存儲設備、服務器和網絡設備的集中管理和狀態監控。

1.4.3 海量數據管理技術

為保證高可用、高可靠和經濟性,云計算采用分布式存儲的方式來存儲數據,采用冗余存儲的方式來保證存儲數據的可靠性,即為同一份數據存儲多個副本。

另外,云計算系統需要同時滿足大量用戶的需求,并行地為大量用戶提供服務。因此,云計算的數據存儲技術必須具有高吞吐率和高傳輸率的特點。

云計算系統由大量服務器組成,同時為大量用戶服務,因此云計算系統采用分布式存儲的方式存儲數據,用冗余存儲的方式保證數據的可靠性。云計算系統中廣泛使用的數據存儲系統是Google的GFS和Hadoop團隊開發的GFS的開源實現HDFS(Hadoop分布式文件系統)。

GFS即Google文件系統(Google File System),是一個可擴展的分布式文件系統,用于大型的、分布式的對大量數據進行訪問的應用。GFS 的設計思想不同于傳統的文件系統,是針對大規模數據處理和Google應用特性而設計的。它運行于廉價的普通硬件上,但可以提供容錯功能。它可以給大量的用戶提供總體性能較高的服務。

云計算的數據存儲技術未來的發展將集中在超大規模的數據存儲、數據加密和安全性保障以及繼續提高I/O速率等方面。

在GFS文件系統中,采用冗余存儲的方式來保證數據的可靠性。每份數據在系統中保存3個以上的備份。為了保證數據的一致性,對于數據的所有修改需要在所有的備份上進行,并用版本號的方式來確保所有備份處于一致的狀態。

當然,云計算的數據存儲技術并不僅僅只是 GFS,其他 IT廠商,包括微軟、Hadoop開發團隊也在開發相應的數據管理工具。其本質是一種海量數據存儲管理技術,以及與之相關的虛擬化技術,對上層屏蔽具體的物理存儲器的位置、信息等。快速的數據定位、數據安全性、數據可靠性及底層設備存儲數據量的均衡等都密切相關。

1.4.4 并行編程技術

并行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來協同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來并行計算。并行計算系統既可以是專門設計的、含有多個處理器的超級計算機,也可以是以某種方式互連的若干臺獨立計算機構成的群集。通過并行計算群集完成數據的處理,再將處理的結果返回給用戶。

并行計算技術是云計算最具挑戰性的核心之一,多核處理器增加了并行的層次結構和并行程序開發的難度,當前尚無有效的并行計算解決方案。可擴展性是并行計算的關鍵技術之一,將來的很多并行應用必須能夠有效擴展到成千上萬個處理器上,必須能隨著用戶需求的變化和系統規模的增大進行有效擴展,這對開發者是一個巨大的挑戰,短期內很難開發出成熟的產品。

互聯網上的信息呈指數級增長,網絡應用需要處理信息的規模越來越大。云計算上的編程模型必須是簡單、高效,具備高可用性的。這樣,云計算平臺上的用戶才能更輕松地享受云服務,云開發者能利用這種編程模型迅速地研發云平臺上相關應用程序。這種編程模型應該具備的功能是:保證后臺的并行處理和任務調度對用戶和云開發人員透明,從而使得他們能更好地利用云平臺的資源。分布式系統和并行編程模型能夠支持網絡上大規模數據處理和網絡計算,其發展對云計算的推廣具有極大的推動作用,為發揮GFS群集的計算能力,Google提出了 Map Reduce(映射&歸納)并行編程模型。目前,云計算上的并行編程模型均基于Map Reduce,編程模型的適用性方面還存在一定局限性,需要進一步研究和完善。

主站蜘蛛池模板: 浠水县| 北辰区| 安龙县| 湖州市| 南木林县| 舞钢市| 若尔盖县| 怀宁县| 富锦市| 凌源市| 余干县| 平泉县| 简阳市| 宜昌市| 临颍县| 台安县| 易门县| 南乐县| 凤山市| 平阳县| 堆龙德庆县| 砀山县| 广河县| 宜丰县| 广元市| 长武县| 渑池县| 乐昌市| 永登县| 大名县| 和龙市| 黄石市| 疏附县| 天津市| 灵石县| 东海县| 遂川县| 虎林市| 巴楚县| 古丈县| 万年县|