[技術(shù)深度]云服務(wù)器IaaS的資源虛擬化

隨著云服務(wù)器技術(shù)和廠商的迅猛發(fā)展,越來越多的企業(yè)選擇將業(yè)務(wù)系統(tǒng)部署在云服務(wù)器上,通常他們會選擇成熟的廠商比如亞馬遜,阿里云,騰訊云等.談到云服務(wù)器,就避免不了涉及IaaS(Infratructure

as a service)技術(shù).

IaaS

(Infrastructure as aService)基礎(chǔ)架構(gòu)即服務(wù),是云計(jì)算的一種類型,它是PaaS(Platformas a Service平臺即服務(wù))和SaaS(softwareasaservice軟件即服務(wù))的基礎(chǔ)。IaaS軟件通常用于管理大規(guī)模的物理硬件(IaaS可以管理小到一臺物理主機(jī),多到成千上萬的物理服務(wù)器)并把客戶所需的軟硬件資源(CPU,內(nèi)存,網(wǎng)絡(luò),存儲等)以“主機(jī)”的形式提供.

IaaS的根本就是將計(jì)算資源進(jìn)行池化,這里的計(jì)算單元包括但不限于cpu,內(nèi)存,網(wǎng)絡(luò).這些資源被邏輯切割成更小的可管理單元,然后根據(jù)客戶需要被靈活的組裝成可運(yùn)作的主機(jī),很明顯這里的主機(jī)并不是一臺真的物理主機(jī),而是虛擬機(jī).這個虛擬機(jī)通常都會包含一個可以連上網(wǎng)絡(luò)的操作系統(tǒng),用戶可以通過網(wǎng)絡(luò)連接上虛擬主機(jī)并且能靈活的進(jìn)行資源配置以及按照配置及時間來付費(fèi).而用戶操作這臺虛擬主機(jī)就像操作一臺物理服務(wù)器一樣,可以在上面安裝軟件,搭建數(shù)據(jù)庫以及應(yīng)用服務(wù)器,部署web應(yīng)用.由于這些提供給用戶的功能都是最基礎(chǔ)的計(jì)算功能,所以這種服務(wù)形式也被稱作基礎(chǔ)架構(gòu)及服務(wù)(IaaS)

上面我們提到IaaS的根本是將資源進(jìn)行池化,這些資源我們把它分為三個大類:計(jì)算資源(CPU),存儲資源(內(nèi)存和存儲),網(wǎng)絡(luò)資源;下面我們詳細(xì)地分析這三類資源的池化,也可以稱為虛擬化.

CPU虛擬化

對于CPU來說,它具有極高的計(jì)算能力,可以在一秒鐘內(nèi)可以運(yùn)算上千萬條指令。另外,由于客戶的虛擬機(jī)往往運(yùn)行的并不是計(jì)算密集型的應(yīng)用程序(如瀏覽網(wǎng)頁,訪問數(shù)據(jù)庫,存儲文件等等),換句話說它的程序功能可以在很短時間(毫秒級別)內(nèi)計(jì)算完成,當(dāng)計(jì)算完成或等待其他網(wǎng)絡(luò)、硬盤等IO操作時,如果沒有其他計(jì)算任務(wù),CPU便會進(jìn)入空閑(IDLE)狀態(tài)。經(jīng)過統(tǒng)計(jì),通常情況我們的CPU繁忙的時間很短,例如CPU有95%的時間都處于空閑狀態(tài)。如果我們讓CPU在等待的時候,也能給別人提供服務(wù),便可以讓資源利用率最大化,所以CPU的虛擬化技術(shù)的本質(zhì)就是以分時復(fù)用的方式,讓所有的虛擬機(jī)能夠共享CPU的計(jì)算能力。因?yàn)镃PU運(yùn)算的速度非???,而且這種分時的單元非常的小,以至于用戶完全不會察覺到自己的虛擬機(jī)是在CPU上輪流運(yùn)算的,所以在宏觀的世界里,這些虛擬機(jī)看起來就是在同時工作的。當(dāng)然IaaS軟件還需要通過一些手段保證每個虛擬機(jī)申請的CPU可以分到足夠的時間片

內(nèi)存虛擬化

