天天看點

虛拟機遷移研究

虛拟機遷移研究

國内外對虛拟機遷移的研究主要集中在四個方面:(1)虛拟機記憶體狀态的遷移算法;(2)虛拟機外設的遷移,包括磁盤和網絡裝置等;(3)虛拟機的放置算法,主要包括虛拟機遷移的3W(when,Which,Where)問題;(4)虛拟機遷移的應用。

1 虛拟機的記憶體遷移算法

虛拟機遷移有兩項重要的性能名額:停機時間(migration downtime )和遷移總時間(也稱遷移延遲migrationlatency )。在資料中心采用共享存儲(sAN 或NAS) 的設計時,虛拟機記憶體鏡像的遷移政策将對這兩項名額起決定性作用。針對不同的應用需求,在這兩項名額之間做權衡可以設計出不同的遷移算法:“停止一拷貝( stop 一and 一copy ) ”算法,“預拷貝(pre 一copying ), “後拷貝(post 一copying ) " ,以及“懶惰拷貝(lazy 一copying ) ”算法。

最簡單的遷移算法莫過于“停止一拷貝”算法,它在虛拟機遷移時直接停止作業系統的運作,待記憶體鏡像轉移完畢後在目标主機端恢複虛拟機的執行。該算法同其它算法相比,在同等網絡環境下造成的停機時間最長,但山于拷貝的資料量最少,是以遷移總時間最短。

“預拷貝”算法設計的首要目标在于如何有效降低遷移過程中的系統停機時間,VMware和Xen 等主流虛拟化平台的線上遷移技術都是基于預拷貝算法。這裡簡要介紹一下xen 實作的預拷貝算法:

(1) 當遷移指令發出後,虛拟機所在的源節點檢查目标節點是否擁有足夠的資源,如果資源充足則執行預遷移(Pre 一migration )和資源預留過程。

(2) 接着,源節點的虛拟機管理器(vMM )執行預拷貝(pre-copy )過程,預拷貝過程中,源主機将guest VM 的所有頁面都發送到目标節點。xen 使用一個Bitmap 即來标示頁面傳輸過程中被修改過的髒頁面。在發送頁面之前需要先将guestVM的影子頁表中相應的髒頁位置位。在頁傳輸過程中,guest VM保持繼續運作狀态。是以,一些已經發送的頁面會在虛拟機繼續執行中被修改。這些被修改的頁面在髒頁位圖資料結構中自動地設定為髒頁,以便在下一輪拷貝中可以被識别。

(3)在每一輪傳輸之前,XenVMM需要先把記錄髒頁的Bitmap拷貝一份,然後Bitmap中所有已經被标示為髒頁的bit位被清零,以便記錄該輪拷貝中産生的髒頁。虛拟機所在的源主機反複地發送這些被修改的頁面到目的端,直到通過啟發式方法确定預拷貝過程對于減小虛拟機遷移停機時間不再有貢獻為止。

(4)此時,guest VM需要停止運作,源主機将最後一批修改的頁面以及該時刻的VCPU的狀态發送掃目标節點,這個過程被稱為“停止-拷貝”過程。通過最後的同步,guest VM在目标主機端的狀态就和源主機端一緻了。

(5)最後,目标主機接收到源主機發送的遷移完成的确認消息之後,就可以放棄源主機上的虛拟機了。目标機器上的虛拟機管理器程式掃描虛拟機的記憶體映射,重新改寫客戶作業系統的頁表,配置設定新的記憶體頁表位址。新虛拟機從舊虛拟機的斷點處開始恢複執行,并重新啟動器虛拟裝置驅動程式并更新時鐘,遷移結束。

這種記憶體到記憶體的同步算法通過多輪疊代來同步源主機和目标主機之間記憶體的變化資料,使得在遷移的停止一拷貝階段,目标主機中需要傳輸的記憶體髒資料量降低到最小,進而大大減小了虛拟機停機來同步這部分記憶體資料的網絡傳輸時間,因而可以讓使用者幾乎無法感覺到虛拟機的遷移。經測試,預拷貝算法能夠在一秒鐘之内(根據虛拟機的記憶體大小不同,遷移時間從60 毫秒到1 秒不等)從一個實體節點遷移到另外一個實體節點,幾乎不會影響到使用者體驗。該算法同其它算法相比可以獲得最短的虛拟機停機時間,但由于預拷貝過程需要多輪地重複拷貝記憶體髒資料,尤其是遷移那些記憶體密集型的應用時會造成較長時間的遷移延遲。

