国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于COW雙寫的虛擬機(jī)磁盤全量遷移關(guān)鍵技術(shù)

2020-01-08 02:22王科丁倩梅余萬
現(xiàn)代信息科技 2020年15期

王科 丁倩梅 余萬

摘 ?要:虛擬機(jī)熱遷移技術(shù)是指可以把一個(gè)虛擬機(jī)從一臺(tái)物理服務(wù)器遷移到另一臺(tái)物理服務(wù)器上,整個(gè)過程虛擬機(jī)內(nèi)部業(yè)務(wù)不中斷,虛擬機(jī)熱遷移大多是基于共享存儲(chǔ)進(jìn)行遷移,磁盤未使用熱遷移技術(shù)。提出主要解決磁盤熱遷移優(yōu)化的算法及方案,主要適用于將虛擬機(jī)從一個(gè)存儲(chǔ)載體以全量的形式熱遷移至另一個(gè)存儲(chǔ)載體,亦適用含有內(nèi)存遷移的虛擬機(jī)整機(jī)遷移。通過算法將實(shí)現(xiàn)虛擬機(jī)的快速部署、快速動(dòng)態(tài)分配等各種應(yīng)用場(chǎng)景,達(dá)到節(jié)能降耗、負(fù)載均衡的目的。

關(guān)鍵詞:COW;全量遷移;整機(jī)遷移

中圖分類號(hào):TP302;TP309.3 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)15-0104-04

Abstract:Virtual machine hot migration technology refers to that a virtual machine can be migrated from one physical server to another. The internal business of virtual machine is not interrupted in the whole process. Virtual machine hot migration is mostly based on shared storage,and the disk does not use hot migration technology. This paper puts forward the algorithm and scheme to solve the hot migration optimization of disk. It is mainly suitable for the hot migration of virtual machine from one storage carrier to another in the form of full quantity,and also suitable for the whole virtual machine migration with memory migration. Through the algorithm,various application scenarios such as rapid deployment and dynamic allocation of virtual machine will be realized to achieve the purpose of energy saving,consumption reduction and load balancing.

Keywords:COW;full disk migration;whole machine migration

0 ?引 ?言

近年來,虛擬化技術(shù)已經(jīng)成為云數(shù)據(jù)中心大規(guī)模推廣部署的核心技術(shù)。通過虛擬化技術(shù)將海量的底層基礎(chǔ)計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源等實(shí)例化一臺(tái)獨(dú)立的虛擬機(jī)器,而虛擬機(jī)遷移是數(shù)據(jù)中心的常見業(yè)務(wù)場(chǎng)景,虛擬機(jī)的遷移技術(shù)實(shí)現(xiàn)了虛擬機(jī)從一臺(tái)物理機(jī)到另外一臺(tái)物理機(jī)的遷移,使數(shù)據(jù)中心的資源配置更加靈活。一般虛擬機(jī)遷移技術(shù)分為冷遷移,即停機(jī)遷移;熱遷移,即在線不停機(jī)遷移[1]。實(shí)際運(yùn)用中常用到熱遷移,虛擬機(jī)熱遷移是虛擬化技術(shù)的重要組成部分,也是實(shí)現(xiàn)云計(jì)算中基礎(chǔ)設(shè)施和服務(wù)的重要基礎(chǔ)。筆者在日常教學(xué)科研中關(guān)注到國(guó)內(nèi)外對(duì)虛擬機(jī)遷移技術(shù)的研究中磁盤部分許多采用增量快照的方案,這樣效率高,耗時(shí)少,但存在一定的使用場(chǎng)景限制和速率瓶頸。而基于COW(Copy On Write,寫時(shí)復(fù)制)雙寫(遷移過程中產(chǎn)生的動(dòng)態(tài)數(shù)據(jù)同時(shí)寫入源主機(jī)與目的主機(jī))的虛擬機(jī)磁盤全量或整機(jī)遷移技術(shù)[2],在保證高效率、低耗時(shí)的情況下,主要針對(duì)優(yōu)化虛擬機(jī)多磁盤全量遷移和整機(jī)遷移過程中存在可靠性、遷移速度、物理機(jī)額外開銷等問題,適用于全量備份場(chǎng)景。

