使用克隆功能為虛擬化應(yīng)用程序排查故障
譯文【51CTO精選譯文】在虛擬化環(huán)境中,克隆(cloning)這個(gè)術(shù)語是指為現(xiàn)有的虛擬機(jī)創(chuàng)建一個(gè)精確副本即克隆的過程??寺√摂M機(jī)并不破壞原始虛擬機(jī),而是僅僅為虛擬機(jī)的虛擬硬盤和配置文件創(chuàng)建一個(gè)副本。如果克隆時(shí),虛擬機(jī)正好在運(yùn)行或處于保存狀態(tài),那么因而創(chuàng)建的克隆同樣含有原始虛擬機(jī)的存儲狀態(tài)。
克隆虛擬機(jī)是原始虛擬機(jī)的精確副本,這意味著它有一樣的安全標(biāo)識符(SID)和計(jì)算機(jī)名稱。它可能還有一樣的IP地址及/或MAC地址,這取決于克隆操作是如何進(jìn)行的。如果是這種情況,原始虛擬機(jī)和克隆虛擬機(jī)又都在同一個(gè)網(wǎng)絡(luò)上運(yùn)行,那么會因?yàn)橹貜?fù)的網(wǎng)絡(luò)地址而出現(xiàn)問題。如果網(wǎng)絡(luò)是活動目錄森林的一部分,原始虛擬機(jī)和克隆虛擬機(jī)將使用活動目錄中一樣的計(jì)算機(jī)帳戶,這同樣會帶來問題。由于諸如此類的考量因素,克隆虛擬機(jī)通常不應(yīng)該在生產(chǎn)網(wǎng)絡(luò)上使用。
由于如果你不小心將克隆虛擬機(jī)引入到原始虛擬機(jī)所在的同一個(gè)網(wǎng)絡(luò)上,克隆虛擬機(jī)會帶來問題,"克隆"這個(gè)術(shù)語有時(shí)用來指分兩個(gè)步驟的這一過程:在虛擬機(jī)上運(yùn)行Sysprep程序,然后通過運(yùn)行Sysprep程序所得的映像,生成新的虛擬機(jī)。一旦虛擬機(jī)以這種方式克隆而成,它可以用作創(chuàng)建新虛擬機(jī)的模板,這些新虛擬機(jī)在大多數(shù)方面與原始虛擬機(jī)一模一樣,但每個(gè)虛擬機(jī)都有各自的獨(dú)特SID和計(jì)算機(jī)名稱,那樣它們可以在同一個(gè)網(wǎng)絡(luò)上共存。不過,除非另有指定,否則就本文而言,我會使用"克隆機(jī)"這個(gè)術(shù)語指現(xiàn)有虛擬機(jī)的準(zhǔn)確副本。
克隆的若干優(yōu)點(diǎn)
能夠克隆虛擬機(jī)的***優(yōu)點(diǎn)之一是,可以排查與在虛擬機(jī)的訪客操作系統(tǒng)中運(yùn)行的應(yīng)用程序和服務(wù)有關(guān)的問題。為此,你需要能夠在虛擬機(jī)運(yùn)行時(shí)克隆虛擬機(jī)。
比如說,假設(shè)你有一個(gè)虛擬機(jī)在你的生產(chǎn)網(wǎng)絡(luò)上運(yùn)行,客戶們在使用該虛擬機(jī)中的一個(gè)應(yīng)用程序。隨后一些客戶開始抱怨:他們在使用該應(yīng)用程序時(shí),時(shí)常出現(xiàn)應(yīng)用程序超時(shí)、掛起或崩潰的問題。你如何排查這個(gè)問題?客戶在使用該應(yīng)用程序時(shí)試圖對應(yīng)用程序環(huán)境進(jìn)行改動有風(fēng)險(xiǎn),所以你可能會等到深夜,那時(shí)沒有客戶訪問該應(yīng)用程序,然后再試圖排查這個(gè)問題。這就意味著原本已經(jīng)疲憊不堪的管理員(你)又要忙一個(gè)晚上了。
不過,如果你可以在問題出現(xiàn)時(shí)創(chuàng)建虛擬機(jī)的精確副本(克隆機(jī)),就可以將克隆虛擬機(jī)復(fù)制到測試網(wǎng)絡(luò)上,那樣你就可以安全地對它進(jìn)行操作,設(shè)法查明應(yīng)用程序出了什么岔子。當(dāng)然,如果應(yīng)用程序是多層體系,那么情況變得比較復(fù)雜,因?yàn)槟阈枰寺“ㄌ摂M機(jī)、虛擬網(wǎng)絡(luò)和存儲系統(tǒng)的整個(gè)應(yīng)用程序環(huán)境。但從理論上來說,你可以使用諸如此類的實(shí)時(shí)克隆功能,安全地排查與虛擬機(jī)里面運(yùn)行的應(yīng)用程序和服務(wù)有關(guān)的問題。
借助VMware進(jìn)行克隆
使用VMware虛擬化平臺的管理員們已經(jīng)很熟悉如何克隆實(shí)時(shí)(運(yùn)行中)的虛擬機(jī),因?yàn)檫@項(xiàng)功能出現(xiàn)在VMware vCenter Server中已有一段時(shí)日了,它提供了一種集中式平臺,便于管理VMware vSphere環(huán)境。
克隆在VMware ESXi主機(jī)上運(yùn)行的虛擬機(jī)的步驟很簡單,在一篇題為《在vCenter Server中克隆虛擬機(jī)(1027865)》的文章中的VMware知識庫部分已有概述,詳見http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1027865。由于克隆不是一種瞬時(shí)操作,又由于未提交事務(wù)可能在虛擬機(jī)的磁盤存儲系統(tǒng)中等待處理,所以克隆過程可能并不盡善盡美。想更詳細(xì)地了解使用VMware vSphere Client克隆虛擬機(jī)有關(guān)的步驟,請參閱vSpher 5文檔中心中一篇題為《在vSphere Client中克隆虛擬機(jī)》的文章,詳見http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vsphere.vm_admin.doc_50%2FGUID-5C504B67-CDB3-42FC-8B3B-737201A725DD.html。
借助Hyper-V進(jìn)行克隆
微軟系統(tǒng)中心虛擬機(jī)管理器(VMM)自2008年發(fā)布的平臺以來就支持虛擬機(jī)克隆功能。VMM文檔特別指出,你應(yīng)該先使用sysprep處理虛擬機(jī),然后對它進(jìn)行克隆,那樣你就能利用克隆后的虛擬機(jī)創(chuàng)建新的虛擬機(jī)。圖1顯示了使用VMM 2012 R2的SCVMM管理員控制臺,克隆運(yùn)行中(實(shí)時(shí))的虛擬機(jī),并配置給Windows Server 2012 R2 Hyper-V主機(jī)。
圖1:使用系統(tǒng)中心虛擬機(jī)管理器2012 R2,實(shí)時(shí)克隆虛擬機(jī)
VMM 2012 R2中的實(shí)時(shí)克隆創(chuàng)建了原始虛擬機(jī)的精確副本,有著一樣的計(jì)算機(jī)名稱、SID、MAC地址和IP地址。在該例中,我將克隆機(jī)部署到有別于原始虛擬機(jī)的另一個(gè)邏輯網(wǎng)絡(luò)上,以便不會有任何沖突。
要是你的環(huán)境中沒有部署System Center 2012 R2,該怎么辦?有沒有什么辦法單單使用Hyper-V,克隆實(shí)時(shí)虛擬機(jī)?如果你的Hyper-V主機(jī)運(yùn)行***版本的Windows Server 2012 R2,答案是肯定的,因?yàn)樵摪姹局幸氲囊豁?xiàng)新功能就是能夠在虛擬機(jī)運(yùn)行時(shí)導(dǎo)出虛擬機(jī)。尤其吸引人的地方是,你還可以導(dǎo)出虛擬機(jī)的檢查點(diǎn)(快照)。
下面簡要介紹了你如何實(shí)時(shí)導(dǎo)出在Windows Server 2012 R2 Hyper-V上運(yùn)行的虛擬機(jī),然后將它導(dǎo)入到另一個(gè)主機(jī)上,創(chuàng)建原始虛擬機(jī)的克隆機(jī)。圖2顯示了Hyper-V管理器控制臺被用來導(dǎo)出名為DC150(150)的運(yùn)行中虛擬機(jī):
圖2:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第1步
提示:
你還可以在Hyper-V管理器中選擇多個(gè)虛擬機(jī),右擊鼠標(biāo),選擇Export(導(dǎo)出),即可實(shí)時(shí)導(dǎo)出同時(shí)在Windows Server 2012 R2中運(yùn)行的多個(gè)虛擬機(jī)。
我們將把運(yùn)行中的虛擬機(jī)導(dǎo)出到目標(biāo)主機(jī)上的共享區(qū):
圖3:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第2步
注意:你可能需要配置共享區(qū)上的NTFS許可權(quán)限,以便允許進(jìn)行導(dǎo)出操作。想了解更多信息,參閱該鏈接:http://technet.microsoft.com/en-us/library/ee407532(v=WS.10).aspx。
導(dǎo)出過程的開始階段是臨時(shí)合并檢查點(diǎn):
圖4:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第3步
隨后,打開目標(biāo)主機(jī)上的File Explorer(文件資源管理器),虛擬機(jī)文件被導(dǎo)出到目標(biāo)主機(jī)上的共享區(qū),如圖所示:
圖5:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第4步。
現(xiàn)在我們可以使用目標(biāo)主機(jī)上的Hyper-V管理器,導(dǎo)入被導(dǎo)出的虛擬機(jī)文件:
圖6:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第5步
按Import Virtual Machine向?qū)е鸩讲僮?,我們決定使用現(xiàn)有的獨(dú)特ID,恢復(fù)虛擬機(jī),那樣它是原始虛擬機(jī)的精確副本:
圖7:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第6步。
我們遇到的唯一問題是由這個(gè)事實(shí)引起的:我們測試服務(wù)器HOST40上的虛擬網(wǎng)絡(luò)其名稱不同于原始虛擬機(jī)所在的生產(chǎn)服務(wù)器HOST30上的虛擬網(wǎng)絡(luò):
圖8:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第7步。
不過,要解決這個(gè)問題,我們只要為虛擬機(jī)選擇HOST40上的虛擬網(wǎng)絡(luò)及每個(gè)檢查點(diǎn):
圖9:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第8步
一旦我們完成了向?qū)?,虛擬機(jī)文件就復(fù)制到目標(biāo)存儲文件夾,導(dǎo)入過程完畢??寺『蟮奶摍C(jī)最初處于"保存"狀態(tài),如圖所示:
圖10:使用Windows Server 2012 R2 Hyper-V實(shí)時(shí)克隆虛擬機(jī)的第9步
然后,你可以啟動克隆機(jī),它的行為和運(yùn)行與用來創(chuàng)建克隆機(jī)的原始虛擬機(jī)一模一樣。一旦你完成了這一步,現(xiàn)在一旦在原始虛擬機(jī)中運(yùn)行的應(yīng)用程序和服務(wù)出了什么問題,就可以使用克隆機(jī)開始排查問題。
你還可以使用Windows PowerShell,實(shí)時(shí)導(dǎo)出和導(dǎo)入虛擬機(jī),但可能要棘手一點(diǎn),尤其是導(dǎo)入過程。我們會在以后的文章中對此作一番介紹。
結(jié)束語
實(shí)時(shí)功能是一種功能強(qiáng)大的工具,可用來排查在虛擬機(jī)中運(yùn)行的應(yīng)用程序和服務(wù)出現(xiàn)的問題,不需要斷開虛擬機(jī)。VMware和微軟的虛擬化平臺現(xiàn)在都支持這項(xiàng)功能,所以學(xué)習(xí)如何使用該功能是個(gè)好主意。