自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

虛擬化在線遷移優(yōu)化實(shí)踐(一):KVM虛擬化跨機(jī)遷移原理

云計(jì)算 虛擬化
在線遷移技術(shù)的本質(zhì)就是在虛擬機(jī)不停機(jī)的情況下,不同物理機(jī)之間進(jìn)行在線跨機(jī)遷移。本文主要介紹KVM虛擬化跨機(jī)遷移原理。

前言

當(dāng)前,云計(jì)算技術(shù)的飛速發(fā)展對(duì)企業(yè)降低IT投入成本、減少系統(tǒng)運(yùn)維開銷、加速業(yè)務(wù)交付速度、動(dòng)態(tài)調(diào)整業(yè)務(wù)規(guī)模以及保障業(yè)務(wù)可靠性具有重要意義。

目前,云計(jì)算帶來的這些好處依賴于底層虛擬化技術(shù)將服務(wù)器資源虛擬出多份可供用戶使用的計(jì)算資源,從而方便云計(jì)算提供商為企業(yè)用戶提供高效、彈性、高可靠和可維護(hù)的底層IT基礎(chǔ)架構(gòu)。其中,虛擬機(jī)在線遷移技術(shù)正是構(gòu)建虛擬機(jī)技術(shù)上述優(yōu)點(diǎn)的重要組成部分,該技術(shù)可以簡(jiǎn)化系統(tǒng)維護(hù)復(fù)雜度、實(shí)現(xiàn)業(yè)務(wù)負(fù)載均衡、優(yōu)化服務(wù)器能源消耗并增強(qiáng)云計(jì)算可靠性。

作為國內(nèi)領(lǐng)先的公有云服務(wù)提供商,UCloud對(duì)其云平臺(tái)在線遷移方案進(jìn)行了深入的優(yōu)化,通過實(shí)踐證明這些優(yōu)化能夠很好的應(yīng)對(duì)線上各種遷移場(chǎng)景,為用戶業(yè)務(wù)的穩(wěn)定與可靠提供了重要保障。

原理

在線遷移技術(shù)的本質(zhì)就是在虛擬機(jī)不停機(jī)的情況下,不同物理機(jī)之間進(jìn)行在線跨機(jī)遷移。首先是在目標(biāo)物理機(jī)建立相同配置的虛擬機(jī),然后進(jìn)行各類數(shù)據(jù)遷移,最終快速切換到目標(biāo)端新虛擬機(jī)。由于整個(gè)遷移過程中,絕大多數(shù)時(shí)間內(nèi)用戶虛擬機(jī)都能保持正常運(yùn)行,且***階段的切換過程非常短暫,不會(huì)造成用戶業(yè)務(wù)中斷,對(duì)用戶運(yùn)行在虛擬機(jī)中的業(yè)務(wù)幾乎沒有影響,因此在線遷移技術(shù)在實(shí)現(xiàn)云平臺(tái)資源動(dòng)態(tài)調(diào)整以及故障處理方面具有重要意義。

因?yàn)樵朴?jì)算平臺(tái)除了核心的底層虛擬化技術(shù)外,還包括SDN網(wǎng)絡(luò)、分布式存儲(chǔ)和運(yùn)維管理系統(tǒng)等,所以在線遷移方案不僅要包括跨機(jī)遷移技術(shù)本身,還包括遷移前后虛擬機(jī)的管理信息以及網(wǎng)絡(luò)和磁盤配置信息的切換等工作。為此,本文將在線遷移過程劃分為三個(gè)階段:準(zhǔn)備階段、遷移階段和切換階段。

考慮到UCloud云計(jì)算平臺(tái)采用KVM虛擬化技術(shù)實(shí)現(xiàn)虛擬化底層方案,同時(shí)共享存儲(chǔ)的在線遷移僅是非共享存儲(chǔ)的一個(gè)特例,因此本節(jié)將以非共享存儲(chǔ)為例,詳細(xì)介紹UCloud底層KVM虛擬化技術(shù)如何進(jìn)行虛擬機(jī)的在線遷移。其中,遷移環(huán)境為虛擬化底層KVM+Qemu、虛擬化管理Libvirt、虛擬化網(wǎng)絡(luò)Openvswitch。