筆者在高校云計(jì)算平臺(tái)的教學(xué)過程中,結(jié)合之前工作經(jīng)驗(yàn),因多次涉及各類遷移,發(fā)現(xiàn)非共享存儲(chǔ)遷移很慢,通過教學(xué)實(shí)驗(yàn)測(cè)試得出通過熱遷移可以極大地減少停機(jī)遷移的時(shí)間成本、服務(wù)成本開銷,保障服務(wù)的連續(xù)性,提高了云數(shù)據(jù)中心資源的配置能力。經(jīng)研究遷移原理后編寫DEMO驗(yàn)證,并通過本文進(jìn)行記錄。

1 ?Xen預(yù)拷貝算法改進(jìn)思路

1.1 ?改進(jìn)可能存在的數(shù)據(jù)多次傳輸

通常磁盤遷移下的預(yù)拷貝算法,首先是將所有的數(shù)據(jù)塊先拷貝至目的主機(jī),然后由Bitmap記錄臟數(shù)據(jù)塊并進(jìn)行迭代傳輸[3]。存在這樣一種情況:涉及到內(nèi)存遷移的情況時(shí),內(nèi)存遷移迭代的是每次傳送在上次迭代中修改了的頁,簡(jiǎn)稱“臟頁”。對(duì)于一些修改比較頻繁的臟頁,臟數(shù)據(jù)塊產(chǎn)生時(shí),其對(duì)應(yīng)的數(shù)據(jù)塊在第一次還未被拷貝至目的主機(jī),若按照預(yù)拷貝算法[4],這個(gè)數(shù)據(jù)塊位置的數(shù)據(jù)將被拷貝兩次,也有可能在傳輸過程中多次被遷移,從而使整個(gè)傳輸過程傳送的效率非常低。這些臟頁又被稱為“工作集”,工作集如果在傳輸中反復(fù)地被傳送,會(huì)增加總遷移時(shí)間,所以需要一種策略去測(cè)定工作集,避免重復(fù)的傳送造成的不必要消耗。

因此需要引入一個(gè)傳輸策略來控制數(shù)據(jù)的傳輸。提出引入傳輸水線(Transfer Level)對(duì)此種情況進(jìn)行優(yōu)化。水線是一個(gè)讀進(jìn)程鎖,通過算法,將其用于記錄傳輸靜態(tài)數(shù)據(jù)塊位置,位于水線之后的數(shù)據(jù)[5],無論Write_Read_thread怎么改動(dòng),其臟數(shù)據(jù)都不會(huì)被傳送至目的虛擬機(jī)[6],而位于水線之前的數(shù)據(jù)在被Write_Read_thread改動(dòng)后會(huì)立即被傳輸過去,如圖1所示。其中aaa、ddd為內(nèi)存對(duì)應(yīng)位置原始數(shù)據(jù);bbb、ccc為讀寫現(xiàn)場(chǎng)正寫入的數(shù)據(jù);S_dyn_thread源主機(jī)發(fā)送動(dòng)態(tài)變化數(shù)據(jù)的線程;D_dyn_data目標(biāo)主機(jī)接受動(dòng)態(tài)變化數(shù)據(jù)的線程;S_static_thread源主機(jī)逐個(gè)發(fā)送動(dòng)態(tài)靜態(tài)數(shù)據(jù)的線程;D_static_data為目標(biāo)主機(jī)接受靜態(tài)數(shù)據(jù)的線程;TCP_SOCKET為tcp傳輸SCOKET。

而其中水線的移動(dòng)需要一個(gè)移動(dòng)策略,來控制水線什么時(shí)候移動(dòng),以及每次移動(dòng)位置實(shí)現(xiàn)什么功能。保證傳輸?shù)膬?yōu)化效率達(dá)到最高。但制定此策略前需要對(duì)動(dòng)態(tài)數(shù)據(jù)的寫入情況進(jìn)行一個(gè)位置的判定,這里我們?cè)陂_始傳輸前結(jié)合Linux虛擬機(jī)的Ext4文件系統(tǒng)VHD的寫入規(guī)則對(duì)新數(shù)據(jù)的位置進(jìn)行判斷[7]。