與“預拷貝”算法相反,“後拷貝”算法首先拷貝的是VCPU 的狀态和虛拟機能夠恢複運作的最小工作集,然後源主機上的虛拟機停止執行,目标主機上利用這個最小工作集開始運作,此後源主機開始發送尚未拷貝的其它記憶體頁面到目标主機(push 過程),在此過程中,倘若虛拟機執行過程中需要通路的記憶體頁面還沒有拷貝到目标主機端,則會造成一個缺頁中斷,目标主機端的遷移控制程式以同步方式請求源主機立即發送該記憶體頁面(pull 過程)。該算法由于不需要重複拷貝虛拟機的記憶體頁面資料,是以遷移總時間最短并且需要傳輸的資料量最少,但由于停機時需要拷貝相對較大的虛拟機工作集,因而虛拟機的停機時間将很長,同時由于遷移過程中可能造成的大量遠端記憶體通路會影響程式執行的效率,造成較大的性能損失。

比“後拷貝”算法更加極端的是“懶惰拷貝”算法,該算法思想和“後拷貝”相似,都是先傳輸虛拟機的最小工作集到目标主機端恢複執行,不同的是,該算法不主動發送剩餘的大量記憶體資料,而是在虛拟機運作過程中每發生一次缺頁中斷後才一會把記憶體頁面拷貝到目标主機端。由于這種按需請求記憶體的方式嚴重影響了虛拟機恢複執行後的性能,同時造成對源主機長時間的遺留依賴,遷移完成總時間很難估計,該算法幾乎不會被運用到實際的系統中。

綜上所述,這幾種算法在量化名額不同時都互有優劣,針對不同的應用場景,可以通過啟發式的政策選擇不同的算法。但是,在實際系統(VMware , Xen , KVM 等)中應用的算法目前隻有“預拷貝”算法,“後拷貝”算法将來可能會被Xen 虛拟化平台采用。然而,由于“預拷貝”和“後拷貝”算法都是基于記憶體同步機制的,是以在遷移記憶體密集型應用時普遍存在同步效率不高,虛拟機性能損耗較大的問題。

2 虛拟機的外設遷移

    虛拟機外設資源的遷移是完成虛拟機遷移的一個重要方面,包括虛拟機檔案系統的遷移以及網絡裝置的重定向,是消除對源主機的遺留依賴關系、保證虛拟機遷移的透明性和遷移後運作性能的關鍵技術。

    (1)檔案系統的遷移

針對虛拟機的外存遷移問題,有些研究機構研究了在分布式環境下如何進行虛拟機遷移的問題。此時,虛拟機遷移不需要保證程式的線上運作,而需要儲存一個檢查點狀态,但是需要對存儲系統(檔案系統)進行遷移。網絡挂起/恢複ISR系統是由CMU開發的,通過在分布式存儲器上安裝虛拟機,IsR 系統可以讓虛拟機封裝使用者的操作狀态,把每個使用者的計算環境狀态收內建一組檔案稱之為parcel,然後通過分布式存儲器可以在不同的時空重制使用者執行環境。使用者可以有很多parcel ,就像他們可以有很多套帶有作業系統或者應用程式的機器一樣,并把這些pareel 儲存在集中的網絡伺服器中,使用一個大規模的分布式檔案系統來存儲所有的parcel。在任何一個有ISR 系統安裝的客戶機上,可以從分布式存儲系統取得挂起的parcel ,并恢複挂起時刻的狀态,完全保留了使用者最後一次的工作狀态。斯坦福大學的collective項目研究人員研究了如何使用寫時複制( copy-on-write )技術通過增量機制傳送一個虛拟機的鏡像。在傳輸虛拟機鏡像的時候,使用哈希函數來判斷重複的資料塊,僅發送不相同的資料塊;若虛拟機在運作過程中,則僅需要傳輸所需要的資料塊,而無需一次就傳輸整個虛拟機所需要的大型系統檔案,并且使用記憶體排除的政策盡量減少所需要發送的實體記憶體的容量,進而達到通過慢速的網絡遷移一個完整虛拟機的目的。這兩個典型系統都是通過“冷遷移”方式遷移完整的虛拟機,包括CPU ,記憶體,外存,以及裝置狀态。完整虛拟機的遷移使得使用者能夠通過虛拟機的封裝特性在任何地點都可以保持虛拟桌面運作環境的一緻性。但是,由于存儲系統涉及到的資料量巨大,目前一個典型的桌上型電腦硬碟可能達到數百個GB 的容量,如果對于所有的檔案都要進行網絡傳輸,往往會花費大量的時間和網絡流量,并且這種外存遷移的方式主要基于“停止一拷貝”模式,虛拟機需要中斷很長時間。