假設(shè)將源物理機(jī)SourceHost的一個(gè)虛擬機(jī)VM 遷移到目標(biāo)物理機(jī)DestHost,非共享存儲(chǔ)虛擬機(jī)在線遷移過程的具體步驟如下:

準(zhǔn)備階段

Step.1 選擇一臺(tái)具有足夠磁盤和內(nèi)存資源的物理機(jī)DestHost,并在DestHost上創(chuàng)建VM對(duì)應(yīng)的系統(tǒng)盤和數(shù)據(jù)盤,同時(shí)選定接收遷移數(shù)據(jù)的tcp端口(如圖 1-1所示),這兩個(gè)磁盤在DestHost和SourceHost上的路徑必須完全一致。不同的是,DestHost上初始創(chuàng)建的只是空盤,上面沒有真實(shí)數(shù)據(jù)。

在目標(biāo)端新建虛擬機(jī)鏡像

圖 1-1 在目標(biāo)端新建虛擬機(jī)鏡像 

Step.2 通過虛擬化管理軟件Libvirt在DestHost上創(chuàng)建一個(gè)和VM同樣配置的虛擬機(jī)VM’,系統(tǒng)盤和數(shù)據(jù)盤使用Step.1中創(chuàng)建的系統(tǒng)盤和數(shù)據(jù)盤(如圖 1-2所示)。VM’當(dāng)前是paused狀態(tài),虛擬機(jī)VM’的vcpu處于暫停狀態(tài),同時(shí)虛擬機(jī)VM’會(huì)通過監(jiān)聽一個(gè)內(nèi)網(wǎng)的tcp端口來接收遷移數(shù)據(jù)。

在目標(biāo)端創(chuàng)建新虛擬機(jī)

圖 1-2 在目標(biāo)端創(chuàng)建新虛擬機(jī) 

遷移階段

Step.3 虛擬化管理層Libvirt給VM對(duì)應(yīng)的Qemu進(jìn)程發(fā)出一個(gè)遷移指令,并指定參數(shù),例如指定DestHost為目標(biāo)、需要遷移塊設(shè)備、***停機(jī)時(shí)間、遷移帶寬限制等,然后遷移數(shù)據(jù)就會(huì)通過指定tcp鏈路傳輸給DestHost上的VM’。需要注意,遷移數(shù)據(jù)的網(wǎng)絡(luò)包不是經(jīng)過 vswitch,而是直接從SourceHost的ethx網(wǎng)卡出,進(jìn)到DestHost的ethx,因?yàn)閂M’對(duì)應(yīng)Qemu進(jìn)程正作為DestHost一個(gè)用戶態(tài)進(jìn)程,監(jiān)聽在ethx對(duì)應(yīng)的內(nèi)網(wǎng)ip(如圖 1-3所示)。

虛擬機(jī)遷移數(shù)據(jù)

圖 1-3 虛擬機(jī)遷移數(shù)據(jù) 

Step.4 經(jīng)過前面三步,虛擬機(jī)的數(shù)據(jù)就正式開始遷移,剩下的挑戰(zhàn)是如何保證數(shù)據(jù)遷移的一致性,因?yàn)榇藭r(shí)VM處于運(yùn)行狀態(tài),里面時(shí)刻發(fā)生內(nèi)存更新、磁盤io操作和設(shè)備狀態(tài)變更,而VM’是paused狀態(tài),只通過一個(gè)線程接收VM進(jìn)程發(fā)過來的數(shù)據(jù)。