我們知道,物理內(nèi)存在計(jì)算機(jī)上通常是一段以零地址開始以全部內(nèi)存空間為截止地址的空間。例如4個8GB內(nèi)存條組成的32GB內(nèi)存,它在物理服務(wù)器上看起來就是0~32GB的空間。CPU在訪問內(nèi)存時的,只要提供內(nèi)存地址,就可以訪問到地址內(nèi)的數(shù)據(jù)。對于每個虛擬機(jī)來說,不論給它分配1G的內(nèi)存,還是分配4GB的內(nèi)存,它通常都認(rèn)為自己的內(nèi)存是從零開始的。但實(shí)際上,它們都會被映射到物理機(jī)上的不同地址段,有的可能是從2G開始的,有的可能是從4G開始的。而且不僅僅是內(nèi)存的起始地址在物理機(jī)上不同,甚至虛擬機(jī)的內(nèi)存在物理機(jī)內(nèi)存上的分布也不是連續(xù)的。他們可能會被映射到不同的內(nèi)存空間。虛擬機(jī)管理程序(Hypervisor)負(fù)責(zé)維護(hù)虛擬機(jī)內(nèi)存在物理內(nèi)存上的映射。當(dāng)虛擬機(jī)訪問一段自己的內(nèi)存空間時,會被映射到真實(shí)的物理地址。這種映射對虛擬機(jī)的操作系統(tǒng)來說是完全透明的。因?yàn)橐慌_物理機(jī)上運(yùn)行了多個虛擬機(jī),所以虛擬機(jī)管理程序需要保證,不論在任何時候,來自虛擬機(jī)A的訪問內(nèi)存請求不能到達(dá)虛擬機(jī)B的內(nèi)存空間里面。這就是所謂的資源隔離。

存儲虛擬化

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

網(wǎng)絡(luò)虛擬化

通常用戶通常熟悉的計(jì)算機(jī)網(wǎng)絡(luò)概念包含,網(wǎng)卡、IP地址,主機(jī)名等等。例如在一臺物理機(jī)上,可能有一個或幾個網(wǎng)卡,每個網(wǎng)卡在工作的時候會分配不同的IP地址,對外可能有一個或多個網(wǎng)絡(luò)主機(jī)名。網(wǎng)絡(luò)連接速度取決于網(wǎng)卡的能力以及網(wǎng)絡(luò)接入(例如交換機(jī))的能力。在網(wǎng)絡(luò)上通過IP地址或者網(wǎng)絡(luò)主機(jī)名可以連接不同的物理主機(jī),所以在一個可以路由的網(wǎng)段內(nèi)IP地址和主機(jī)名必須是唯一的。在每個網(wǎng)卡上,還有一個MAC地址,用來標(biāo)識在相同網(wǎng)段上不同的網(wǎng)卡。用戶通常不會注意MAC地址,因?yàn)樗⒉恍枰脩羰謩优渲谩D敲词裁词蔷W(wǎng)絡(luò)虛擬化呢?假如原本的物理機(jī)只有一個網(wǎng)卡,那么它有一個MAC地址,并且可以分配一個IP地址,其他機(jī)器就可以通過IP地址訪問這個物理主機(jī)。當(dāng)創(chuàng)建N個虛擬機(jī)后,每個虛擬機(jī)都需要有獨(dú)立的網(wǎng)絡(luò)配置,以便他們可以像物理機(jī)一樣的處理各種網(wǎng)絡(luò)連接。但是這個時候物理機(jī)上依然只有一個網(wǎng)卡,N個虛擬機(jī)通過這一個物理網(wǎng)卡都能進(jìn)行順暢的網(wǎng)絡(luò)連接的過程即為網(wǎng)絡(luò)虛擬化。

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

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

有了資源的虛擬化,并且提供將虛擬化資源靈活管理的能力,

IaaS廠商便可以采購成千上萬臺物理服務(wù)器,并且通過虛擬化技術(shù)將這些資源重新拆分,然后按需租賃給客戶使用.在IaaS的基礎(chǔ)上,

PaaS和SaaS產(chǎn)品也如雨后春筍般出現(xiàn),接下來的文章我們將對PaaS和SaaS技術(shù)做深入探討.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容