精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

解析IaaS的基本資源及資源虛擬化

責任編輯:editor005

2015-08-25 14:31:35

摘自:ZStack

雖然IaaS并不一定需要虛擬化,但是通常來說虛擬化被認為是IaaS的基礎,本篇短文將會主要介紹IaaS環境下各種資源是如何被虛擬化的。

深度:資源虛擬化

  前言

前陣子聽到IT圈內的朋友聊到,IaaS相關領域的軟件工程師應該是當前IT產業中待遇最高的一批人。云計算作為IT基礎產業,已經獲得國內外IT界的高度投入。當前只要是大型的互聯網公司,不論是做門戶的、視頻的、搜索的,還是電商的、社交的、游戲的公司都在云計算上投入巨額的人力物力,以期望占領Iaas的制高點。他們通常是以自身業務需求為起點,來部署IaaS。一旦成功部署,也可以利用IaaS來創建新的業務領域。此外,這兩年因IaaS而獲得風投的創業企業也頗多,他們手上有大筆的現金,不惜以重金和高股票來籠絡軟件人才。不過,相比于各大公司對云人才的渴求,這個市場上真正合格的IaaS軟件研發工程師卻非常少。主要原因大概是因為IaaS系統本身涉及的內容比較廣泛,需要軟件開發人員對IT領域有一定的積累。前陣子,我造訪了電子科技大學,和計算機專業的大學生進行了一些交流。發現同學們對云計算技術非常感興趣,但是對它的具體功能和原理很難準確描述。

本人從10年前開始玩虛擬化,之后由于工作和興趣,也對云計算有了一些了解。個人感覺IaaS并沒有像云一般難以琢磨和理解,并非需要很高深的計算機知識,有很多方面也是很多基本的計算機概念組成。于是在回上海的飛機上就有了要寫一點關于介紹基本的IaaS概念和基礎的想法。希望能幫助對IaaS感興趣的人能夠了解和進入這個領域,也希望有更多的人能加入IaaS軟件的開發中來,讓這個潮流技術盡快普及。

雖然IaaS并不一定需要虛擬化,但是通常來說虛擬化被認為是IaaS的基礎,本篇短文將會主要介紹IaaS環境下各種資源是如何被虛擬化的。

IaaS的基本概念

IaaS (Infrastructure as aService)基礎架構即服務,是云計算的一種類型,它是PaaS(Platform as a Service 平臺即服務)和SaaS(softwareas a service軟件即服務)的基礎。IaaS軟件通常用于管理大規模的物理硬件(IaaS可以管理小到一臺物理主機,多到成千上萬的物理服務器)并把客戶所需的軟硬件資源(CPU,內存,網絡,存儲等)以“主機”的形式提供(這里的主機可以是一臺獨立物理主機,但更多的情況是虛擬機,VirtualMachine, 簡稱VM)。

IaaS的根本目的在于計算資源的池化、統一的、智能的(如按需)管理調度。計算資源的池化,也就是把所有的資源放在一個大池子里并按照較小的單元進行管理。例如把100個1TB的硬盤放在存儲池中,這個池子便有了100TB的容量,分配存儲的時候,不再是以1TB這樣的獨立硬盤單元進行分發,而是可以分發一個較小的容量(例如10GB,具體的分配的單元可以由IaaS進行配置)。IaaS的Service,現在普遍都是以WebService的形式來提供,因為非常容易操作。

IaaS所提供的虛擬機通常都會至少包含一個可以連上網絡的操作系統(如Linux,Windows)。用戶通過網絡可以登錄并操作虛擬機并按照虛擬機的資源配置和使用時間來付費。用戶在虛擬機上進行的操作就同操作一臺本地剛剛安裝好操作系統的電腦一樣,他可以在虛擬機上安裝更多的軟件(如Apache,MySQL,SQL-Server,Python,GCC等等)。他還可以加載自己的程序以完成更多的功能(例如搭建一個網站,或者VPN服務器)。用戶還可以靈活的按需申請存儲空間。由于這些提供給用戶的功能都是最基礎的計算機功能,所以這種服務形式也就被形象的稱為基礎架構即服務。