然而,在某些情況下,使用網絡檔案系統可以回避檔案系統遷移的問題。例如,目前資料中心一般會采用網絡存儲系統(Network 一Attached Storage )或存儲區域網絡( storage Aiea Network ) ,這樣叢集中所有的主機都可以一緻地通路網絡檔案系統。在這樣的情況下,虛拟機遷移就不用考慮檔案系統遷移的問題。但是,并非所有的虛拟機都通過網絡檔案系統來通路外存資料,某些系統仍然存在着本地存儲。這種情形下,完成虛拟機的線上遷移還必須遷移本地的外存資料。有人提出了在資料塊級别的寫追蹤機制,并通過預拷貝算法來增量地同步虛拟機的鏡像資料,進而可以在區域網路環境下對使用本地磁盤的虛拟機實作透明的遷移。為了實作在廣域網環境下的虛拟機遷移,提出了在資料塊級别的預拷貝算法以及寫操作扼殺的機制來遷移虛拟機的鏡像檔案,并且通過動态DNS 及IP 隧道機制來保持網絡連接配接。劉詩海等提出了一種面向可擴充叢集環境的虛拟機磁盤鏡像的遷移方法,通過在分布式檔案系統GlusterFS 中增加Heartbeat 監測子產品來實時監測叢集環境中實體機節點的加入與退出,并動态建立或修改GlusterFS 檔案系統的配置檔案,實作了動态挂(卸)載叢集環境中實體機節點的功能,達到了實時更新檔案存儲的拓撲結構的目的,在保證遷移性能和檔案可靠性的同時提高了系統的擴充能力。

(2)網絡裝置的遷移

對于網絡I/O來說,遷移時最重要的挑戰是保持網絡連接配接不受影響。當虛拟機在區域網路和廣域網遷移時,網絡連接配接的保持政策是不同的。即使在區域網路中的網絡遷移上,不同的虛拟機管理器也采取了不同的方案,例如Xen 的遷移方式與VMware 的遷移方式在細節上就稍有不同。

Xen 的網絡連接配接是使用ARP 協定來實作的,将IP 位址可以直接定向到新的實體機器中。由遷移虛拟機的主機主動發送ARP 回答信号,廣播IP 位址被轉移到新的機器上,這樣其它機器的發送包将直接發送到新的實體位址。也有些路由器出于安全的考慮設定成不廣播A 即回答信号,以免IP 位址被欺騙,是以主動發送ARP 回答信号的方法不能在所有場合都能使用。若作業系統知道自己将被遷移,則它可以向其ARP高速緩沖區中所列的接口有針對性地發送回答信号,不需要廣播。

VMware 虛拟機的VMotion 機制則通過虛拟機提供的虛拟網卡(VNIC )來保證網絡連接配接的保持。在遷移的過程中,虛拟網卡與虛拟機一同遷移,就可以維持唯一的實體層位址來完成網絡連接配接的遷移。虛拟網卡是虛拟平台的一部分,每一個虛拟網卡都有一個用來在區域網路絡中作為唯一辨別的MAC 位址。每個虛拟網卡與一個或者多個實體網卡(NIC )關聯,多個虛拟機中的虛拟網蔔也可以與同一個實體網卡相連。由于虛拟網卡擁有與實體網卡的MAC 位址不相關的MAC 位址,虛拟機可以在運作過程中保持網絡連接配接不中斷的條件下從一台機器遷移到另外一台機器上。但由于以太網的相關限制,能這樣做的前提是源機器和目标機器在同一個子網中。

