如何在虛擬機(jī)和物理機(jī)以及虛擬機(jī)和虛擬機(jī)之間的遷移系統(tǒng)
系統(tǒng)的遷移是指把源主機(jī)上的操作系統(tǒng)和應(yīng)用程序移動(dòng)到目的主機(jī),并且能夠在目的主機(jī)上正常運(yùn)行。在沒有虛擬機(jī)的時(shí)代,物理機(jī)之間的遷移依靠的是系統(tǒng)備份和恢復(fù)技術(shù)。在源主機(jī)上實(shí)時(shí)備份操作系統(tǒng)和應(yīng)用程序的狀態(tài),然后把存儲介質(zhì)連接到目標(biāo)主機(jī)上,最后在目標(biāo)主機(jī)上恢復(fù)系統(tǒng)。隨著虛擬機(jī)技術(shù)的發(fā)展,系統(tǒng)的遷移更加靈活和多樣化。
本系列文章全面介紹了虛擬機(jī)遷移的三種方式 P2V、V2V 和 V2P,及他們在內(nèi)核虛擬機(jī) KVM 上的實(shí)現(xiàn)方法,分成五個(gè)部分。第一部分,介紹虛擬機(jī)遷移的各種方法和相應(yīng)的遷移工具,并且著重分析 Linux 平臺上開源的虛擬化工具 KVM 和 XEN 實(shí)時(shí)遷移中的的內(nèi)存預(yù)拷貝技術(shù);
第二部分介紹 KVM 虛擬機(jī)之間的 V2V 遷移技術(shù),包括離線遷移和在線遷移;第三部分介紹基于 VMware 或 XEN 的虛擬機(jī)如何遷移到基于 KVM 的虛擬機(jī);第四部分介紹物理機(jī)到虛擬機(jī)遷移 P2V 和虛擬機(jī)到物理機(jī)遷移 V2P 在 KVM 虛擬機(jī)上的實(shí)現(xiàn);第五部分介紹和虛擬機(jī)遷移密切相關(guān)的虛擬機(jī)克隆、快照和備份技術(shù)。
遷移服務(wù)器可以為用戶節(jié)省管理資金、維護(hù)費(fèi)用和升級費(fèi)用。以前的 x86 服務(wù)器,體積比較“龐大”;而現(xiàn)在的服務(wù)器,體積已經(jīng)比以前小了許多,遷移技術(shù)使得用戶可以用一臺服務(wù)器來同時(shí)替代以前的許多臺服務(wù)器,這樣就節(jié)省了用戶大量的機(jī)房空間。另外,虛擬機(jī)中的服務(wù)器有著統(tǒng)一的“虛擬硬件資源”,不像以前的服務(wù)器有著許多不同的硬件資源(如主板芯片組不同,網(wǎng)卡不同,硬盤,RAID 卡,顯卡不同)。遷移后的服務(wù)器,不僅可以在一個(gè)統(tǒng)一的界面中進(jìn)行管理,而且通過某些虛擬機(jī)軟件,如 VMware 提供的高可用性工具,在這些服務(wù)器因?yàn)楦鞣N故障停機(jī)時(shí),可以自動(dòng)切換到網(wǎng)絡(luò)中另外相同的虛擬服務(wù)器中,從而達(dá)到不中斷業(yè)務(wù)的目的??傊w移的優(yōu)勢在于簡化系統(tǒng)維護(hù)管理, 提高系統(tǒng)負(fù)載均衡,增強(qiáng)系統(tǒng)錯(cuò)誤容忍度和優(yōu)化系統(tǒng)電源管理。
一個(gè)優(yōu)秀的遷移工具,目標(biāo)是最小化整體遷移的時(shí)間和停機(jī)時(shí)間,并且將遷移對于被遷移主機(jī)上運(yùn)行服務(wù)的性能造成的影響降至最低。當(dāng)然,這幾個(gè)因素互相影響,實(shí)施者需要根據(jù)遷移針對的應(yīng)用的需求在其中進(jìn)行衡量,選用合適的工具軟件。虛擬機(jī)遷移的性能指標(biāo)包括以下三個(gè)方面:
整體遷移時(shí)間:從源主機(jī)開始遷移到遷移結(jié)束的時(shí)間
停機(jī)時(shí)間:遷移過程中,源主機(jī)、目的主機(jī)同時(shí)不可用的時(shí)間
對應(yīng)用程序的性能影響:遷移對于被遷移主機(jī)上運(yùn)行服務(wù)性能的的影響程度。
P2V 指遷移物理服務(wù)器上的操作系統(tǒng)及其上的應(yīng)用軟件和數(shù)據(jù)到 VMM(Virtual Machine Monitor)管理的虛擬服務(wù)器中。這種遷移方式,主要是使用各種工具軟件,把物理服務(wù)器上的系統(tǒng)狀態(tài)和數(shù)據(jù)“鏡像”到 VMM 提供的虛擬機(jī)中,并且在虛擬機(jī)中“替換”物理服務(wù)器的存儲硬件與網(wǎng)卡驅(qū)動(dòng)程序。只要在虛擬服務(wù)器中安裝好相應(yīng)的驅(qū)動(dòng)程序并且設(shè)置與原來服務(wù)器相同的地址(如 TCP/IP 地址等),在重啟虛擬機(jī)服務(wù)器后,虛擬服務(wù)器即可以替代物理服務(wù)器進(jìn)行工作。
P2V 遷移方法
手動(dòng)遷移:手動(dòng)完成所有遷移操作,需要對物理機(jī)系統(tǒng)和虛擬機(jī)環(huán)境非常了解。
關(guān)閉原有的物理機(jī)上的服務(wù)和操作系統(tǒng),并且從其他媒質(zhì)上啟動(dòng)一個(gè)新的系統(tǒng)。比如從 LiveCD 上啟動(dòng)一個(gè)新的光盤系統(tǒng)。大部分的發(fā)行版都會帶有 LiveCD。
把物理機(jī)系統(tǒng)的磁盤做成虛擬機(jī)鏡像文件,如有多個(gè)磁盤則需要做多個(gè)鏡像,并且拷貝鏡像到虛擬主機(jī)上。
為虛擬機(jī)創(chuàng)建虛擬設(shè)備,加載鏡像文件
啟動(dòng)虛擬機(jī),調(diào)整系統(tǒng)設(shè)置,并開啟服務(wù)。
半自動(dòng)遷移:利用專業(yè)工具輔助 P2V 的遷移,把某些手動(dòng)環(huán)節(jié)進(jìn)行自動(dòng)化。比如將物理機(jī)的磁盤數(shù)據(jù)轉(zhuǎn)換成虛擬機(jī)格式,這一向是相當(dāng)耗時(shí)的工作,你可以選擇專業(yè)的工具來完成這個(gè)步驟。這里有大量的工具可以使用,如 RedHat 的開源工具 virt-p2v,Microsoft Virtual Server Migration Toolkit 等。
P2V 熱遷移:遷移中避免宕機(jī) 。大部分 P2V 工具也有一個(gè)很大的限制:在整個(gè)遷移過程中,物理機(jī)不可用。在運(yùn)行關(guān)鍵任務(wù)的環(huán)境或有 SLA(服務(wù)水平協(xié)議)的地方,這種工具不可選。幸運(yùn)的是隨著 P2V 技術(shù)的發(fā)展,VMware vCenter Converter 和 Microsoft Hyper-V 已經(jīng)能夠提供熱遷移功能,避免宕機(jī)。目前,P2V 熱遷移僅在 Windows 物理服務(wù)器可用,未來將添加對 Linux 的支持。
V2V 遷移是在虛擬機(jī)之間移動(dòng)操作系統(tǒng)和數(shù)據(jù),照顧主機(jī)級別的差異和處理不同的虛擬硬件。虛擬機(jī)從一個(gè)物理機(jī)上的 VMM 遷移到另一個(gè)物理機(jī)的 VMM,這兩個(gè) VMM 的類型可以相同,也可以不同。如 VMware 遷移到 KVM, KVM 遷移到 KVM??梢酝ㄟ^多種方式將虛擬機(jī)從一個(gè) VM Host 系統(tǒng)移動(dòng)到另一個(gè) VM Host 系統(tǒng)。
V2V 離線遷移
離線遷移(offline migration):也叫做常規(guī)遷移、靜態(tài)遷移。在遷移之前將虛擬機(jī)暫停,如果共享存儲,則只拷貝系統(tǒng)狀態(tài)至目的主機(jī),最后在目的主機(jī)重建虛擬機(jī)狀態(tài),恢復(fù)執(zhí)行。如果使用本地存儲,則需要同時(shí)拷貝虛擬機(jī)鏡像和狀態(tài)到目的主機(jī)。到這種方式的遷移過程需要顯示的停止虛擬機(jī)的運(yùn)行。從用戶角度看,有明確的一段服務(wù)不可用的時(shí)間。這種遷移方式簡單易行,適用于對服務(wù)可用性要求不嚴(yán)格的場合。
V2V 在線遷移
在線遷移(online migration):又稱為實(shí)時(shí)遷移 (live migration)。是指在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時(shí),虛擬機(jī)在不同的物理主機(jī)之間進(jìn)行遷移,其邏輯步驟與離線遷移幾乎完全一致。不同的是,為了保證遷移過程中虛擬機(jī)服務(wù)的可用,遷移過程僅有非常短暫的停機(jī)時(shí)間。遷移的前面階段,服務(wù)在源主機(jī)運(yùn)行,當(dāng)遷移進(jìn)行到一定階段,目的主機(jī)已經(jīng)具備了運(yùn)行系統(tǒng)的必須資源,經(jīng)過一個(gè)非常短暫的切換,源主機(jī)將控制權(quán)轉(zhuǎn)移到目的主機(jī),服務(wù)在目的主機(jī)上繼續(xù)運(yùn)行。對于服務(wù)本身而言,由于切換的時(shí)間非常短暫,用戶感覺不到服務(wù)的中斷,因而遷移過程對用戶是透明的。在線遷移適用于對服務(wù)可用性要求很高的場景。
目前主流的在線遷移工具,如 VMware 的 VMotion,XEN 的 xenMotion,都要求物理機(jī)之間采用 SAN(storage area network), NAS(network-attached storage)之類的集中式共享外存設(shè)備,因而在遷移時(shí)只需要考慮操作系統(tǒng)內(nèi)存執(zhí)行狀態(tài)的遷移,從而獲得較好的遷移性能。
另外,在某些沒有使用共享存儲的場合,可以使用存儲塊在線遷移技術(shù)來實(shí)現(xiàn) V2V 的虛擬機(jī)在線遷移。相比較基于共享存儲的在線遷移,數(shù)據(jù)塊在線遷移的需要同時(shí)遷移虛擬機(jī)磁盤鏡像和系統(tǒng)內(nèi)存狀態(tài),遷移性能上打了折扣。但是他使得在采用分散式本地存儲的環(huán)境下,仍然能夠利用遷移技術(shù)轉(zhuǎn)移計(jì)算機(jī)環(huán)境,并且保證遷移過程中操作系統(tǒng)服務(wù)的可用性,擴(kuò)展了虛擬機(jī)在線遷移的應(yīng)用范圍。V2V 在線遷移技術(shù)消除了軟硬件相關(guān)性,是進(jìn)行軟硬件系統(tǒng)升級,維護(hù)等管理操作的有力工具。
V2V 內(nèi)存遷移技術(shù)
對于 VM 的內(nèi)存狀態(tài)的遷移,XEN 和 KVM 都采用了主流的的預(yù)拷貝(pre-copy)的策略。遷移開始之后,源主機(jī) VM 仍在運(yùn)行,目的主機(jī) VM 尚未啟動(dòng)。遷移通過一個(gè)循環(huán),將源主機(jī) VM 的內(nèi)存數(shù)據(jù)發(fā)送至目的主機(jī) VM。循環(huán)第一輪發(fā)送所有內(nèi)存頁數(shù)據(jù),接下來的每一輪循環(huán)發(fā)送上一輪預(yù)拷貝過程中被 VM 寫過的臟頁內(nèi)存 dirty pages。直到時(shí)機(jī)成熟,預(yù)拷貝循環(huán)結(jié)束,進(jìn)入停機(jī)拷貝階段,源主機(jī)被掛起,不再有內(nèi)存更新。最后一輪循環(huán)中的臟頁被傳輸至目的主機(jī) VM。預(yù)拷貝機(jī)制極大的減少了停機(jī)拷貝階段需要傳輸?shù)膬?nèi)存數(shù)據(jù)量,從而將停機(jī)時(shí)間大大縮小。
然而,對于更新速度非??斓膬?nèi)存部分,每次循環(huán)過程都會變臟,需要重復(fù) pre-copy,同時(shí)也導(dǎo)致循環(huán)次數(shù)非常多,遷移的時(shí)間變長。針對這種情況,KVM 虛擬機(jī)建立了三個(gè)原則:集中原則,一個(gè)循環(huán)內(nèi)的 dirty pages 小于等于 50;不擴(kuò)散原則, 一個(gè)循環(huán)內(nèi)傳輸?shù)?dirty pages 少于新產(chǎn)生的;有限循環(huán)原則,循環(huán)次數(shù)必須少于 30。在實(shí)現(xiàn)上,就是采取了以下措施:
有限循環(huán):循環(huán)次數(shù)和效果受到控制,對每輪 pre-copy 的效果進(jìn)行計(jì)算,若 pre-copy 對于減少不一致內(nèi)存數(shù)量的效果不顯著,或者循環(huán)次數(shù)超過了上限,循環(huán)將中止,進(jìn)入停機(jī)拷貝階段。
在被遷移 VM 的內(nèi)核設(shè)置一個(gè)內(nèi)存訪問的監(jiān)控模塊。在內(nèi)存 pre-copy 過程中,VM 的一個(gè)進(jìn)程在一個(gè)被調(diào)度運(yùn)行的期間,被限制最多執(zhí)行 40 次內(nèi)存寫操作。這個(gè)措施直接限制了 pre-copy 過程中內(nèi)存變臟的速度,其代價(jià)是對 VM 上的進(jìn)程運(yùn)行進(jìn)行了一定的限制。
KVM 的預(yù)拷貝在線遷移過程詳解:
系統(tǒng)驗(yàn)證目標(biāo)服務(wù)器的存儲器和網(wǎng)絡(luò)設(shè)置是否正確,并預(yù)保留目標(biāo)服務(wù)器虛擬機(jī)的資源。
當(dāng)虛擬機(jī)還在源服務(wù)器上運(yùn)轉(zhuǎn)時(shí),第一個(gè)循環(huán)內(nèi)將全部內(nèi)存鏡像復(fù)制到目標(biāo)服務(wù)器上。在這個(gè)過程中,KVM 依然會監(jiān)視內(nèi)存的任何變化。
以后的循環(huán)中,檢查上一個(gè)循環(huán)中內(nèi)存是否發(fā)生了變化。 假如發(fā)生了變化,那么 VMM 會將發(fā)生變化的內(nèi)存頁即 dirty pages 重新復(fù)制到目標(biāo)服務(wù)器中,并覆蓋掉先前的內(nèi)存頁。在這個(gè)階段,VMM 依然會繼續(xù)監(jiān)視內(nèi)存的變化情況。
VMM 會持續(xù)這樣的內(nèi)存復(fù)制循環(huán)。隨著循環(huán)次數(shù)的增加,所需要復(fù)制的 dirty pages 就會明顯減少,而復(fù)制所耗費(fèi)的時(shí)間就會逐漸變短,那么內(nèi)存就有可能沒有足夠的時(shí)間發(fā)生變化。最后,當(dāng)源服務(wù)器與目標(biāo)服務(wù)器之間的差異達(dá)到一定標(biāo)準(zhǔn)時(shí),內(nèi)存復(fù)制操作才會結(jié)束,同時(shí)暫停源系統(tǒng)。
在源系統(tǒng)和目標(biāo)系統(tǒng)都停機(jī)的情況下,將最后一個(gè)循環(huán)的 dirty-pages 和源系統(tǒng)設(shè)備的工作狀態(tài)復(fù)制到目標(biāo)服務(wù)器。
然后,將存儲從源系統(tǒng)上解鎖,并鎖定在目標(biāo)系統(tǒng)上。啟動(dòng)目標(biāo)服務(wù)器,并與存儲資源和網(wǎng)絡(luò)資源相連接。
V2P 指把一個(gè)操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù)從一個(gè)虛擬機(jī)中遷移到物理機(jī)的主硬盤上,是 P2V 的逆操作。它可以同時(shí)遷移虛擬機(jī)系統(tǒng)到一臺或多臺物理機(jī)上。盡管虛擬化的基本需求是整合物理機(jī)到虛擬機(jī)中,但這并不是虛擬化的唯一的應(yīng)用。比如有時(shí)虛擬機(jī)上的應(yīng)用程序的問題需要在物理機(jī)上驗(yàn)證,以排除虛擬環(huán)境帶來的影響。另外,配置新的工作站是件令 IT 管理者頭痛的事情,但虛擬化的應(yīng)用可以幫助他解決這個(gè)難題。先配置好虛擬機(jī),然后運(yùn)用硬盤克隆工具復(fù)制數(shù)據(jù)至工作站硬件,比如賽門鐵克的 Save & Restore (Ghost)。不過這種克隆方法有兩個(gè)局限:一個(gè)鏡像只能運(yùn)用在同種硬件配置的機(jī)器上;要想保存配置的修改,只能重做新的鏡像。
V2P 的遷移可以通過確定目標(biāo)的物理環(huán)境來手動(dòng)完成,如把一個(gè)特定的硬盤加載到虛擬系統(tǒng)中,然后在虛擬環(huán)境中安裝操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù),最后手動(dòng)修改系統(tǒng)配置和驅(qū)動(dòng)程序。這是一個(gè)乏味且不確定的過程,特別是在新的環(huán)境比舊的環(huán)境包含更多大量不同的硬件的情況下。為了簡化操作,我們可以利用專門的遷移工具以自動(dòng)的方式來完成部分或全部遷移工作。目前支持 V2P 轉(zhuǎn)換的工具有 PlateSpin Migrate 和 EMC HomeBase。使用這樣的工具使得 V2P 轉(zhuǎn)換過程更簡易,并且比使用第三方磁盤鏡像工具更快捷。
V2P 遷移方法
V2P 的不確定性導(dǎo)致自動(dòng)化工具不多,目前主要有以下幾種解決方案:
VMware 官方推薦的是使用 Ghost+sysprep 來實(shí)現(xiàn)半自動(dòng)化的遷移。
基于備份和恢復(fù)操作系統(tǒng)的解決方案。這個(gè)方案利用了現(xiàn)成的系統(tǒng)備份恢復(fù)工具,沒有體現(xiàn)虛擬機(jī)和物理機(jī)的差別,類似于 P2P(Physical-to-Physical 物理機(jī)到物理機(jī)遷移)。注意備份工具能夠恢復(fù)系統(tǒng)到異構(gòu)硬件平臺上。
開源工具的解決方案。適合 Linux/Unix 系統(tǒng),使用開源工具和腳本,手動(dòng)遷移系統(tǒng)。這個(gè)方案難度較大,適合有經(jīng)驗(yàn)的管理員。
通常我們期望虛擬機(jī)的遷移能夠全部自動(dòng)化或者部分自動(dòng)化完成,但實(shí)際上 Linux 系統(tǒng)在 P2V 和 V2V 的遷移中可能遇到一些困難。本節(jié)列舉了 Linux 遷移中需要注意的地方。
磁盤分區(qū)名被硬編碼。當(dāng)我們做磁盤虛擬化時(shí),可能會使用不同類型的虛擬磁盤設(shè)備,這將會導(dǎo)致磁盤名字的變化。比如 Xen 虛擬機(jī)中的半虛擬化設(shè)備使用 /dev/xvda 而標(biāo)準(zhǔn)的 Linux 半虛擬化設(shè)備使用 /dev/vda。準(zhǔn)備遷移的 Linux 系統(tǒng)中存在對 /dev/hd* 和 /dev/sd* 磁盤分區(qū)名分散的關(guān)聯(lián),比如在 /etc/fstab 文件,啟動(dòng)初始化文件系統(tǒng) ramfs 和一些解析磁盤設(shè)備的開機(jī)啟動(dòng)腳本文件中。V2V 遷移工具需要在整個(gè)磁盤上查找并修改這些關(guān)聯(lián)。有一個(gè)簡單的方法來避免這種情況: Linux 系統(tǒng)上主流的文件系統(tǒng)和交換分區(qū)類型可以使用 Lables 或 UUID 作為分區(qū)名。遷移時(shí)這些信息是被重點(diǎn)保護(hù)的,系統(tǒng)應(yīng)該小心使用這些信息,一定不要使用設(shè)備作為分區(qū)名。另外,LVM 分區(qū)名和設(shè)備無關(guān),在遷移中也不受影響。
網(wǎng)絡(luò)硬件設(shè)備的改變。當(dāng)系統(tǒng)遷移時(shí),網(wǎng)絡(luò)設(shè)備很可能產(chǎn)生變化。比如虛擬網(wǎng)絡(luò)設(shè)備和物理網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)化或者不同類型的網(wǎng)絡(luò)設(shè)備之間的轉(zhuǎn)變。但是是他們的 MAC 地址沒有變化。MAC 地址是 IEEE 分配給物理設(shè)備制造商的,兩個(gè)物理設(shè)備不會有相同的 MAC 地址;然而虛擬網(wǎng)絡(luò)設(shè)備可能出現(xiàn)這種情況。所以在做虛擬機(jī)遷移時(shí),你必須記錄每一個(gè)網(wǎng)絡(luò)設(shè)備的 MAC 地址,保證 MAC 地址和網(wǎng)絡(luò)設(shè)備的對應(yīng)關(guān)系。
內(nèi)核不支持某些虛擬設(shè)備。某些 Linux 發(fā)行版沒有 virtio 虛擬設(shè)備的驅(qū)動(dòng),可能是因?yàn)?Linux 發(fā)行版早于虛擬設(shè)備發(fā)布了;或者虛擬設(shè)備的驅(qū)動(dòng)是閉源的;或者是在系統(tǒng)編譯時(shí)去掉了。因此,有時(shí)我們另外需要一個(gè)完全不同的內(nèi)核(比如 Xen 早期的版本就是這樣的)。無論如何,在客戶機(jī)上安裝一個(gè)新的內(nèi)核并且使之可以啟動(dòng)是一個(gè)很大的冒險(xiǎn),最好避免這樣做。
Xwindow 需要重新配置。與磁盤、網(wǎng)絡(luò)設(shè)備一樣,系統(tǒng)遷移后顯示設(shè)備也會變化。理想的情況是 Xwindow 會自動(dòng)處理這個(gè)的變化,探測所有的顯示設(shè)備并且使用它發(fā)現(xiàn)的第一個(gè)設(shè)備。但是這不意味著所有的 Linux 發(fā)行版都會以這種方式工作。
網(wǎng)絡(luò)環(huán)境的變化。靜態(tài) IP 地址和靜態(tài) DNS 解析在虛擬機(jī)遷移中 是
一個(gè)麻煩的事情。盡管不是必須的,但是最好配置系統(tǒng)從 DHCP 服務(wù)器自動(dòng)獲得所有的網(wǎng)絡(luò)配置信息。
CPU 的擴(kuò)展指令集發(fā)生變化。遷移后的系統(tǒng)中,新的虛擬 CPU 或主板和舊的會有一些不同。CPU 的擴(kuò)展指令集如 SSE,Vectors, NX 可能被加入或去掉。CPU 的型號和制造商信息可能被改變。因此,如果你想要優(yōu)化虛擬系統(tǒng)上的軟件,這可能是浪費(fèi)時(shí)間并且導(dǎo)致系統(tǒng)崩潰。最好是使用通用的軟件,讓程序在每次啟動(dòng)的時(shí)候檢查運(yùn)行環(huán)境和是否需要優(yōu)化。實(shí)際上,實(shí)時(shí)遷移的狀況比這個(gè)還要復(fù)雜,因?yàn)樘幚砥骺赡茉诔绦虻倪\(yùn)行的過程中被改變。目前為止還沒有一個(gè)方案能很好的解決這個(gè)問題。
如你所見,P2V 和 V2V 最大的問題在于硬件的改變。Linux 發(fā)行版本身應(yīng)該可以處理所有的硬件變化:在系統(tǒng)啟動(dòng)的時(shí)候去檢查所有的硬件,操作系統(tǒng)內(nèi)核識別新的設(shè)備并尋找新的驅(qū)動(dòng)處理它們 ,所有應(yīng)用軟件都不要和硬件綁定,設(shè)計(jì)一個(gè)很好的模式來應(yīng)對突然的環(huán)境變化。
虛擬機(jī)所呈現(xiàn)出來的虛擬硬件通常與原始服務(wù)器上的物理硬件不同。P2V 遷移工具是這樣解決這個(gè)問題的:
VMware vCenter Converter:支持從諸如物理機(jī)、VMware 和 Microsoft 虛擬機(jī)格式以及某些第三方磁盤映像格式的源進(jìn)行轉(zhuǎn)換。他替代了舊的遷移工具 VMware Workstation Importer 和 VMware P2V Assistant。VMware vCenter Converter 可以支持和識別大多數(shù)服務(wù)器硬件類型。VMware vCenter Converter 提供以下兩種克隆機(jī)制:熱克?。▽?shí)時(shí)遷移)和冷克?。ㄊ褂?BootCD 的克?。J褂脽峥寺r(shí),VMware vCenter Converter 直接與源物理機(jī)上運(yùn)行的操作系統(tǒng)通信,因此沒有直接的硬件級別依賴性;使用冷克隆時(shí),VMware vCenter Converter BootCD 提供一個(gè)可支持最新硬件的 Windows PE 引導(dǎo)環(huán)境,因此可以識別大多數(shù)物理服務(wù)器系統(tǒng)硬件。目前只支持基于 Microsoft Windows 的物理機(jī)遷移。
XenConvert:是 XenServer 物理機(jī)到虛擬機(jī)的遷移工具。不僅可以遷移 Window 物理機(jī)到 XenServer 管理的虛擬機(jī),而且可以導(dǎo)入 VMware 虛擬機(jī) VMDK 格式和 OVF 包。
Virtual Machine Manager 2008: 提供基于任務(wù)的向?qū)?,將自?dòng)執(zhí)行大部分轉(zhuǎn)換過程,以此來簡化 P2V 轉(zhuǎn)換。由于可通過編寫腳本來完成 P2V 轉(zhuǎn)換過程,因此可以通過 Windows PowerShell 命令行進(jìn)行大規(guī)模的 P2V 轉(zhuǎn)換。VMM2008 同時(shí)支持聯(lián)機(jī)轉(zhuǎn)換和脫機(jī)轉(zhuǎn)換。
Symantec Ghost:制作鏡像文件和把鏡像文件恢復(fù)到虛擬機(jī)。用來把需要遷移的服務(wù)器的硬盤通過網(wǎng)絡(luò)做成鏡像文件,然后通過網(wǎng)絡(luò)把鏡像文件恢復(fù)到虛擬機(jī)。
Virt-p2v:RedHat 的開源遷移工具。
支持 V2V 遷移是虛擬機(jī)的管理工具的重要功能,所以各種虛擬化軟件都提供了實(shí)現(xiàn) V2V 遷移的模塊或工具。V2V 在線遷移大大的減少了虛擬機(jī)的遷移的停機(jī)時(shí)間。這使動(dòng)態(tài)遷移成了用戶在需要不間斷工作時(shí)遷移虛擬機(jī)的首選。通常的在線遷移方案,是虛擬機(jī)使用共享存儲,遷移時(shí)只拷貝虛擬機(jī)的內(nèi)存。原理參見前面的小節(jié)“V2V 內(nèi)存遷移技術(shù)”。
VMware VMotion
VMware 的在線遷移是由 VMotion 這個(gè)組件實(shí)現(xiàn)的 。Vmotion 的實(shí)時(shí)解決方案的特點(diǎn)是有其自己的 Cluster File System: VMFS,此外也支持 NFS。Vmotion 把整個(gè)虛擬機(jī)包括其完整狀態(tài)封裝在幾個(gè)文件中,存放在 SAN/NAS 等共享存儲中。遷移的過程是把內(nèi)存和運(yùn)行狀態(tài)通過高速網(wǎng)從源復(fù)制到目標(biāo)。
Citrix XenMotion
XenMotion 是 XenServer 的一項(xiàng)功能,能夠?qū)⒄谶\(yùn)行的虛擬機(jī)從一臺 XenServer 主機(jī)上遷移到另外一臺,而不帶有停機(jī)的危險(xiǎn)。這就意味著在整個(gè)遷移過程中,被移動(dòng)的虛擬機(jī)在任意時(shí)刻都可以訪問。XenMotion 的主要目的是在某臺服務(wù)器進(jìn)行計(jì)劃維修時(shí),使終端用戶覺察不到應(yīng)用程序出現(xiàn)過極短暫的中斷,令整個(gè)服務(wù)過程正常順暢。
Microsoft Hyper-V
微軟的 Hyper-V 從 2.0 開始支持了動(dòng)態(tài)遷移技術(shù)。利用 Hyper-V 動(dòng)態(tài)遷移,在不中斷任何服務(wù)或者不允許停機(jī)的前提下,將一個(gè)運(yùn)行中的虛擬機(jī)從一個(gè) Hyper-V 物理主機(jī)移動(dòng)到另外一個(gè)上面,通過預(yù)復(fù)制遷移的虛擬機(jī)中的內(nèi)存到目的主機(jī)。管理員或者腳本在啟動(dòng)動(dòng)態(tài)遷移的時(shí)候控制選擇此次遷移的目標(biāo)計(jì)算機(jī),客戶使用被遷移系統(tǒng)時(shí)是不會感覺到遷移在進(jìn)行的。
QEMU-KVM/Libvirt
內(nèi)核虛擬機(jī) KVM 技術(shù)的原創(chuàng)公司 Qumranet 在 2008 年被 RedHat 收購以后,得到了全面快速的發(fā)展。在 2009 年發(fā)布的 Redhat Enterprise Linux 5.4 全面支持了 KVM 虛擬機(jī),其中已經(jīng)包含了離線遷移和在線遷移的技術(shù)。2010 年發(fā)布的 Redhat Enterprise Linux 5.5 和 Suse Linux Enterprise Server 11 Service Pack 1 中集成了圖形化的 KVM 虛擬機(jī)管理工具 virt-manager,使虛擬機(jī)的遷移更加直觀和方面。在本系列文章的下一篇中將詳細(xì)介紹如何遷移 KVM 虛擬機(jī)。
目前許多企業(yè)都已將包括 CPU、內(nèi)存、I/O、存儲、網(wǎng)絡(luò)在內(nèi)的數(shù)據(jù)中心設(shè)備進(jìn)行了虛擬化,如何更好管理和利用這些虛擬的和物理的資源,已經(jīng)成為數(shù)據(jù)中心異構(gòu)虛擬化時(shí)期急需解決的問題。P2V 遷移工具使物理資源虛擬化、數(shù)據(jù)中心轉(zhuǎn)移更加簡單;V2V 遷移工具使虛擬資源達(dá)到最優(yōu)化配置;而 V2P 遷移工具可以快速部署虛擬機(jī)到物理機(jī)。在不遠(yuǎn)的將來,P2V/V2P/V2V 工具都會失去原有的意義,所有功能的實(shí)現(xiàn)都集成到一個(gè)智能化、自動(dòng)化、自治化數(shù)據(jù)中心的優(yōu)化系統(tǒng)中去。 高度自動(dòng)化的監(jiān)測模塊將 24 小時(shí)掃描整個(gè)數(shù)據(jù)中心,尋找過載和閑賦的虛擬機(jī);規(guī)劃模塊根據(jù)監(jiān)測報(bào)告和收集的信息選擇最好的遷移工具進(jìn)行資源優(yōu)化,遷移過程將在應(yīng)用程序正常運(yùn)行的狀況下自動(dòng)執(zhí)行。那時(shí),整個(gè)環(huán)境就像液體一樣可以自由流動(dòng),負(fù)載不停地在各服務(wù)器上保持著均衡,虛擬環(huán)境與物理環(huán)境對用戶將再無差別。
云計(jì)算就是以服務(wù)的形式提供計(jì)算資源。云計(jì)算背后最重要的概念之一就是可伸縮性,而實(shí)現(xiàn)它的關(guān)鍵則是虛擬化。虛擬化在一臺共享計(jì)算機(jī)上聚集多個(gè)操作系統(tǒng)和應(yīng)用程序,以便更好地利用服務(wù)器。虛擬化還允許在線遷移,因此,當(dāng)一個(gè)服務(wù)器超載時(shí),可以將其中一個(gè)操作系統(tǒng)以及它的應(yīng)用程序遷移到一個(gè)新的、不繁忙的服務(wù)器上。在云中,可以在多個(gè)操作系統(tǒng)和應(yīng)用程序之間共享虛擬化服務(wù)器,從而減少服務(wù)器的數(shù)量。更少的服務(wù)器意味著需要更少的空間(減少數(shù)據(jù)中心占用的空間)和更少用于制冷的電力(減少碳污染)。 IBM 認(rèn)為,虛擬化是未來云計(jì)算架構(gòu)的關(guān)鍵組成模塊,而衡量一家 IT 企業(yè)的“云”能力的關(guān)鍵也正是其虛擬化實(shí)施能力。虛擬化技術(shù)正在普及,也許不用太久,我們每天都會與虛擬機(jī)打交道。
本文介紹了虛擬機(jī)遷移的各種方法及工具,分析了內(nèi)存預(yù)拷貝技術(shù)的原理,還列舉了虛擬機(jī)遷移中應(yīng)該注意的問題。不僅對于系統(tǒng)管理員全面了解遷移方法和策略,進(jìn)行虛擬機(jī)遷移規(guī)劃有參考意義;而且對于虛擬機(jī)的開發(fā)和測試人員也有指導(dǎo)意義。本系列后面的文章中,將具體介紹在 KVM 虛擬機(jī)上,如何操作和實(shí)現(xiàn)系統(tǒng)遷移。
聯(lián)系客服