雖然講了IaaS的基本概念,大家對為什么需要IaaS也許還有疑問。IaaS軟件提供的功能和傳統的不使用IaaS軟件相比,究竟有什么好處呢?我們來舉一個例子,在傳統方式里,當客戶由于業務(開設一個社交網站)需要搭建一個小型服務器,在搭建上層服務軟件之前,他還需要購買硬件和安裝操作系統,這往往都需要至少一天的時間,由于直接購買硬件會導致一次性產生大量的花費,而且用戶需要對軟硬件提供日常的保養維護。相反,IaaS軟件通常可以在分分鐘就提供客戶所需的全部資源,而且是按需(使用的時間和空間)收費。這不僅節省了用戶的時間,還節省了客戶初期的投資,也降低了客戶構建服務器的門檻(很多人往往需要花費大量的時間來調查購買什么樣的服務器,安裝什么樣的操作系統。當使用了IaaS軟件后,用戶可以在業務開始之初只申請配置較小的虛擬機,當業務需求提高后,再升級到更高配置的虛擬機)。此外IaaS軟件還會提供全方位的安全保障,用戶不必擔心自己在云上的數據會因為普通的硬件故障而導致丟失。所以IaaS提供的按需服務,是一種先進的,快捷的,更經濟的和更安全的軟件服務形式。有了IaaS之后,PaaS和SaaS會更加容易的疊加和部署。

深度:資源虛擬化

那么誰會使用IaaS軟件呢?公有云服務提供商是IaaS概念的發明者(Amazon在2005年推出了最早的公有云AWS服務),也是目前IaaS軟件商業使用的主力軍。公有云服務提供商,他們擁有海量的物理服務器(數千,到數十萬),大規模的網絡帶寬和穩定的機房環境。要管理這些海量的物理服務器,如果僅僅通過人工方式來進行是不可想象的。IaaS軟件可以做到自動的通過網絡來管理物理服務器的配置和運行。另外考慮到大量的客戶往往只需要比較小的服務器資源,這些小資源的配置往往比單臺物理服務器小很多,那么就需要通過軟件的方法把單臺物理服務器的資源在保證數據安全隔離的情況下分配給不同的用戶使用。IaaS軟件可以輕松的把一臺服務器的資源劃分成幾個或幾十個虛擬機的形式提供給客戶(IaaS軟件也可以把一臺服務器的全部資源做成一個虛擬機;或者不采用任何虛擬化技術而直接使用物理服務器,通常這種形式被稱為Baremental)。這種降低了單個客戶成本的方式,擴大了客戶量,也就大大提高了公有云服務提供商的營收。除了公有云提供商外,私有云和混合云是IaaS軟件的主要使用者。使用私有云的企業往往是中大型的公司,他們內部有大量的服務器需要管理,這點和公有云服務商的類似,他們也需要高效的自動化IaaS軟件來幫助管理這些大量的服務器。當采用了IaaS來管理私有云之后,企業的業務模式也可以發生拓展,在內部私有云超負荷的情況下(例如當節日促銷活動時,客戶服務的需求量可能是平時的十幾甚至幾十倍),可以和公有云組建混合云,這就讓企業的服務能力變得無限。目前IaaS軟件還沒有在家庭用戶中直接使用,不過未來個人云創新后,家庭用戶可能可以直接使用IaaS軟件的衍生產品。

目前最主流IaaS軟件有亞馬遜的AWS,微軟的Azure和開源的OpenStack。其中前兩個都是閉源的僅供內部使用,想參與開發,只能加入亞馬遜或者微軟了。OpenStack是目前最火的開源軟件,已經有183家公司和3386名開發人員參與研發。據分析,到2018年OpenStack將會擁有33億美元的云市場。國內超過一半的IaaS研發公司都在使用OpenStack。因為開源,OpenStack非常有利于學習和研究IaaS的基本概念。

IaaS的基本資源

深度:資源虛擬化

IaaS把眾多的物理資源進行劃分和重組,提供給用戶。IaaS具體管理的物理資源,可以分為三大類:計算資源(CPU加內存),存儲資源和網絡資源。從計算資源角度來講,IaaS軟件管理的最小的物理單元為一個物理服務器(Host)。根據需求,服務器上會被創建多個虛擬機。若干配置相同(相同的虛擬化軟件Hypervisor和網絡設備以及拓撲結構)的物理服務器會組成一個集群(Cluster),要求配置相同的主要原因是因為需要支持虛擬機動態遷移。通常一些集群還會組成更大規模的區域(Zone)。某些IaaS軟件,還能支持由若干Zone組成的地區(Region)。集群、區域的劃分會體現在對網絡和存儲不同配置。例如一個集群可以共享相同的網絡主存儲,以支持虛擬機的動態遷移。一個區域可以共享相同的網絡備份存儲,可用來存放共享的虛擬機鏡像文件。

