趙 丹,沈蘇彬,吳振宇
(1.南京郵電大學(xué) 物聯(lián)網(wǎng)學(xué)院,江蘇 南京 210003;2.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)
云計(jì)算以按需付費(fèi)、動(dòng)態(tài)擴(kuò)展等優(yōu)勢極大地方便了各用戶,在滿足客戶業(yè)務(wù)需求的同時(shí),大大降低了他們的使用成本。然而,出于對溫度等環(huán)境因素的需求,云計(jì)算中心每年要消耗大量的能源。據(jù)IDC統(tǒng)計(jì),2014年我國云計(jì)算中心整體耗電量占社會(huì)總用電的1.6%,并預(yù)測10年后,云計(jì)算中心整體的耗電量大約要占15%[1]。云計(jì)算中心的能耗主要來源于IT設(shè)備、照明系統(tǒng)、空調(diào)系統(tǒng)、供配電系統(tǒng),而在所有因素中,IT設(shè)備的耗電量居首,約占45%,而空調(diào)系統(tǒng)次之,約占40%[2]。由此可見,云計(jì)算中心的節(jié)能措施首先是降低IT設(shè)備的能耗。
在云計(jì)算中心,針對IT設(shè)備的節(jié)能技術(shù)分為靜態(tài)節(jié)能技術(shù)和動(dòng)態(tài)節(jié)能技術(shù)。靜態(tài)節(jié)能是指在系統(tǒng)設(shè)計(jì)之初就將能耗因素考慮進(jìn)來,在電路層采用節(jié)能技術(shù),如停用未使用的電路組件,對CPU、RAM和磁盤等主要耗電組件采用電壓頻率動(dòng)態(tài)調(diào)整技術(shù)。動(dòng)態(tài)節(jié)能是從資源管理角度出發(fā),根據(jù)運(yùn)行云任務(wù)的負(fù)載的動(dòng)態(tài)變化,自適應(yīng)地對云平臺的能耗進(jìn)行管理。目前,云計(jì)算中心的能耗優(yōu)化管理技術(shù)主要有電壓動(dòng)態(tài)調(diào)整技術(shù)、關(guān)閉/休眠技術(shù)和虛擬化技術(shù)[3]。在云計(jì)算架構(gòu)的基礎(chǔ)設(shè)施即服務(wù)(IaaS)層,云平臺使用KVM、VMware等虛擬化技術(shù)對計(jì)算、存儲(chǔ)等資源進(jìn)行擴(kuò)展,以提高資源利用率,并將資源進(jìn)行封裝,以虛擬機(jī)的形式向用戶提供服務(wù)[4]。因此,虛擬機(jī)可作為云計(jì)算的基本服務(wù)單元。在節(jié)能措施上,可通過虛擬機(jī)的遷移將負(fù)載重新整合,減少運(yùn)行節(jié)點(diǎn)的數(shù)量,從而達(dá)到節(jié)能的目的。
幾個(gè)主流的云計(jì)算平臺,如OpenStack[5]、OpenNebula[6],不支持資源的動(dòng)態(tài)調(diào)配,作為業(yè)界成功應(yīng)用IaaS商業(yè)模式的代表AWS,其彈性云計(jì)算EC2中集成了彈性負(fù)載均衡(ELB)功能,提供基于動(dòng)態(tài)配置和動(dòng)態(tài)遷移的資源調(diào)配,卻沒有提供針對節(jié)能目標(biāo)的調(diào)度策略[7]。而在以節(jié)能為目標(biāo)的實(shí)現(xiàn)方式上,使用KVM、Xen等作為底層虛擬機(jī)管理程序的云計(jì)算平臺,使用基于內(nèi)存頁預(yù)拷貝方式的虛擬機(jī)在線遷移技術(shù),該技術(shù)存在傳輸速率以及頁重傳問題。針對這些問題,有人提出了基于內(nèi)存頁后拷貝方式的虛擬機(jī)在線遷移技術(shù),極大地改進(jìn)了預(yù)拷貝方式在停機(jī)時(shí)間上的不足,但存在由于內(nèi)存頁丟失而導(dǎo)致的虛擬機(jī)遷移失敗問題。為了保證在虛擬機(jī)遷移過程中的魯棒性,需要一種更為高效可靠的遷移方式。
基于以上問題,文中分析了針對云計(jì)算節(jié)能的相關(guān)工作,設(shè)計(jì)了一種節(jié)能方案,并通過實(shí)驗(yàn)對其進(jìn)行驗(yàn)證分析。
在IaaS層,目前常用的節(jié)能措施是通過針對節(jié)能的資源調(diào)度策略為虛擬機(jī)重新匹配物理主機(jī),并通過虛擬機(jī)在線遷移技術(shù)將虛擬機(jī)遷移到對應(yīng)的物理主機(jī)上,提高單個(gè)節(jié)點(diǎn)的資源使用率,減少節(jié)點(diǎn)的運(yùn)行數(shù)量。
在面向節(jié)能的資源調(diào)度策略中,文獻(xiàn)[8]通過將效率控制器EC、服務(wù)器管理器SM、附件管理器EM、群組管理器GM和虛擬機(jī)控制器VMC五種不同的能源管理策略相結(jié)合來研究云計(jì)算中心的能源管理問題,并在協(xié)調(diào)控制器上對控制理論和反饋控制循環(huán)進(jìn)行了深入研究。這種方式不受工作負(fù)載類型的約束,但只針對CPU資源,并未考慮系統(tǒng)中的其他資源,如RAM、磁盤等。文獻(xiàn)[9]綜合考慮了多種資源(CPU、磁盤、網(wǎng)絡(luò))的使用情況,將負(fù)載集中于少數(shù)物理節(jié)點(diǎn),關(guān)閉閑置節(jié)點(diǎn),以達(dá)到節(jié)能的目的。該方案指定能源或性能的開銷值,以保證負(fù)載的整合不會(huì)對應(yīng)用的性能產(chǎn)生影響。然而該方案并沒有考慮如何將虛擬機(jī)的遷移數(shù)量降到最小,從而節(jié)省遷移總時(shí)間。
在面向節(jié)能的資源調(diào)度完成之后,需要通過虛擬機(jī)遷移實(shí)現(xiàn)節(jié)能目標(biāo)。Clark等[10]提出了基于內(nèi)存頁預(yù)拷貝方式的虛擬機(jī)在線遷移技術(shù),將虛擬機(jī)在線遷移的過程視為兩個(gè)主機(jī)的透明交互,將虛擬機(jī)的在線遷移過程細(xì)分為六個(gè)階段:預(yù)遷移階段、保留階段、迭代預(yù)拷貝階段、停機(jī)拷貝階段、應(yīng)答階段和激活階段。通過這六個(gè)階段將虛擬機(jī)從源主機(jī)遷移到目的主機(jī)上。由虛擬機(jī)在線遷移算法優(yōu)劣的評判標(biāo)準(zhǔn)[11]可知,內(nèi)存頁預(yù)拷貝方式存在著傳輸速率問題和頁重傳問題。針對這些問題,Hines等[12]提出一種基于內(nèi)存頁后拷貝方式的虛擬機(jī)在線遷移技術(shù),該技術(shù)直接在源主機(jī)上掛起虛擬機(jī),然后將虛擬機(jī)的CPU(vCPU)狀態(tài)拷貝到目的主機(jī),大大降低了采用預(yù)拷貝方式產(chǎn)生的停機(jī)時(shí)間,最后通過按需拷貝方式按照需求從源主機(jī)獲取內(nèi)存頁。
針對云計(jì)算能耗高的問題,文中提出一種面向節(jié)能的虛擬機(jī)在線遷移技術(shù),綜合多種性能參數(shù)衡量節(jié)點(diǎn)的資源使用情況,而不僅僅是文獻(xiàn)[8]中所考慮的CPU參數(shù),并在資源調(diào)度策略中考慮虛擬機(jī)的遷移數(shù)量因素,盡可能減少虛擬機(jī)的遷移數(shù)量,降低虛擬機(jī)遷移對服務(wù)質(zhì)量的影響。最后通過一種更高效可靠的基于內(nèi)存頁混合拷貝方式的虛擬機(jī)在線遷移技術(shù)完成虛擬機(jī)的遷移。待遷移工作完成后,關(guān)閉空閑節(jié)點(diǎn),從而優(yōu)化整個(gè)云計(jì)算中心的節(jié)能目標(biāo)。
從上述分析可知,該方案主要完成三個(gè)功能:
(1)資源監(jiān)測:根據(jù)應(yīng)用需求,靈活監(jiān)測云計(jì)算中心節(jié)點(diǎn)的資源使用率。
(2)資源調(diào)度:根據(jù)節(jié)點(diǎn)的資源使用情況,為所有需要遷移的虛擬機(jī)匹配最佳節(jié)點(diǎn)。
(3)虛擬機(jī)遷移:根據(jù)資源的匹配結(jié)果,通過一種更高效可靠的虛擬機(jī)遷移技術(shù),將虛擬機(jī)遷移到目標(biāo)節(jié)點(diǎn)上。
節(jié)點(diǎn)資源的監(jiān)測負(fù)責(zé)周期性監(jiān)測云計(jì)算中心所有運(yùn)行節(jié)點(diǎn)的負(fù)載率,定量分析各節(jié)點(diǎn)的資源使用情況。
為根據(jù)應(yīng)用需求靈活反映節(jié)點(diǎn)的負(fù)載情況,節(jié)點(diǎn)負(fù)載率應(yīng)為多種負(fù)載使用率的加權(quán)綜合值。針對節(jié)能需求,文中的性能參數(shù)有CPU、內(nèi)存、磁盤、帶寬以及溫度,因此節(jié)點(diǎn)的負(fù)載性能參數(shù)可用一個(gè)集合L={L1,L2,…,L5}表示。其中Li(1≤i≤5)分別表示vCPU核數(shù)、RAM、磁盤的使用率、帶寬以及溫度/100。
假設(shè)云計(jì)算中心有m個(gè)節(jié)點(diǎn),則節(jié)點(diǎn)Nj(1≤j≤m)的負(fù)載率為:
(1)
其中,αi為性能參數(shù)Li所對應(yīng)的權(quán)重系數(shù),且∑αi=1。
可以根據(jù)應(yīng)用需求對權(quán)重系數(shù)進(jìn)行調(diào)整,如對計(jì)算性能要求更高,可以增加CPU和RAM使用率的權(quán)重系數(shù),如果應(yīng)用偏重于數(shù)據(jù)的存儲(chǔ),可以提高磁盤使用率的權(quán)重系數(shù)。
資源調(diào)度負(fù)責(zé)根據(jù)資源調(diào)度的約束條件,選擇需要遷移的虛擬機(jī),并為它們匹配最佳的節(jié)點(diǎn)。
為實(shí)現(xiàn)節(jié)能目標(biāo),優(yōu)化資源調(diào)度的時(shí)間損耗,對待遷移的虛擬機(jī)的選擇和目標(biāo)節(jié)點(diǎn)的處理做如下約束:
(1)為達(dá)到節(jié)能目的,設(shè)定負(fù)載率遷出閾值,低于該閾值的節(jié)點(diǎn)上的所有虛擬機(jī)都需要遷移。
(2)為減少虛擬機(jī)和節(jié)點(diǎn)匹配的計(jì)算量,設(shè)定負(fù)載率遷入閾值。在虛擬機(jī)遷入之后節(jié)點(diǎn)負(fù)載率不能低于負(fù)載率遷入閾值。在此閾值之上,表明該節(jié)點(diǎn)滿負(fù)載,不再與其他虛擬機(jī)匹配。
在上述條件約束下,根據(jù)設(shè)定的負(fù)載率遷出閾值,將云計(jì)算中心所有運(yùn)行的節(jié)點(diǎn)劃分為正常負(fù)載節(jié)點(diǎn)和欠載節(jié)點(diǎn),所有欠載節(jié)點(diǎn)上的虛擬機(jī)均為需要遷移的虛擬機(jī),并將這些虛擬機(jī)添加到遷移列表中。
為降低占用資源多的虛擬機(jī)遷移的概率,從而減少虛擬機(jī)遷移的數(shù)量以及所有虛擬機(jī)遷移的總時(shí)間,按照虛擬機(jī)遷移時(shí)間的大小,對所有待遷移的虛擬機(jī)作升序排序。在虛擬機(jī)遷移時(shí)間的計(jì)算上,因虛擬機(jī)在線遷移傳輸?shù)氖窃撎摂M機(jī)的RAM和CPU的數(shù)據(jù),因此虛擬機(jī)遷移時(shí)間為該虛擬機(jī)占用的RAM和CPU的資源與帶寬的比值。
在確定虛擬機(jī)遷移的順序后,按序?yàn)槊總€(gè)需要遷移的虛擬機(jī)匹配目標(biāo)節(jié)點(diǎn)。在節(jié)點(diǎn)的選擇順序上,首先考慮正常負(fù)載節(jié)點(diǎn)集合中的資源,若正常負(fù)載節(jié)點(diǎn)集合無節(jié)點(diǎn)可用,且遷移列表未空,則選擇欠載節(jié)點(diǎn)集合中的資源。在欠載節(jié)點(diǎn)集合中節(jié)點(diǎn)的選擇順序上,倒序選擇遷移列表中的元素所在的節(jié)點(diǎn),以此減少虛擬機(jī)遷移的數(shù)量以及所有虛擬機(jī)遷移的總時(shí)間。在目標(biāo)節(jié)點(diǎn)的匹配上,通過計(jì)算待遷移虛擬機(jī)和所有符合條件的節(jié)點(diǎn)的成本值[13],定量分析虛擬機(jī)和各節(jié)點(diǎn)的匹配程度,并以最小成本值為原則,為虛擬機(jī)匹配最佳的目標(biāo)節(jié)點(diǎn)。虛擬機(jī)VMk(1≤k≤n,k為待遷移虛擬機(jī)的個(gè)數(shù))與節(jié)點(diǎn)Nj的成本值計(jì)算公式如下所示:
total_cost(VMkNj)=min{solo_cost(Si)}
(2)
其中
(3)
其中,left_Si為節(jié)點(diǎn)上剩余的Si資源;request_Si為虛擬機(jī)所請求的Si資源;total_Si為節(jié)點(diǎn)上所有的Si資源。
基于文獻(xiàn)[11]提出的虛擬機(jī)遷移原則,綜合考慮現(xiàn)有遷移方式中存在的問題,提出一種更高效可靠的虛擬機(jī)在線遷移方式—基于內(nèi)存頁混合拷貝方式的虛擬機(jī)在線遷移技術(shù)。該技術(shù)借鑒了內(nèi)存頁預(yù)拷貝方式中的迭代拷貝思想,并將其應(yīng)用于虛擬機(jī)內(nèi)存頁后拷貝方式的起始階段,從而降低虛擬機(jī)因缺頁導(dǎo)致的在目標(biāo)節(jié)點(diǎn)恢復(fù)失敗的風(fēng)險(xiǎn),同時(shí)虛擬機(jī)在遷移過程的按需拷貝階段可首先查詢本地?cái)?shù)據(jù),從而減少遷移總時(shí)間,進(jìn)一步提高服務(wù)性能。遷移流程如圖1所示。
圖1 虛擬機(jī)混合拷貝在線遷移流程
如圖1所示,該遷移流程分為三個(gè)階段:內(nèi)存頁迭代拷貝階段、vCPU狀態(tài)拷貝階段和內(nèi)存頁按需拷貝階段。在內(nèi)存頁迭代拷貝階段,將某一時(shí)刻虛擬機(jī)的內(nèi)存數(shù)據(jù)保存下來,并通過迭代拷貝方式傳輸?shù)侥康闹鳈C(jī)。vCPU狀態(tài)拷貝階段在虛擬機(jī)所占用的內(nèi)存數(shù)據(jù)拷貝完成后,掛起虛擬機(jī),并將此刻該虛擬機(jī)的vCPU狀態(tài)拷貝到目的主機(jī)中,在目的主機(jī)中啟動(dòng)該虛擬機(jī)。在內(nèi)存頁按需拷貝階段,優(yōu)先從本地獲取數(shù)據(jù),如果該數(shù)據(jù)所在頁面被標(biāo)記為“臟頁”或者查找不到該數(shù)據(jù),則向源主機(jī)發(fā)送缺頁請求。而在源主機(jī)上,啟動(dòng)計(jì)時(shí)器,計(jì)算等待請求的時(shí)間,每收到一次請求就更新一次計(jì)時(shí)器。如果在設(shè)定時(shí)間內(nèi)沒有收到目的主機(jī)發(fā)送過來的請求,則表明虛擬機(jī)在目的主機(jī)上恢復(fù)運(yùn)行,終止源主機(jī)上的虛擬機(jī)。
基于OpenStack平臺,通過擴(kuò)展其計(jì)算服務(wù)Nova[14]和虛擬機(jī)管理軟件Qemu實(shí)現(xiàn)節(jié)能目標(biāo)。首先,利用資源調(diào)度功能生成遷移列表vm_migrating_table和匹配列表mapping_table。然后,通過虛擬機(jī)遷移技術(shù)將每一個(gè)待遷移的虛擬機(jī)按序遷移到其對應(yīng)的目標(biāo)節(jié)點(diǎn)上。在遷移技術(shù)的實(shí)現(xiàn)上,首先擴(kuò)展Qemu實(shí)現(xiàn)基于混合拷貝技術(shù)的單個(gè)虛擬機(jī)的遷移,然后通過編寫腳本實(shí)現(xiàn)多個(gè)虛擬機(jī)的自動(dòng)遷移。
通過腳本文件migration.sh實(shí)現(xiàn)多個(gè)虛擬機(jī)的遷移。該腳本的功能是首先配置環(huán)境變量,獲取管理員權(quán)限,調(diào)用遷移功能;然后讀取遷移列表和匹配列表,遍歷遷移列表,根據(jù)匹配列表的匹配結(jié)果調(diào)用遷移命令nova live-migration完成遷移工作。腳本實(shí)現(xiàn)代碼如下:
#!/bin/bash
#配置環(huán)境變量
echo “source admin-openrc.sh”
#遍歷遷移列表vm_migrating_table中所有 #虛擬機(jī)
for key in `cat /vm_migrating_table `
do
#調(diào)用nova live-migration命令根據(jù)匹配#列表mapping_table遷移所有虛擬機(jī)
echo “nova live-migration $key `cat /mapping_table |grep key `”
done
nova live-migration命令通過調(diào)用基于內(nèi)存頁混合拷貝方式的虛擬機(jī)在線遷移技術(shù)完成遷移工作。該技術(shù)通過Qemu的自定義模塊myMigration實(shí)現(xiàn)。該技術(shù)的實(shí)現(xiàn)分為三個(gè)階段:內(nèi)存頁迭代預(yù)拷貝階段、vCPU狀態(tài)拷貝階段和內(nèi)存頁按需拷貝階段。假設(shè)通過資源的調(diào)度為host1上的虛擬機(jī)vm1匹配節(jié)點(diǎn)host2,遷移步驟如下:
階段1:迭代預(yù)拷貝內(nèi)存頁。首先在源主機(jī)host1上,啟動(dòng)Qemu中的socket接口,監(jiān)聽目的主機(jī)host2,等待host2連接;調(diào)用遷移線程函數(shù)migration_thread()完成迭代預(yù)拷貝功能。該函數(shù)的具體功能是:保存虛擬機(jī)vm1的狀態(tài),確保虛擬機(jī)vm1在遷移失敗之后還可以在源主機(jī)上繼續(xù)運(yùn)行;將vm1的狀態(tài)改為“migrating”;獲取vm1所占用的內(nèi)存數(shù)據(jù)大小;保存當(dāng)前所有內(nèi)存頁數(shù)據(jù);設(shè)定傳輸速率,通過socket接口將所有數(shù)據(jù)迭代拷貝到目的主機(jī)。在目的主機(jī)host2上,啟動(dòng)Qemu中的socket接口,調(diào)用qemu_loadvm_state()函數(shù)保存接收到的所有內(nèi)存頁。
階段2:拷貝vCPU數(shù)據(jù)。首先,在源主機(jī)host1上,所有內(nèi)存頁傳輸完畢,將虛擬機(jī)vm1的狀態(tài)改為“suspend”;調(diào)用qemu_savevm_state_complete()函數(shù)同步CPU所有信息(包括寄存器數(shù)據(jù)以及緩存數(shù)據(jù))。然后,在目的主機(jī)host2上,通過socket接收數(shù)據(jù),并存儲(chǔ)在/var/lib/nova/instances目錄下。等待所有數(shù)據(jù)傳輸完畢,啟動(dòng)虛擬機(jī)。
階段3:按需拷貝內(nèi)存頁。在目的主機(jī)host2上,如果所用數(shù)據(jù)在內(nèi)存頁中找到且未被更新過,就繼續(xù)運(yùn)行。如果找不到或已被更新,就向源主機(jī)發(fā)送請求,請求所用數(shù)據(jù)的相應(yīng)內(nèi)存頁,接收數(shù)據(jù),并通過逆xbzrle算法(xbzrle算法的反過程)恢復(fù)數(shù)據(jù),并繼續(xù)運(yùn)行。在源主機(jī)host1上,等待接收虛擬機(jī)的請求信息,如果接收到請求信息,就將該信息所占用的內(nèi)存頁數(shù)據(jù)與備份數(shù)據(jù)對比,通過xbzrle算法壓縮數(shù)據(jù)再傳輸?shù)絟ost2上;如果超過設(shè)定的時(shí)間沒有接收到請求,表明遷移完成,將虛擬機(jī)終止并刪除中間過程中產(chǎn)生的信息。
實(shí)驗(yàn)基于Centos7操作系統(tǒng),搭建OpenStack Kilo版本五節(jié)點(diǎn)平臺,并在該平臺上進(jìn)行驗(yàn)證。根據(jù)官方文檔依照基本環(huán)境配置、Keystone服務(wù)安裝和配置、Glance服務(wù)安裝和配置、Nova服務(wù)安裝和配置、Cinder服務(wù)安裝和配置的流程搭建完成OpenStack平臺[15]。為實(shí)現(xiàn)遷移功能,采用NFS軟件實(shí)現(xiàn)共享存儲(chǔ)服務(wù)[13]。在該系統(tǒng)中,OpenStack平臺由一個(gè)控制節(jié)點(diǎn)、一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)和三個(gè)計(jì)算節(jié)點(diǎn)組成,各節(jié)點(diǎn)硬件環(huán)境如表1所示。
表1 OpenStack平臺硬件環(huán)境
在平臺部署完成之后,首先在控制節(jié)點(diǎn)上,在Nova Scheduler的過濾模塊filters擴(kuò)展一個(gè)vmMigratingFilter子模塊,計(jì)算節(jié)點(diǎn)負(fù)載率并完成待遷移虛擬機(jī)的選擇功能,然后在Nova Scheduler的權(quán)衡模塊weights中擴(kuò)展一個(gè)myMetrics子模塊,為每一個(gè)待遷移的虛擬機(jī)匹配目標(biāo)節(jié)點(diǎn),并完成能耗計(jì)算。擴(kuò)展完成后,將這兩個(gè)模塊在配置文件nova.conf中做相應(yīng)配置[13],啟用這兩個(gè)子模塊。在根目錄下添加腳本文件migration.sh實(shí)現(xiàn)多個(gè)虛擬機(jī)的遷移,然后在各個(gè)計(jì)算節(jié)點(diǎn)的Qemu中添加一個(gè)自定義模塊myMigration,實(shí)現(xiàn)虛擬機(jī)的混合拷貝在線遷移技術(shù)。
為了驗(yàn)證該方案的性能,進(jìn)行了如下測試。
(1)能效測試。
重啟Nova服務(wù),指定多組{負(fù)載率遷出閾值,負(fù)載率遷入閾值},發(fā)送節(jié)能請求,完成測試過程,計(jì)算能效[16],并查看遷移后虛擬機(jī)的狀態(tài)信息,從而計(jì)算虛擬機(jī)遷移失敗率。根據(jù)這些權(quán)限值測得的數(shù)據(jù)如表2所示。
表2 基于OpenStack的能效相關(guān)統(tǒng)計(jì)信息 %
分析表2中的數(shù)據(jù)可知,負(fù)載率遷出閾值越高,虛擬機(jī)遷移失敗率就越高,而能效基本保持不變。這是因?yàn)樨?fù)載率遷出閾值越高,待遷移的虛擬機(jī)數(shù)目越大,正常負(fù)載集合可用資源變少,致使虛擬機(jī)遷移失敗率增高;由于負(fù)載率遷入閾值不變,資源總量基本不變,所以能效基本保持不變。負(fù)載率遷入閾值越高,虛擬機(jī)遷移失敗率越高,且能效越高。這是由于負(fù)載率遷入閾值越高,節(jié)點(diǎn)的資源使用率越高,因而能效越高,但由于滿負(fù)載區(qū)間(負(fù)載率為100%和負(fù)載率遷入閾值的差值)變小,虛擬機(jī)遷移失敗率會(huì)增高。因此可以得出,在OpenStack環(huán)境中,為達(dá)到節(jié)能目標(biāo),必定會(huì)帶來虛擬機(jī)遷移失敗問題,即二者不可兼得;此外,為提高能效,可盡量提高負(fù)載率遷入閾值。
(2)虛擬機(jī)在線遷移技術(shù)測試。
使用Nova服務(wù)原有的在線遷移命令nova live-migration
圖2 虛擬機(jī)在線遷移停機(jī)時(shí)間對比
通過圖2和圖3可以看出,對于停機(jī)時(shí)間參數(shù),隨著虛擬機(jī)越來越大,混合拷貝方式的停機(jī)時(shí)間低于預(yù)拷貝方式。這是由于混合拷貝方式在停機(jī)拷貝階段只傳輸該虛擬機(jī)的CPU信息,而預(yù)拷貝方式在停機(jī)拷貝階段傳輸?shù)牟粌H有CPU信息還有內(nèi)存頁數(shù)據(jù)。在遷移總時(shí)間方面,內(nèi)存頁混合拷貝方式的遷移總時(shí)間較預(yù)拷貝方式也明顯降低。這是因?yàn)轭A(yù)拷貝方式的迭代傳輸會(huì)造成內(nèi)存頁冗余較大,而混合拷貝方式在按需拷貝階段只需傳輸一次內(nèi)存頁即可。實(shí)驗(yàn)結(jié)果證明了這一理論,說明該方案可以降低虛擬機(jī)在線遷移過程中的停機(jī)時(shí)間,同時(shí)也大大降低了遷移總時(shí)間,從而提高了服務(wù)性能。
圖3 虛擬機(jī)在線遷移總時(shí)間對比
在云計(jì)算環(huán)境中,針對由于其基本服務(wù)單元虛擬機(jī)的動(dòng)態(tài)變化造成某些節(jié)點(diǎn)負(fù)載過低而導(dǎo)致資源閑置和能源消耗的問題,提出一種面向節(jié)能的虛擬機(jī)在線遷移解決方案。通過虛擬機(jī)整合,提高單個(gè)節(jié)點(diǎn)的資源使用率,減少運(yùn)行節(jié)點(diǎn)的數(shù)量,關(guān)閉零負(fù)載節(jié)點(diǎn),從而達(dá)到節(jié)能的目的。該方案通過節(jié)點(diǎn)資源的監(jiān)測、資源的調(diào)度和虛擬機(jī)的遷移技術(shù),綜合衡量節(jié)點(diǎn)的資源使用率,選擇待遷移的虛擬機(jī)、為待遷移虛擬機(jī)匹配最佳的節(jié)點(diǎn),實(shí)現(xiàn)高效可靠的基于內(nèi)存頁混合拷貝方式的虛擬機(jī)在線遷移技術(shù),并在OpenStack平臺上進(jìn)行了實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,該方案可以進(jìn)一步提高虛擬機(jī)遷移過程中的服務(wù)質(zhì)量,有效降低能耗,實(shí)現(xiàn)了節(jié)能的優(yōu)化目標(biāo)。
[1] 中國云計(jì)算數(shù)據(jù)中心節(jié)能現(xiàn)狀深度分析[EB/OL].2016.http://tech.idcquan.com/pro/102749.shtml.
[2] 張慧珍,李長春,周培琴,等.云計(jì)算數(shù)據(jù)中心節(jié)能技術(shù)研究[J].信息系統(tǒng)工程,2013(10):79-80.
[3] 譚一鳴,曾國蓀,王 偉.隨機(jī)任務(wù)在云計(jì)算平臺中能耗的優(yōu)化管理方法[J].軟件學(xué)報(bào),2012,23(2):266-278.
[4] CORRADI A,FANELLI M,FOSCHINI L.VM consolidation:a real case based on OpenStack cloud[J].Future Generation Computer Systems,2014,32:118-127.
[5] 陳 恂.OpenStack平臺的虛擬機(jī)調(diào)度關(guān)鍵技術(shù)研究[D].杭州:杭州電子科技大學(xué),2014.
[6] OpenNebula. The cloud data center management solution[EB/OL].2016.https://www.opennebula.org/.
[7] 王 旭.基于能耗約束的虛擬機(jī)調(diào)度策略研究[D].昆明:云南大學(xué),2011.
[8] RAGHAVENDRA R,RANGANATHAN P,TALWAR V,et al.No power struggles:coordinated multi-level power management for the data center[J].ACM SIGARCH Computer Architecture News,2008,36(1):48-59.
[9] PINHEIRO E,BIANCHINI R,CARRERA E V,et al.Load balancing and unbalancing for power and performance in cluster-based systems[C]//Workshop on compilers and operating systems for low power.[s.l.]:[s.n.],2003:182-195.
[10] CLARK C,FRASER K,HAND S,et al.Live migration of virtual machines[C]//Proceedings of the 2nd conference on symposium on networked systems design & implementation.Berkeley,CA,USA:USENIX Association,2005:273-286.
[12] HINES M R,GOPALAN K.Post-copy based live virtual machine migration using adaptive pre-paging and dynamic self-ballooning[C]//Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on virtual execution environments.Washington,DC:ACM,2009:51-60.
[13] 陳伯龍,程志鵬.云計(jì)算與OpenStack(虛擬機(jī)Nova篇)[M].北京:電子工業(yè)出版社,2013.
[14] 戢 友.OpenStack開源云-王者歸來[M].北京:清華大學(xué)出版社,2014.
[15] OpenStack.Install guides[EB/OL].2016.http://docs.open stack.org/kilo/.
[16] BELOGLAZOV A,BUYYA R.Adaptive threshold-based approach for energy-efficient consolidation of virtual machines in cloud data centers[C]//Proceedings of the 8th international workshop on middleware for grids,clouds and e-science.New York:ACM,2010:1-6.