為此,在遷移過程中各種數(shù)據(jù)如何有序遷移?首先,Libvirt會(huì)發(fā)送qmp_dirve_mirror命令來通知Qemu進(jìn)行虛擬機(jī)磁盤數(shù)據(jù)遷移,從而在源端和目標(biāo)端直接同步磁盤數(shù)據(jù)。然后,Libvirt會(huì)再次發(fā)送qmp_migrate命令通知Qemu進(jìn)行虛擬機(jī)內(nèi)存數(shù)據(jù)遷移,進(jìn)一步完成虛擬機(jī)主要數(shù)據(jù)的遷移。***,由于設(shè)備狀態(tài)對(duì)應(yīng)的數(shù)據(jù)量很少,在遷移***階段會(huì)通過一次性同步,將Qemu里每個(gè)設(shè)備注冊(cè)的狀態(tài)同步到目標(biāo)端。

另外,遷移過程中發(fā)生變更的數(shù)據(jù)如何遷移?如果不遷移變更的數(shù)據(jù),那數(shù)據(jù)必然不一致,也表明遷移還不能結(jié)束,因此Qemu一般通過數(shù)據(jù)遷移準(zhǔn)備、數(shù)據(jù)遷移、數(shù)據(jù)遷移收尾三個(gè)步驟來完成。

循環(huán)調(diào)用磁盤和內(nèi)存遷移函數(shù)也是按階段來分別調(diào)用的。首先,循環(huán)調(diào)用磁盤和內(nèi)存遷移函數(shù)的遷移數(shù)據(jù)準(zhǔn)備功能,即前期準(zhǔn)備工作,例如把磁盤按block為單位組織成一個(gè)數(shù)組,并設(shè)置記錄臟塊機(jī)制;把內(nèi)存所有頁全部設(shè)置為臟頁,并發(fā)送開始遷移的標(biāo)志到VM’的進(jìn)程。

全量數(shù)據(jù)遷移示意圖

圖 1-4 全量數(shù)據(jù)遷移示意圖 

緊接著,需要進(jìn)行真正的數(shù)據(jù)遷移,Qemu在這個(gè)階段調(diào)用磁盤和內(nèi)存遷移函數(shù)的第二步驟功能,并且要求必須等磁盤數(shù)據(jù)遷移完成后才會(huì)執(zhí)行內(nèi)存數(shù)據(jù)遷移。如圖 1-4所示,Qemu首先會(huì)進(jìn)行磁盤(內(nèi)存)的全量數(shù)據(jù)遷移,依次將每個(gè)block(頁)遷移到目標(biāo)端DestHost。

增量數(shù)據(jù)遷移示意圖

圖 1-5 增量數(shù)據(jù)遷移示意圖

然后再通過多次迭代,將遷移過程中虛擬機(jī)產(chǎn)生的新數(shù)據(jù)遷移到目標(biāo)端DestHost(如圖 1-5所示)。這一迭代過程是收斂的,收斂依據(jù)與之前設(shè)置的帶寬、***停機(jī)時(shí)間有關(guān)。同時(shí),在迭代過程中,Qemu將邊遷移邊記錄剩下的臟數(shù)據(jù)大小,并與停機(jī)時(shí)間進(jìn)行比較,如果這個(gè)值比停機(jī)時(shí)間大,那么繼續(xù)遷移,如果比停機(jī)時(shí)間小,那么源端Qemu進(jìn)程就會(huì)暫停,從而避免產(chǎn)生新的臟數(shù)據(jù),以便進(jìn)行遷移收尾工作。

在虛擬機(jī)暫停之后,進(jìn)入第三步遷移收尾工作,源端Qemu進(jìn)程會(huì)把磁盤、內(nèi)存臟數(shù)據(jù)和設(shè)備狀態(tài)一次性同步到目標(biāo)端,完成時(shí)VM和VM’的數(shù)據(jù)將會(huì)一致。這時(shí),上層管理軟件會(huì)把VM關(guān)閉,并把VM’的vcpu恢復(fù)運(yùn)行狀態(tài),整個(gè)虛擬機(jī)的數(shù)據(jù)遷移就完成了。

切換階段