虛擬機和存儲服務是IaaS提供服務的最基本單元。通常存儲服務是和虛擬機緊密相關的,這是因為用戶主要是通過虛擬機來訪問IaaS的存儲資源(這點和PaaS和SaaS不同)。IaaS依賴于軟硬件虛擬化技術(現在主要是硬件虛擬化)在一個服務器上創建多個VM,所以虛擬化(Virtualization)常被稱為是云計算的基礎。所以如果要了解IaaS,我們就不得不認識一下虛擬化技術。虛擬化技術上也并不神秘,它通過時空復用的技術讓資源可以被劃分和共享。

IaaS的基本資源的虛擬化

CPU虛擬化

深度:資源虛擬化

首先我們來看一下CPU是如何虛擬化的。對于當代的CPU來說,它具有極高的計算調度能力,它能在一秒鐘內可以運算上千萬條指令。另外,由于客戶的虛擬機往往運行的并不是計算密集型的應用程序(如瀏覽網頁,訪問數據庫,存儲文件等等),換句話說它的程序功能可以在很短時間(毫秒級別)內計算完成,當計算完成或等待其他網絡、硬盤等IO操作時,如果沒有其他計算任務,CPU便會進入空閑(IDLE)狀態。經過統計,通常情況我們的CPU繁忙的時間很短,例如CPU有95%的時間都處于空閑狀態。如果我們讓CPU在等待的時候,也能給別人提供服務,便可以讓資源利用率最大化,所以CPU的虛擬化技術的本質就是以分時復用的方式,讓所有的虛擬機能夠共享CPU的計算能力。因為CPU運算的速度非常快,而且這種分時的單元非常的小,以至于用戶完全不會察覺到自己的虛擬機是在CPU上輪流運算的,所以在宏觀的世界里,這些虛擬機看起來就是在同時工作的。當然IaaS軟件還需要通過一些手段保證每個虛擬機申請的CPU可以分到足夠的時間片。這是一個比較簡單的便于理解的對于CPU虛擬化的描述,但是CPU虛擬化內幕是非常精巧和復雜的,為了實現高效準確的CPU虛擬化能力,世界上頂尖的軟硬件工程師已經為此付出超過十年的努力。

內存虛擬化

深度:資源虛擬化

如果我們說CPU虛擬化是一個時間之旅,那么內存虛擬化就是一個空間之旅。內存是用來存放CPU要運行和計算的數據和代碼。我們知道,物理內存在計算機上通常是一段以零地址開始以全部內存空間為截止地址的空間。例如4個8GB內存條組成的32GB內存,它在物理服務器上看起來就是0~32GB的空間(可以在BIOS和系統啟動后看到)。內存地址就好比門牌號碼,CPU在訪存的時候,只要提供對應的內存地址,就可以拜訪對應地址內的數據。對于每個虛擬機來說,不論它分配了512MB的內存,還是分配了4GB的內存,它通常都是認為自己的內存是從零地址開始的一段空間(至少虛擬機的用戶是這樣認為的)。但是實際上,它們都會被映射到物理機上不同的空間段,有的可能是從1G開頭的,有的可能是從10G開頭的。而且不僅僅是內存的起始地址在物理機上不同,通常連虛擬機的內存在物理機內存上的分布也不是連續的。他們可能會被映射到不同的內存區間。虛擬機管理程序(Hypervisor)負責維護虛擬機內存在物理內存上的映射。當虛擬機訪問一段自己的內存空間(例如1073741824,也就是1G)的時候,會被映射到真實的物理地址(例如6442450944)。這種映射對虛擬機的操作系統來說可以是完全透明而高效的。因為一臺物理機上運行了多個虛擬機,所以虛擬機管理程序需要保證,不論在任何時候,來自虛擬機A的訪存請求不能到達虛擬機B的內存空間。這也就是資源的隔離。現有的虛擬機管理程序甚至支持分配的虛擬機內存空間的總和大于物理內存,這種技術叫做超分(overcommit)。KVM里面使用KSM(KernelSamePage Merging)就可以讓在不同虛擬機里使用相同數據的頁(例如使用相同的內核)共享一份內存來保存。這就是內存虛擬化帶來的好處。

