陳昊 文成玉
摘 要:隨著云數(shù)據(jù)中心的大規(guī)模應用,文章通過對當今主流的開源云平臺OpenStack在虛擬機初始化放置機制的研究,針對OpenStack在創(chuàng)建虛擬機時初始化放置算法的不足,提出了基于虛擬機的綜合優(yōu)化放置算法作為OpenStack的虛擬機初始化放置算法,通過在仿真云平臺CloudSim上仿真,結(jié)果表明,該算法性能更好,能更好地提高物理機的資源利用率。
關(guān)鍵詞:OpenStack;虛擬機;調(diào)度算法
繼個人計算機、互聯(lián)網(wǎng)變革之后,2010年以來,云計算作為第三代IT浪潮的代表正在向我們走來,它將帶來人類生活、生產(chǎn)方式和商業(yè)模式的根本改變,成為當前全社會關(guān)注的焦點。
隨著云計算的蓬勃發(fā)展,基于云平臺下的基礎設施的規(guī)模也變得越來越大,數(shù)據(jù)中心上部署的物理服務器也越來越多,各種各樣的服務和程序運行在這些物理服務節(jié)點上,怎樣有效利用數(shù)據(jù)中心的共享資源,有效提高大規(guī)模的物理數(shù)據(jù)中心的資源利用率,具有重要意義。
現(xiàn)階段,云平臺的虛擬機初始化部署的研究主要分為傳統(tǒng)的啟發(fā)式算法和生物智能啟發(fā)式算法兩個方面。傳統(tǒng)的啟發(fā)式算法有首次匹配算法、最佳匹配算法等。生物智能啟發(fā)式算法主要有蟻群算法、遺傳算法等。上述算法在一定的情況下都能表現(xiàn)出較好的性能,但是在云平臺這種沒有環(huán)境限制下算法的性能會不穩(wěn)定。本文針對OpenStack內(nèi)置的算法的不足對傳統(tǒng)算法的啟發(fā)式的算法進行了改進,提出了綜合優(yōu)化放置算法。
1 0penStack虛擬機放置機制
1.1 0penStack虛擬機的創(chuàng)建流程
在OpenStack搭建的云環(huán)境中,分布著大量的性能不同的物理機,此時,當有用戶在OpenStack的Web頁面dashboard上請求創(chuàng)建虛擬機時,就面臨著將虛擬機部署在哪個物理計算節(jié)點上的問題。OpenStack中,nova-scheduler(調(diào)度器)負責在資源池中篩選合適的物理服務器作為虛擬機實例的初始化部署節(jié)點。OpenStack中虛擬機的創(chuàng)建流程如圖1所示。
1.2 0penStack中內(nèi)置了兩種初始虛擬機放置算法
1.2.1 即時服務放置算法
即時服務放置算法即如果當前的物理主機所剩余的內(nèi)存等資源滿足所申請創(chuàng)建的虛擬機的請求時,在滿足條件的物理機列表中隨機的選取一個物理主機做為虛擬機創(chuàng)建實例的初始化部署節(jié)點。
1.2.2 過濾稱重算法
過濾稱重算法如圖2所示。
過濾稱重算法主要是分為兩個步驟,首先OpenStack計算服務Nova中的過濾調(diào)度器FilterScheduler使用配置的過濾器(Filter)對物理服務器進行過濾,篩選出符合要求的物理主機,然后對滿足條件的主機進行權(quán)值排序,將獲得剩余資源最多的主機最終作為放置虛擬機實例的節(jié)點。
1.3 0penStack虛擬機初始部署算法的不足
OpenStack在默認的情況下只是根據(jù)物理主機剩余的CPU進行權(quán)值的計算。因此,物理主機剩余的可利用的CPU越多,則該物理主機被選為最佳放置虛擬機主機的概率就越大。這種算法的優(yōu)點是算法的實現(xiàn)相對比較簡單。缺點是只是根據(jù)物理主機剩余的CPU大小來進行權(quán)值的排序,進而來選擇物理主機作為放置虛擬機實例的目標主機,并不符合實際生產(chǎn)環(huán)境中云平臺的使用要求。另外,只是單一地根據(jù)物理計算節(jié)點所剩余的CPU的大小來決定虛擬機的放置策略,使得云環(huán)境中各個物理主機的CPU的利用率都不高,因此,在實際的云生產(chǎn)環(huán)境中,需要綜合考慮CPU、內(nèi)存、帶寬、磁盤等各個資源,最大限度地提高物理主機的資源利用率,避免資源的浪費。
2 0penStack綜合優(yōu)化放置算法
2.1 問題模型
虛擬機的初始化部署問題可以簡化為一種裝箱問題。即將m個w維的盒子裝入n個w維的箱子。每個虛擬機可以看成是一個盒子,每個物理主機看作是一個箱子。盒子的重量是該虛擬機占用的資源。虛擬機的調(diào)度優(yōu)化目標是將多個虛擬機放入物理主機中。保障用戶的服務質(zhì)量,同時,每個物理主機上虛擬機占用的資源總量不能超過物理主機所能提供的資源總量。并且,使虛擬機占用的物理主機的數(shù)量最少。達到節(jié)省能耗、提高資源利用率的目的。
問題定義:將數(shù)據(jù)中心的n個物理主機定義為集合P={P1,…,Pn},將需要放置的m個虛擬機定義為集合V={v1,…,vm),物理主機上虛擬機的放置向量為H={hi1,hi2,…,him)。hij=1表示虛擬機vj放在物理主機pi上。定義每個物理節(jié)點上的資源為w維。因為物理服務器節(jié)點的資源主要有CPU、內(nèi)存、網(wǎng)絡帶寬和磁盤存儲,所以簡化定義物理服務器資源向量為四維向量Pi=(SCi,SMi,SMi,SHi)相應的虛擬機的資源定義為vj=sci,smi,sni,shi)。
虛擬機的部署問題可以描述如下:
公式組(1)中第一個公式表示虛擬機只能部署在一臺物理機上。后面4個公式為約束條件分別表示某個物理機上虛擬機占用的CPU、內(nèi)存、帶寬、磁盤存儲的資源總數(shù)不能超過物理機提供的總的資源總量。n表示物理主機的總數(shù),m表示虛擬機的總數(shù)。目標函數(shù)(2)為云平臺所使用的物理機最少,即云平臺的資源利用率最高。
F=min(Pused)
(2)
2.2 基于啟發(fā)式算法改進的虛擬機綜合優(yōu)化放置算法
虛擬機的初始化部署問題可以看成是n維裝箱問題,對于多維問題,通常選擇降維的方法將多維問題轉(zhuǎn)化成一維問題來解決。本文選擇的是利用歐氏距離將虛擬機的CPU、內(nèi)存、帶寬、磁盤存儲四維向量轉(zhuǎn)化成一維問題。
算法的流程如下。
(1)輸入虛擬機的集合V,物理服務器集合P,根據(jù)公式(3)分別計算每個虛擬機對應的歐氏距離dij,并將對應的虛擬機按照各自的歐氏距離的大小進行升序排序。
(2)將虛擬機隊列中第一個放置物理機pl中,并將隊列首部的虛擬機從集合中移除,判斷隊列末尾的虛擬機能否放入物理機pl中,如果能,則將隊列末尾的虛擬機放入物理機pl中,并將隊列末尾的虛擬機從隊列中移除。如果不能,則重新開啟一臺物理主機。
(3)從虛擬機集合中檢索第一個能放入物理主機中的虛擬機,如果能找到,則將該虛擬機放入物理主機Pi中,如果不能找到,則新開啟一臺物理主機,將該虛擬機放入到物理主機pi中。
(4)不斷重復步驟3,直到所有的虛擬機都放入物理主機中。
(5)輸出物理服務器所用的數(shù)量。
3 仿真結(jié)果分析
為了驗證本文提出的綜合優(yōu)化虛擬機初始放置算法對在實際的云平臺上的效果,通過在CloudSim仿真云平臺上的仿真與OpenStack內(nèi)置的虛擬機初始化部署算法做對比來驗證本文提出的算法的有效性。
實驗中參與的模擬的物理服務器的規(guī)模為200個,每個服務器的配置為CPU2.1 GHz,內(nèi)存的大小為8 GMB,磁盤的大小為2 000 GB,網(wǎng)絡帶寬為1 000 Mbps。虛擬機總共有10種不同的配置。虛擬機的配置如表1所示。
試驗中,每10個虛擬機一組,每次增加一組總共測得20組數(shù)據(jù),實驗結(jié)果如圖3所示。
由圖3可以看出,本文提出的基于啟發(fā)式算法改進的虛擬機綜合優(yōu)化初始化部署算法,隨著虛擬機創(chuàng)建數(shù)量的增多,相對于OpenStack內(nèi)置算法的性能優(yōu)勢越來越明顯。以此說明了該算法的有效性。
4 結(jié)語
本文通過研究虛擬機的創(chuàng)建的流程,并通過對OpenStack內(nèi)置的虛擬機資源調(diào)度算法的分析,針對內(nèi)置算法的不足,對基于啟發(fā)式虛擬機資源調(diào)度算法進行了改進,并提出了綜合負載優(yōu)化調(diào)度算法,并通過在CloudSim云仿真平臺上進行了算法的仿真,仿真結(jié)果表明該算法減少了物理服務器的使用數(shù)量,提高了資源利用率,減少了平臺的能耗。本文的下一步重點將放在虛擬機的動態(tài)遷移策略上。
[參考文獻]
[1]賽迪顧問有限公司中國云計算產(chǎn)業(yè)發(fā)展白皮書[J]中國信息通信研究院,2010 (1):3-4.
[2]孫春玲,陳智斌,李建平.裝箱問題的一種新的近似算法[J].云南大學學報,2004 (5):392-396.
[3]楊星,馬自堂,孫磊.云環(huán)境下基于改進蟻群算法的虛擬機批量部署研究[J]計算機科學,2012(9):33-37