我們將磁盤大小的5%預(yù)留作為不被傳輸?shù)膮^(qū)塊,且這5%的區(qū)塊是大量新數(shù)據(jù)即將寫入的區(qū)塊,如圖2所示。

當(dāng)水線(圖2中虛線)移動(dòng)到預(yù)留區(qū)塊(圖2中虛線箭頭中間區(qū)域)首部時(shí),水線直接跳過預(yù)留區(qū)塊至其尾部,然后再正常移動(dòng)。在水線移動(dòng)到圖中實(shí)線位置時(shí),按照水線之前的數(shù)據(jù)(不包括預(yù)留區(qū)塊中的數(shù)據(jù))在被Write_Read_thread改動(dòng)后會(huì)被立即傳輸至目的虛擬機(jī),位于水線之后的數(shù)據(jù),無論Write_Read_thread怎么改動(dòng),其臟數(shù)據(jù)都不會(huì)被傳送的方法進(jìn)行傳輸。當(dāng)磁盤全量遷移完成進(jìn)入雙寫階段,即水線位于傳輸隊(duì)列尾部時(shí),水線回移到預(yù)留區(qū)塊的首部,此時(shí)解除預(yù)留區(qū)塊不被傳輸?shù)膶傩?,恢?fù)正常的傳輸,水線正常移動(dòng),水線之前的臟數(shù)據(jù)保持雙寫,而水線之后至預(yù)留區(qū)塊尾部之間的數(shù)據(jù)保持不被傳輸,水線正常移動(dòng)至預(yù)留區(qū)塊尾部時(shí),若此刻水線之后還有相應(yīng)預(yù)留區(qū)塊,則水線移到此預(yù)留區(qū)塊的首部重復(fù)上述過程。若此刻水線之后不存在相應(yīng)的預(yù)留區(qū)塊,則水線移到傳輸隊(duì)列尾部,此時(shí)保持水線之前數(shù)據(jù)的雙寫,等待內(nèi)存遷移。

1.2 ?目的主機(jī)可能存在的數(shù)據(jù)多次寫入

磁盤遷移下的預(yù)拷貝算法[8],第一步是將所有的數(shù)據(jù)塊先拷貝至目的主機(jī),然后記錄臟數(shù)據(jù)塊并進(jìn)行迭代傳輸。存在這樣一種情況:不在同一個(gè)傳輸周期內(nèi)同一數(shù)據(jù)塊位置變臟的時(shí)候,該數(shù)據(jù)塊位置的數(shù)據(jù)將多次被傳輸至目的主機(jī),目的主機(jī)將多次寫入。對(duì)于磁盤遷移的情況,將多次產(chǎn)生磁盤I/O。提出在目的主機(jī)引入緩存對(duì)此種情況進(jìn)行優(yōu)化,如圖3所示。

2 ?整體實(shí)現(xiàn)方案

2.1 ?總體方案設(shè)計(jì)

方案中遷移前資源檢查、其他設(shè)備的遷移等方案保持與現(xiàn)有系統(tǒng)一致,改進(jìn)方案只針對(duì)磁盤遷移相關(guān)模塊。提出的改進(jìn)方案支持一個(gè)虛擬機(jī)多個(gè)磁盤的全量遷移,亦支持一個(gè)虛擬機(jī)多個(gè)磁盤全量整機(jī)遷移(含內(nèi)存遷移)。實(shí)現(xiàn)流程如圖4所示[9]。

(1)源端Xen向Mg_agent模塊下發(fā)磁盤遷移命令(含遷移相關(guān)信息);

(2)源端Mg_agent從Xenstore中讀取源磁盤信息;

(3)源端Mg_agent向各個(gè)對(duì)應(yīng)的Tapdisk2進(jìn)程發(fā)送信號(hào);