存儲虛擬化

深度:資源虛擬化

IaaS虛擬存儲資源的方法和虛擬內存類似,主要也是通過把一個大的存儲空間劃分成多個小的存儲空間分配給虛擬機使用。但是與內存虛擬化不同的是,存儲虛擬化通常并不是直接發生在硬盤的尋址層面,也就是不會在具體訪問硬盤驅動的時候才轉化訪問的地址。存儲虛擬化是以文件為單位來進行資源的存儲和隔離的。這個文件不是虛擬機里看到每個具體文件,而是在物理機上用于模擬虛擬機硬盤的一個超大文件,對硬盤地址的訪問就是對文件的某個偏移量的訪問。這點看似復雜,其實更容易理解。例如一個大小為20GB的獨立文件,可以被看成是一個20GB的硬盤空間,當需要訪問0地址的時候,也就是訪問文件的開頭,當需要訪問3G這個地址的時候,也就是訪問文件的3G偏移量的地方。使用這種靈活分配的方法,理論上可以讓一個2TB的物理硬盤,化身身成接近100個20GB或者接近20個100GB的硬盤。需要說明的是,看似一個完整的20GB文件,它在硬盤上可能并不是連續存放的,這完全取決于虛擬機管理程序的文件系統是如何分配硬盤空間的。當然虛擬機本身并不會意識到這點,具體訪問硬盤的時候,會由虛擬機管理程序的文件系統來保證訪問的準確性。有些虛擬機管理程序用一個文件來模擬一個虛擬機硬盤,有些則支持多個文件合并模擬一個虛擬機硬盤。使用多個文件來模擬虛擬機硬盤的方法更加靈活,并且有利于實現硬盤快照功能。

網絡虛擬化

深度:資源虛擬化

與之前講的CPU、內存、硬盤等物理資源相比較,計算機網絡虛擬化的內容和實現要相對復雜一些。通常用戶通常熟悉的計算機網絡概念包含,網卡、IP地址,主機名等等。例如在一臺物理機上,可能有一個或幾個網卡,每個網卡在工作的時候會分配不同的IP地址,對外可能有一個或多個網絡主機名。網絡連接速度取決于網卡的能力以及網絡接入(例如交換機)的能力。在網絡上通過IP地址或者網絡主機名可以連接不同的物理主機,所以在一個可以路由的網段內IP地址和主機名必須是唯一的。在每個網卡上,還有一個MAC地址,用來標識在相同網段上不同的網卡。用戶通常不會注意MAC地址,因為它并不需要用戶手動配置。那么什么是網絡虛擬化呢?假如原本的物理機只有一個網卡,那么它有一個MAC地址,并且可以分配一個IP地址,其他機器就可以通過IP地址訪問這個物理主機。當創建N個虛擬機后,每個虛擬機都需要有獨立的網絡配置,以便他們可以像物理機一樣的處理各種網絡連接。但是這個時候物理機上依然只有一個網卡,N個虛擬機通過這一個物理網卡都能進行順暢的網絡連接的過程即為網絡虛擬化。

虛擬機上的網絡概念和物理機一樣。在一個物理機上創建多個虛擬機,就是要創建多份虛擬機的虛擬網卡,并且保證它們能夠正確的聯通到網絡上。這是如何做到的呢?這主要是通過虛擬機管理程序在虛擬層面創建了一個虛擬的網橋(Bridge)。這個網橋就和我們我們看到的交換機一樣,上面有很多“接口”可以連接不同的虛擬網卡,當然物理機的真實網卡也需要連在這個網橋上,并且設置了一種特殊的混雜模式(可以允許不論該物理網卡是否為網絡包的目的地址都能通過該網卡接收或者發送)。在同一個網橋上的不同虛擬機之間進行的網絡通信,只會在本網橋內發生。只有當虛擬機的網絡通信的對象不在本機(比如物聯網上的其他主機)上的時候,他們就會通過物理機的網卡向外進行傳輸。由于物理機的網卡帶寬能力是固定的,所以在一個網橋上的虛擬網卡也是分時共享相同的網絡帶寬(如果網絡包的交換之發生在本網橋內,速度不會受到物理網卡的影響)。雖然他們在自己傳輸的時間段內是獨占全部帶寬(例如1Gbps),但是同時會導致其他虛擬網卡暫時無法傳輸數據,以至于在宏觀范圍(秒)來看,虛擬機是沒有辦法在共享網絡的時候占用全部帶寬的。如果假設有4個虛擬機都在進行大規模的網絡操作(例如大文件的下載和上傳),那么理論上他們的實際連接速度最多就只能達到250Mbps。由于網絡速度對云計算中虛擬機的能力非常重要,芯片公司也在不斷推出各種針對網絡連接的硬件虛擬化解決方案(例如SR-IOV,VMDq等等)。