如果虛拟機遷移在不同的區域網路之間進行,則遷移之後虛拟機需要配置新的IP位址,即廣域網中的網絡連接配接會中斷。為了保持網絡連接配接,可以采用IP隧道和動态DNS結合的方法。在虛拟機記憶體和磁盤遷移結束後,虛拟機對源機器的依賴關系消除之前的時刻,在源機器的IP 位址和目标機器的IP 位址之間建立IP隧道,用來轉發原有的網絡資料。在網絡重定向過程中到達舊IP 位址的資料包将通過隧道被轉發到目标機器。一旦遷移結束,虛拟機可以對新網絡做出響應,此時動态DNS 己經更新,網絡連接配接指向虛拟機的新IP 位址。

對于普通網卡,虛拟機管理器可以通過虛拟出多個網卡以分時複用的模式來實作共享,這樣,虛拟機的I/O操作都必須通過管理域(domain 0 )來中轉資料,因而虛拟化I/O很可能成為性能的瓶頸。然而,對于擁有高速智能網絡裝置(如Infiniband ) 的高性能計算機系統,虛拟機可以通過作業系統旁路(OS-byPass )的模式直接通路智能網絡裝置,而不是像普通網卡那樣需要通過管理域的支援。在這種情況下,虛拟機遷移過程中外圍設各的重定向将變得困難,scarpazza 等研究了基于分割的全局位址空間(PGAS )程式設計模型的應用在使用hifiniband 裝置時的虛拟機遷移機制,實作了在Xen 的核心子產品上透明支援使用者态Infiniband 協定以及對Infiniband 之上的IP 協定的支援。威斯康辛麥迪遜大學采用影子裝置驅動機制來解決存在直接裝置通路的虛拟機遷移問題,影子驅動運作在客戶作業系統中以捕獲真實網絡裝置的狀态,并在遷移目的地生成與目的主機網絡裝置比對的裝置驅動,并終止影子驅動的運作。Huang 等研究了通過高速網絡infiniband 來實作遠端直接記憶體通路(RDMA ) ,進而避免了遷移過程中記憶體的拷貝和同步問題。

3 虛拟機放置算法

虛拟機遷移時放置算法的設計與應用場景是密切相關的,例如,針對資料中心負載均衡和節能的不同需求,虛拟機遷移的觸發條件是截然相反的。但歸根結底,放置算法設計的核心可以歸結為Www ( when , which ,where )問題,即什麼時候把哪一個虛拟機遷移到哪一台實體機器上。對于遷移時機(即when )的問題,主要在于根據虛拟機線上遷移是應用于負載均衡還是節能的不同場景,充分考慮實體伺服器的資源使用率情況來設計虛拟機遷移的觸發條件。而對于遷移目的地的選擇(即where)可以抽象為經典的裝箱問題,伺服器可以表示為箱子,而虛拟機可以表示為不同大小的球。裝箱問題是一個NP 難問題,在資料中心規模比較大時求解最優解的開銷是異常巨大的。這類問題主要有三種求解算法:首次适配( First-Fit Decreasing ) ,最優适配(Best-Fit )和最差适配(Worst-Fit )。sandpiper 系統為了實作虛拟機叢集的負載均衡,總是利用啟發式資訊把負載最重的虛拟機放置到負載最輕的實體機上。verma 等提出了能耗和代價可感覺的pMapper 模型來指導虛拟機在遷移時的放置。在決定虛拟機遷移的新位置時,pMapper 采用首次适配(FFD )算法來決定虛拟機的放置位置,并月.遷移後期望的性能提升和遷移的代價在該模型中都有考慮。但是,遷移的代價主要是通過應用程式的性能退化(如吞吐率下降)和服務水準協定下降來量化的。這種基于黑盒模型的遷移代價預測方法隻能通過離線學習的方式來實作,因而在事先不知道虛拟機中運作的負載的情況下,是無法通過線上的方式預測出遷移的代價的,應用範圍受到很大限制。對于遷移的候選對象的選擇(即which )問題,目前針對性的研究還不是很多。多數情況下都是在遷移觸發後先确定了遷移那一個虛拟機,然後再考慮遷移的目的地。由于運作不同類型負載的虛拟機之間存在的性能幹擾問題,這可以作為遷移對象選擇的一個評判準則。例如,實作負載均衡時可以把存在性能幹擾問題的一個虛拟機遷移到一個不存在性能幹擾或者幹擾最小的實體機上。本文将從虛拟機遷移的代價出發來解決which 的問題,通過預測遷移性能和能耗,優化虛拟機遷移的決策算法,進而來選取遷移代價最小的虛拟機。

