虛擬機遷移的分類及原理

摘自:虛擬化遷移技術漫談

 

物理機到虛擬機的遷移(Physical-to-Virtual)

P2V 指遷移物理服務器上的操作系統及其上的應用軟件和數據到 VMM(Virtual Machine Monitor)管理的虛擬服務器中。這種遷移方式,主要是使用各種工具軟件,把物理服務器上的系統狀態和數據“鏡像”到 VMM 提供的虛擬機中,並且在虛擬機中“替換”物理服務器的存儲硬件與網卡驅動程序。只要在虛擬服務器中安裝好相應的驅動程序並且設置與原來服務器相同的地址(如 TCP/IP 地址等),在重啓虛擬機服務器後,虛擬服務器即可以替代物理服務器進行工作。

P2V 遷移方法

  • 手動遷移:手動完成所有遷移操作,需要對物理機系統和虛擬機環境非常瞭解。
      1. 關閉原有的物理機上的服務和操作系統,並且從其他媒質上啓動一個新的系統。比如從 LiveCD 上啓動一個新的光盤系統。大部分的發行版都會帶有 LiveCD。
      2. 把物理機系統的磁盤做成虛擬機鏡像文件,如有多個磁盤則需要做多個鏡像,並且拷貝鏡像到虛擬主機上。
      3. 爲虛擬機創建虛擬設備,加載鏡像文件
      4. 啓動虛擬機,調整系統設置,並開啓服務。
  • 半自動遷移:利用專業工具輔助 P2V 的遷移,把某些手動環節進行自動化。比如將物理機的磁盤數據轉換成虛擬機格式,這一向是相當耗時的工作,你可以選擇專業的工具來完成這個步驟。這裏有大量的工具可以使用,如 RedHat 的開源工具 virt-p2v,Microsoft Virtual Server Migration Toolkit 等。
  • P2V 熱遷移:遷移中避免宕機 。大部分 P2V 工具也有一個很大的限制:在整個遷移過程中,物理機不可用。在運行關鍵任務的環境或有 SLA(服務水平協議)的地方,這種工具不可選。幸運的是隨着 P2V 技術的發展,VMware vCenter Converter 和 Microsoft Hyper-V 已經能夠提供熱遷移功能,避免宕機。目前,P2V 熱遷移僅在 Windows 物理服務器可用,未來將添加對 Linux 的支持。

 

虛擬機到虛擬機的遷移(Virtual-to-Virtual)

V2V 遷移是在虛擬機之間移動操作系統和數據,照顧主機級別的差異和處理不同的虛擬硬件。虛擬機從一個物理機上的 VMM 遷移到另一個物理機的 VMM,這兩個 VMM 的類型可以相同,也可以不同。如 VMware 遷移到 KVM, KVM 遷移到 KVM。可以通過多種方式將虛擬機從一個 VM Host 系統移動到另一個 VM Host 系統。

V2V 離線遷移

離線遷移(offline migration):也叫做常規遷移、靜態遷移。在遷移之前將虛擬機暫停,如果共享存儲,則只拷貝系統狀態至目的主機,最後在目的主機重建虛擬機狀態,恢復執行。如果使用本地存儲,則需要同時拷貝虛擬機鏡像和狀態到目的主機。到這種方式的遷移過程需要顯示的停止虛擬機的運行。從用戶角度看,有明確的一段服務不可用的時間。這種遷移方式簡單易行,適用於對服務可用性要求不嚴格的場合。

V2V 在線遷移

在線遷移(online migration):又稱爲實時遷移 (live migration)。是指在保證虛擬機上服務正常運行的同時,虛擬機在不同的物理主機之間進行遷移,其邏輯步驟與離線遷移幾乎完全一致。不同的是,爲了保證遷移過程中虛擬機服務的可用,遷移過程僅有非常短暫的停機時間。遷移的前面階段,服務在源主機運行,當遷移進行到一定階段,目的主機已經具備了運行系統的必須資源,經過一個非常短暫的切換,源主機將控制權轉移到目的主機,服務在目的主機上繼續運行。對於服務本身而言,由於切換的時間非常短暫,用戶感覺不到服務的中斷,因而遷移過程對用戶是透明的。在線遷移適用於對服務可用性要求很高的場景。

目前主流的在線遷移工具,如 VMware 的 VMotion,XEN 的 xenMotion,都要求物理機之間採用 SAN(storage area network), NAS(network-attached storage)之類的集中式共享外存設備,因而在遷移時只需要考慮操作系統內存執行狀態的遷移,從而獲得較好的遷移性能。

另外,在某些沒有使用共享存儲的場合,可以使用存儲塊在線遷移技術來實現 V2V 的虛擬機在線遷移。相比較基於共享存儲的在線遷移,數據塊在線遷移的需要同時遷移虛擬機磁盤鏡像和系統內存狀態,遷移性能上打了折扣。但是他使得在採用分散式本地存儲的環境下,仍然能夠利用遷移技術轉移計算機環境,並且保證遷移過程中操作系統服務的可用性,擴展了虛擬機在線遷移的應用範圍。V2V 在線遷移技術消除了軟硬件相關性,是進行軟硬件系統升級,維護等管理操作的有力工具。

V2V 內存遷移技術

對於 VM 的內存狀態的遷移,XEN 和 KVM 都採用了主流的的預拷貝(pre-copy)的策略。遷移開始之後,源主機 VM 仍在運行,目的主機 VM 尚未啓動。遷移通過一個循環,將源主機 VM 的內存數據發送至目的主機 VM。循環第一輪發送所有內存頁數據,接下來的每一輪循環發送上一輪預拷貝過程中被 VM 寫過的髒頁內存 dirty pages。直到時機成熟,預拷貝循環結束,進入停機拷貝階段,源主機被掛起,不再有內存更新。最後一輪循環中的髒頁被傳輸至目的主機 VM。預拷貝機制極大的減少了停機拷貝階段需要傳輸的內存數據量,從而將停機時間大大縮小。

然而,對於更新速度非常快的內存部分,每次循環過程都會變髒,需要重複 pre-copy,同時也導致循環次數非常多,遷移的時間變長。針對這種情況,KVM 虛擬機建立了三個原則:集中原則,一個循環內的 dirty pages 小於等於 50;不擴散原則, 一個循環內傳輸的 dirty pages 少於新產生的;有限循環原則,循環次數必須少於 30。在實現上,就是採取了以下措施:

  • 有限循環:循環次數和效果受到控制,對每輪 pre-copy 的效果進行計算,若 pre-copy 對於減少不一致內存數量的效果不顯著,或者循環次數超過了上限,循環將中止,進入停機拷貝階段。
  • 在被遷移 VM 的內核設置一個內存訪問的監控模塊。在內存 pre-copy 過程中,VM 的一個進程在一個被調度運行的期間,被限制最多執行 40 次內存寫操作。這個措施直接限制了 pre-copy 過程中內存變髒的速度,其代價是對 VM 上的進程運行進行了一定的限制。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章