如果物理機去上只有一個物理網卡,那么不同的虛擬機的網絡都是通過同一個網卡連接出去,這是會導致網絡安全問題的。例如一個虛擬機可以監聽整個網絡上的所有數據包,并分析截獲感興趣的別的虛擬機的網絡數據。為了解決這個問題,計算機網絡提供了一種叫做VLan的技術。通過對網絡編輯指定的VLan編號,一個物理網卡可以拓展多達4095個獨立連接能力。例如,如果原本的物理網卡為eth0,VLan1的網卡設備在操作系統就變成eth0.1,VLan1000的網卡設備就是eth0.1000,eth0.1和eth0.1000之間都無法看到對方的網絡包。有了VLan的支持,在相同物理機上的虛擬機就可以分配不同的VLan編號的網絡設備,從而進行了網絡隔離。

有了計算機資源、存儲資源和網絡資源的虛擬化,IaaS就可以管理起把整套虛擬化的資源,并且在客戶需要的時候,把一部分資源劃分給用戶使用。例如用戶可以申請2個CPU,2GB的內存,100GB的硬盤和2個網卡,或者可以申請4個CPU,16GB的內存,2T的硬盤和1個具有公網IP地址的網卡等不同的資源。由于虛擬機共享著物理機的資源,所以IaaS軟件必須要做好資源的隔離以保證數據的安全。需要指出的是,IaaS軟件管理和分配的過程是完全自動化的。它的輸入是用戶的需求(通常通過網頁輸入),它的輸出是一個具有網絡連接能力的虛擬機。

至此,IaaS軟件的基本概念和資源虛擬化的部分就介紹完畢了,為了簡化,我們并沒有涉及資源虛擬化的細節和IaaS是如何管理和分配這些資源的,從了解基本概念的角度來說已經足夠。不過要成為IaaS軟件研發工程師,還需要熟悉和了解各種資源是如何虛擬化的,并且掌握如何管理和分配這些資源(池化),并用自動化的方法把它們串聯起來。為了更好的分配這些資源,IaaS軟件通常會構建很多內部的邏輯概念。例如對于存儲資源,IaaS會分成主存儲和備份存儲。由于存儲類型的不同,IaaS軟件需要支持不同的存儲方式,例如NFS,iSCSI或者對象存儲。由于虛擬化管理程序可能是異構的,例如(KVMvs. VSphere),IaaS軟件往往還需要支持幾種不同的虛擬化解決方案。每一種虛擬化管理程序的應用程序接口是不同的,IaaS需要能夠分別并暴露給用戶統一的接口。此外由于管理著成百上千的物理服務器,服務器難免會出現各種問題(例如掉電,電子元件損壞等等),IaaS軟件都需要針對不同的錯誤進行自我隔離、容錯和修復。以上這些都是IaaS軟件工程師需要處理和解決的常見問題。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 龙山县| 体育| 济源市| 团风县| 无锡市| 渝中区| 怀来县| 三门峡市| 大竹县| 犍为县| 山阳县| 丹凤县| 安阳县| 武乡县| 大新县| 乌拉特后旗| 台北市| 雅安市| 延寿县| 柯坪县| 昆明市| 阳曲县| 宜川县| 康保县| 教育| 思茅市| 封开县| 郸城县| 句容市| 镇赉县| 于田县| 湛江市| 怀宁县| 手游| 江门市| 同德县| 天气| 沽源县| 芦溪县| 徐闻县| 云梦县|