4 虛拟機遷移的應用

虛拟機線上遷移技術的應用主要展現在三個方面:負載均衡、能耗管理以及系統容錯,目前這些應用研究正方興未艾。

負載均衡是虛拟機遷移的主要應用場景之一。Choi 等提出了一種自動學習的方法來自動調整虛拟機動态遷移觸發條件的參數閉值,進而利用最優數量的虛拟機遷移達到最佳的資源使用率。Wood等基于虛拟機遷移技術提出了利用灰盒及黑盒機制來自動地減少虛拟叢集中的熱點,他們實作了一種熱點監測算法來決定何時遷移虛拟機,并利用貪婪算法來決定把虛拟機遷移到何處以及配置設定多少資源給遷移後的虛拟機。

利用虛拟機的遷移來實作節能是目前遷移應用的一個熱點。Hu 等提出了實體叢集中基于虛拟機環境的任務遷移節能管理機制,通過建構多環網絡拓撲,把不同負載的結點納入不同環中進行管理,通過任務遷移實作聚合承載,進而關閉空閑結點,達到節能目标。PADD是Lim 等人提出的一種在虛拟化環境下利用虛拟機整合機制來節能的政策。它通過動态遷移虛拟機并把它們聚合到更少的實體伺服器上進而實作節能,但在設計虛拟機放置算法時主要考慮的是避免服務水準協定(SLA ) 的下降,而沒有考慮虛拟機遷移階段造成的性能損失以及能耗。

對于利用虛拟機遷移進行容錯,Nagarajan 和Mueller 等人基于虛拟化軟體xen 實作了一種自動、透明的主動容錯系統,允許程序自動地從“不健康”節點透明地遷移到健康節點。該系統可以适用于任何MPI 應用程式,并在虛拟機遷移時實作了節點之間的負載平衡機制。VMWare 結合虛拟機遷移和回放技術提供了其虛拟機容錯技術,幫助最普通的虛拟機擁有了容錯能力,即所謂的“持續可用”( Contimious Avallability )的特點。持續可用是在“記錄與回放”這個想法之上實作的,它取代原來在一個檔案上存儲執行操作這一過程,而是将它們傳送到第二台虛拟機上。也就是當第一台虛拟機無法工作時,第二台虛拟機就會馬上接管,并且沒有任何損失。基于虛拟機線上遷移的容錯技術,可以在對上層軟體完全透明的情況下,實作硬體資源動态負載均衡,保證軟體在硬體裝置更新、維護、失效時都能不間斷地運作,進而提高軟體的可用性和可靠性。RemuS 系統是英屬哥倫比亞大學開發的基于虛拟機遷移的高可靠容錯系統。和VMware 實作的容錯機制類似,通過不間斷的異步複制主虛拟機和備份虛拟機之間狀态,進而保證了提供服務的主虛拟機在發生故障時,備份機可以立刻接管服務,實作了應用的持續可用性和系統的高可靠性。

綜上所述,這些針一對虛拟機遷移的應用主要研究的都是虛拟機遷移的時機及位置選擇這兩個方面的問題,而對于虛拟機遷移的性能代價及能耗問題則考慮的較少。然而,虛拟機負載的多樣性使得遷移的代價存在巨大的差異性,研究虛拟機遷移的性能預測模型對于虛拟機放置算法有重要的指導意義。