Step.5 數(shù)據(jù)遷移完成后,VM關(guān)閉,VM’作為它的一個(gè)完全拷貝,在DestHost上運(yùn)行著,但網(wǎng)絡(luò)還是不通的(如圖 1-2所示)。VM’通過DestHost的vswitch 連接到物理機(jī)網(wǎng)卡,vswitch相當(dāng)于一個(gè)虛擬交換機(jī),而VM從SourceHost遷移到DestHost,在網(wǎng)絡(luò)上相當(dāng)于把網(wǎng)線從一個(gè)交換機(jī)拔下插到另一個(gè)交換機(jī)上,此時(shí)就需要一次arp廣播,告知VM的mac地址已經(jīng)變更到另外一臺(tái)交換機(jī)的某個(gè)端口。

這就是遷移完成后的網(wǎng)絡(luò)切換,由于切換時(shí)間很短,少于tcp的超時(shí)重傳時(shí)間,因此對(duì)于原VM上跑著網(wǎng)絡(luò)服務(wù)程序幾乎是無感知的。此后,如圖 1-6所示,目標(biāo)端DestHost虛擬機(jī)就具備和用戶直接進(jìn)行交互的能力,而源端SourceHost虛擬機(jī)此時(shí)就可以刪除。

完成虛擬機(jī)遷移示意圖

圖 1-6 完成虛擬機(jī)遷移示意圖 

總結(jié)

通過以上遷移步驟,可以在KVM虛擬化平臺(tái)上實(shí)現(xiàn)虛擬機(jī)的跨越遷移,進(jìn)而方便實(shí)現(xiàn)云平臺(tái)負(fù)載均衡與系統(tǒng)運(yùn)維,并確保用戶虛擬機(jī)性能的可靠性。同時(shí),從用戶角度來看,這個(gè)過程并不需要關(guān)心虛擬機(jī)在源端SourceHost還是目標(biāo)端DestHost,但可以持續(xù)與虛擬機(jī)進(jìn)行交互,整個(gè)遷移過程對(duì)用戶來說是透明的。

雖然,當(dāng)前KVM虛擬化在線遷移能夠滿足大多數(shù)情況下的用戶虛擬機(jī)遷移,但還存在以下問題:

  • 在磁盤和內(nèi)存負(fù)載高的情況下,存在遷移無法完成的情況;
  • 跨機(jī)遷移存在網(wǎng)絡(luò)中斷時(shí)間長的問題;
  • 跨存儲(chǔ)類型的場(chǎng)景下如何進(jìn)行遷移;
  • 如何應(yīng)用遷移進(jìn)行虛擬機(jī)組件的更新。

【本文是51CTO專欄機(jī)構(gòu)作者“大U的技術(shù)課堂”的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)(ucloud2012)聯(lián)系作者】

 戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-07-01 07:02:41

虛擬化遷移

2017-07-08 13:48:19

虛擬化云計(jì)算在線遷移

2010-08-30 10:11:25

XenKVM虛擬機(jī)遷移

2020-06-18 16:39:10

KVM虛擬化虛擬機(jī)

2010-08-30 10:17:00

虛擬機(jī)在線遷移

2025-01-16 15:09:46

Linux運(yùn)維

2014-02-21 11:20:34

KVMXen虛擬機(jī)

2014-10-09 09:43:05

虛擬機(jī)遷移

2011-11-10 13:44:13

VMwareKVM遷移

2009-09-04 11:19:02

Xen虛擬機(jī)遷移

2009-07-24 19:57:29

Citrix虛擬化服務(wù)器虛擬化

2020-11-23 07:19:15

Linux虛擬化KVM

2019-06-27 15:38:52

KVM虛擬化開源

2012-09-03 10:11:49

服務(wù)器虛擬化

2018-06-05 14:28:25

KVM嵌套虛擬化

2013-05-29 15:33:01

開源虛擬化KVM

2019-11-12 14:48:00

Linux桌面虛擬化KVM

2013-04-08 10:08:22

開源虛擬化KVM

2015-09-09 17:25:06

2010-10-09 11:28:38

虛擬機(jī)共享存儲(chǔ)限制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)