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