(4)源端Tapdisk2開始磁盤全量遷移流程,在磁盤Block寫入處打開動(dòng)態(tài)數(shù)據(jù)判斷及動(dòng)態(tài)數(shù)據(jù)傳輸流程;

(5)目的端Mg_agent收到源端發(fā)送的靜態(tài)數(shù)據(jù)、動(dòng)態(tài)數(shù)據(jù);

(6)目的端收到的動(dòng)態(tài)數(shù)據(jù)采用Bitmap記錄,并緩存,達(dá)到閾值再寫入磁盤;

(7)目的端收到靜態(tài)數(shù)據(jù)后判斷動(dòng)態(tài)數(shù)據(jù)的Bitmap是否有臟位(解決臨界數(shù)據(jù)可能出現(xiàn)的傳輸?shù)竭_(dá)先后問題),決定是否寫入目的磁盤。

2.2 ?引入Mg_agent進(jìn)行多磁盤遷移的控制

2.2.1 ?對(duì)于不同主機(jī)多個(gè)磁盤全量遷移的情況

由引入的Mg_agent模塊進(jìn)行協(xié)調(diào),其同時(shí)啟動(dòng)磁盤全量遷移,先完成數(shù)據(jù)傳輸?shù)拇疟P保持雙寫狀態(tài),等待其他磁盤完成,之后完成的磁盤也保持雙寫,等待剩余磁盤的數(shù)據(jù)傳輸。[10]流程如圖5所示。

2.2.2 ?對(duì)于不同主機(jī)多個(gè)磁盤全量整機(jī)遷移(含內(nèi)存遷移)的情況

在Xen模塊中sleep_vm()前觸發(fā)引入的Mg_agent模塊進(jìn)行磁盤全量整機(jī)遷移(含內(nèi)存遷移),即,當(dāng)磁盤全量遷移完成進(jìn)入雙寫階段后開始內(nèi)存遷移[11]。流程如圖6所示。

2.2.3 ?對(duì)于在同一臺(tái)主機(jī),不同存儲(chǔ)設(shè)備之間磁盤全量遷移的情況

Mg_agent模塊不用將靜態(tài)數(shù)據(jù)與緩存的動(dòng)態(tài)數(shù)據(jù)通過TCP_SOCKET發(fā)送至目的主機(jī),而是直接寫入目的存儲(chǔ)設(shè)備[12],即,將發(fā)送至網(wǎng)絡(luò)替換為寫入目的存儲(chǔ)設(shè)備。流程如圖7所示。

3 ?方案測(cè)試和分析

3.1 ?實(shí)驗(yàn)?zāi)康?/p>

通過本方案[13]的優(yōu)化算法及措施,在Xen平臺(tái)上實(shí)現(xiàn)虛擬機(jī)的熱遷移,在10 GB磁盤、20 GB磁盤、50 GB磁盤、100 GB磁盤大小并分別在1 GB、2 GB、3 GB、5 GB動(dòng)態(tài)數(shù)據(jù)寫入量的情況下測(cè)出數(shù)據(jù)包優(yōu)化前的實(shí)際傳輸量以及優(yōu)化后的傳輸量。

3.2 ?實(shí)驗(yàn)數(shù)據(jù)分析

從表1可知,優(yōu)化方案基于以下兩個(gè)方向進(jìn)行優(yōu)化:一是磁盤大小;二是遷移期間數(shù)據(jù)寫入量。當(dāng)磁盤大小一致時(shí),數(shù)據(jù)寫入量越大,優(yōu)化方案優(yōu)化效率越低,反之越高,甚至優(yōu)化后寫入數(shù)據(jù)傳輸量可以為零。當(dāng)寫入數(shù)據(jù)大小一致時(shí),磁盤越大,優(yōu)化方案優(yōu)化效率越高,甚至磁盤在足夠大的情況下優(yōu)化后可以實(shí)現(xiàn)寫入數(shù)據(jù)的傳輸為零。

4 ?結(jié) ?論

本文通過對(duì)現(xiàn)有動(dòng)態(tài)遷移機(jī)制的研究和分析,將傳輸水線思想引入拷貝策略當(dāng)中,在一定程度上減少了實(shí)際遷移磁盤Block的數(shù)量和遷移時(shí)間。下一步將繼續(xù)研究通過預(yù)測(cè)磁盤Block的改變概率,分批次對(duì)文中提及的靜態(tài)數(shù)據(jù)進(jìn)行拷貝,進(jìn)一步降低重復(fù)拷貝的可能性,進(jìn)而更進(jìn)一步優(yōu)化傳輸。

參考文獻(xiàn):

[1] 高翔.基于Xen的虛擬機(jī)動(dòng)態(tài)遷移算法優(yōu)化 [D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.

[2] 劉鎏,虞紅芳,鄭少平.面向業(yè)務(wù)動(dòng)態(tài)變化的虛擬機(jī)遷移技術(shù)研究 [J].計(jì)算機(jī)應(yīng)用研究,2016,33(2):534-539.

[3] 劉詩(shī)海,孫宇清,石維琪,等.面向可擴(kuò)展集群環(huán)境的快速虛擬機(jī)遷移方法 [J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,41(3):468-472.

[4] 鄭婷婷,武延軍,賀也平.云計(jì)算環(huán)境下的虛擬機(jī)快速克隆技術(shù) [J].計(jì)算機(jī)工程與應(yīng)用,2011,47(13):63-67.

[5] 常德成,徐高潮.虛擬機(jī)動(dòng)態(tài)遷移方法 [J].計(jì)算機(jī)應(yīng)用研究,2013,30(4):971-976.

[6] 周晨.云計(jì)算中面向能耗的虛擬機(jī)遷移研究 [D].南京:南京郵電大學(xué),2016.

[7] 劉海坤.虛擬機(jī)在線遷移性能優(yōu)化關(guān)鍵技術(shù)研究 [D].武漢:華中科技大學(xué),2012.

[8] CLARK C,F(xiàn)RASER K,HAND S,et al. Live migration of virtual machines [C]//NSDI05:Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation. Berkeley,CA,United States:USENIX Association,2005:273-286.

[9] CHAGANTI P. Xen Virtualization:A fast and practical guide to supporting multiple operating systems with the Xen hypervisor [M].Birmingham,UK:Packt Publishing,2007.

[10] 周煜,盧正添,易固武,等.一種基于過濾驅(qū)動(dòng)的寫時(shí)拷貝快照方法 [J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,47(3):478-482.

[11] LIU H K,JIN H,LIAO X F,et al. Live migration of virtual machine based on full system trace and replay [C]//HPDC09:Proceedings of the 18th ACM international symposium on High performance distributed computing,New York,NY,United States:ACM,2009.

[12] 陳彬,肖儂,蔡志平,等.基于優(yōu)化的COW虛擬塊設(shè)備的虛擬機(jī)按需部署機(jī)制 [J].計(jì)算機(jī)學(xué)報(bào),2009,32(10):1915-1926.

[13] 何玫峻,金連文,李磊.基于混合遷移的OpenStack虛擬機(jī)在線遷移改進(jìn)方案 [J].系統(tǒng)工程理論與實(shí)踐,2014,34(s1):216-220.

作者簡(jiǎn)介:王科(1985—),男,漢族,四川成都人,講師,碩士研究生,研究方向:云計(jì)算、大數(shù)據(jù)。

隆尧县| 东城区| 楚雄市| 布尔津县| 镇沅| 凤冈县| 美姑县| 肇源县| 五家渠市| 新安县| 顺平县| 宜昌市| 揭西县| 若尔盖县| 赤水市| 山阳县| 宜川县| 松潘县| 南部县| 府谷县| 田东县| 荆州市| 余干县| 洪洞县| 昭觉县| 民县| 奇台县| 佛山市| 丰台区| 福安市| 高邑县| 鹤山市| 东海县| 通河县| 大足县| 大港区| 济南市| 白玉县| 鄂温| 伊通| 墨竹工卡县|