解析:如何將VMware虛擬磁盤(pán)鏡像轉(zhuǎn)換至Virtual Server
取決于環(huán)境,遷移虛擬機(jī)可能變成一件棘手的工作。Platespin的PowerConvert是大多數(shù)遷移里有用的工具,其價(jià)格也相對(duì)較低。當(dāng)你需要轉(zhuǎn)換虛擬磁盤(pán),但沒(méi)有PowerConvert的預(yù)算時(shí)會(huì)發(fā)生什么樣的情況?
如果你需要轉(zhuǎn)換微軟(.vhd)虛擬磁盤(pán)到VMware(.vmdk)虛擬磁盤(pán),可以使用VMware的Virtual Machine Importer,這是一個(gè)可免費(fèi)下載的工具。為了將VMware的虛擬機(jī)轉(zhuǎn)換到Virtual Server或Virtual PC,僅有的來(lái)自微軟的開(kāi)源產(chǎn)品是Virtual Server Migration Toolkit (VSMT)。
不過(guò)由于VSMT有大量煩瑣的要求,包括Microsoft Automated Deployment Services(ADS),許多管理員更喜歡使用另一種方法。
在本文中,我們將描述這種將VMware虛擬機(jī)遷移到Virtual Server的方法。***部分將講述如何為遷移準(zhǔn)備源虛擬機(jī),第二部分將討論如何準(zhǔn)備FTP服務(wù)器、克隆源虛擬機(jī)以及準(zhǔn)備目標(biāo)虛擬機(jī)。
下面是需要具備的:
Symantec Ghost磁盤(pán)鏡像軟件。對(duì)于沒(méi)有Ghost的管理員,本文說(shuō)明使用開(kāi)源Ghost for UNIX(G4U)創(chuàng)建和部署鏡像。我分別使用Symantec Ghost和G4U測(cè)試了這個(gè)過(guò)程。使用G4U,部署鏡像到新Virtual Server虛擬機(jī)比使用Symantec Ghost快兩倍。
上傳與存儲(chǔ)克隆鏡像的FTP Server。
遷移Windows Setup CD或?yàn)樘摂M機(jī)操作系統(tǒng)安裝的***服務(wù)包。
prepvm.vbs腳本,用于禁止服務(wù)以及可能阻止已遷移的虛擬機(jī)成功啟動(dòng)的驅(qū)動(dòng)。
將VMware虛擬機(jī)作為Virtual Server虛擬機(jī)部署相對(duì)比較容易,只要移除不必要的驅(qū)動(dòng)和服務(wù),并用現(xiàn)有的硬件抽象層(HAL)代替。
確保目標(biāo)硬盤(pán)配置與源虛擬機(jī)磁盤(pán)配置相同,以便在克隆虛擬機(jī)之前不需要修改boot.ini文件。
現(xiàn)在我們來(lái)看看遷移過(guò)程。
準(zhǔn)備源虛擬機(jī)
遷移過(guò)程最重要的一部分就是準(zhǔn)備源虛擬機(jī)。當(dāng)部署到Virtual Server時(shí),新虛擬機(jī)不會(huì)在啟動(dòng)時(shí)出現(xiàn)藍(lán)屏。
為了保證遷移成功,將使用我的prepvm.vbs腳本以禁用任何可能遺留的VMware驅(qū)動(dòng),避免Windows啟動(dòng)時(shí)阻礙虛擬機(jī)。下面是這個(gè)腳本:
'prepvm.vbs
'Removes VMware-specific drivers from a system
On Error Resume Next
' Instantiate Shell Object
Set objShell = CreateObject("WScript.Shell")
' Disable VMware Tools Service
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesVMToolsStart", _4, "REG_DWORD"
' Disable VMware vmx_svga video driver
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesvmx_svgaStart", _4, "REG_DWORD"
' Disable VMware vmmouse driver
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesvmmouseStart", _4, "REG_DWORD"
' Disable VMware vmscsi driver
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesvmscsiStart", _4, "REG_DWORD"
' Disable VMware PCnet driver
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesPCnetStart", _4, "REG_DWORD"
' Disable VMware Buslogic driver
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesuslogicStart", _4, "REG_DWORD"
' Disable SCSI Miniport drivers
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicessymc810Start", _4, "REG_DWORD"
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicessymc8xxStart", _4, "REG_DWORD"
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicescpqarrayStart", _4, "REG_DWORD"
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicespcntn4mStart", _4, "REG_DWORD"
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicescpqnf3Start", _4, "REG_DWORD"
objShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesMRaidNTStart", _4, "REG_DWORD"
' Restart Computer
strComputer = "."
'Prompt user of impending reboot
WScript.Echo("The system is prepared for imaging and will now shutdown.")
WScript.Sleep(3)
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\" & _
strComputer & " ootcimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Shutdown()
Next
照以下步驟準(zhǔn)備源虛擬機(jī)
1.創(chuàng)建虛擬機(jī)的備份副本,并在余下步驟使用這個(gè)副本。為克隆準(zhǔn)備副本,確保在克隆期間發(fā)生錯(cuò)誤時(shí),源虛擬機(jī)仍然可用。
2.從源虛擬機(jī)的副本啟動(dòng)并登錄。復(fù)制prepvm.vbs腳本到虛擬機(jī),這時(shí)候不要運(yùn)行這個(gè)腳本。
3.使用添加/刪除程序卸載VMware Tools。出現(xiàn)對(duì)話框時(shí)重啟虛擬機(jī)。
4.重新登錄虛擬機(jī)。如果在登錄后顯示Found New Hardware Wizard,取消向?qū)?。如果提示重新啟?dòng),點(diǎn)擊"NO"。
#p#
5.檢查系統(tǒng)的服務(wù)器包級(jí)別。如果沒(méi)有安裝服務(wù)包,那么需要用到OS Setup CD。如果安裝了,需要訪問(wèn)服務(wù)包設(shè)置文件。
注意,你復(fù)制的文件與OS/Service Pack版本想匹配非常重要。復(fù)制舊一點(diǎn)的版本可能使用系統(tǒng)不能啟動(dòng)。
6.打開(kāi)命令提示符窗口。
7.恢復(fù)到默認(rèn)HAL,運(yùn)行以下命令(假定Service Pack或Setup CD-ROM有驅(qū)動(dòng)器號(hào)D):
expand d:i386hal.dl_ %windir%system32hal.dll
注意,如果你從%windir%system32servicepackfiles文件夾復(fù)制文件(假定在服務(wù)包安裝期間,在本地復(fù)制SP備份文件到系統(tǒng)的硬盤(pán))的話,你只需要復(fù)制servicepackfilesi386hal.dll文件到%windir%system32文件夾。
8.將目前的ntoskrnl更換成默認(rèn)值,使用下面的命令:expand d:i386 toskrnl.ex_ %windir%system32 toskrnl.exe。
注意,如果你從%windir%system32servicepackfiles文件夾復(fù)制文件,只需要復(fù)制servicepackfilesi386 toskrnl.exe文件到%windir%system32文件夾。
9.現(xiàn)在運(yùn)行prepvm.vbs腳本。虛擬機(jī)現(xiàn)在將關(guān)閉并可以進(jìn)行鏡像了。
準(zhǔn)備好源虛擬機(jī)后,現(xiàn)在就能開(kāi)始鏡像過(guò)程了。
在上一部分中,我們討論了為什么管理員有時(shí)候需要另一種方法從VMware遷移虛擬機(jī)到Virtual Server。有時(shí),一些工具不能滿足企業(yè)的需求。我們也討論了如何為遷移準(zhǔn)備源虛擬機(jī)。
在第二部分中,TechTarget中國(guó)的特約作者Chris Wolf將解釋如何準(zhǔn)備FTP服務(wù)器、克隆源虛擬機(jī),然后準(zhǔn)備目標(biāo)虛擬機(jī)以接受來(lái)自源虛擬機(jī)的信息。
準(zhǔn)備FTP服務(wù)器
如果你打算使用G4U為虛擬機(jī)創(chuàng)建鏡像,將需要一個(gè)可用的FTP服務(wù)器。你也需要在FTP服務(wù)器上創(chuàng)建一個(gè)帳號(hào),以便有權(quán)限創(chuàng)建和寫(xiě)入文件。
如果你尋找快速的FTP應(yīng)用,不妨考慮Cerberus FTP。這款軟件對(duì)個(gè)人免費(fèi)開(kāi)放,商業(yè)版本需要59.99美元。有了FTP服務(wù)器設(shè)置和叫做安裝的帳號(hào),就可以對(duì)源虛擬機(jī)創(chuàng)建鏡像了。
克隆源虛擬機(jī)
使用以下步驟克隆源虛擬機(jī)硬盤(pán)鏡像:
1.下載G4U CD-ROM ISO鏡像并保存在源虛擬機(jī)主機(jī)系統(tǒng)上。
2.使用所下載的g4u-2.2.iso文件配置虛擬機(jī)的虛擬CD-ROM。
3.在虛擬機(jī)開(kāi)始啟動(dòng)時(shí)按下ESC鍵。將出現(xiàn)虛擬機(jī)的啟動(dòng)菜單,然后選擇CD-ROM驅(qū)動(dòng)。
4.默認(rèn)下,虛擬機(jī)將通過(guò)DHCP試圖獲取一個(gè)IP地址。如果沒(méi)有可用的DHCP服務(wù)器,通過(guò)以下步驟為虛擬機(jī)設(shè)置一個(gè)靜態(tài)IP地址:
運(yùn)行ifconfig -a命令給網(wǎng)絡(luò)接口命名。
現(xiàn)在運(yùn)行ifconfig netmask 命令設(shè)置IP地址。例如,為了在接口pcn0上設(shè)置IP地址,你將運(yùn)行ifconfig pcn0 192.168.0.10 netmask 255.255.255.0。
5.現(xiàn)在開(kāi)始創(chuàng)建鏡像。運(yùn)行uploaddisk [disk]命令。例如,在服務(wù)器192.168.0.5上的鏡像文件夾里創(chuàng)建叫做w2ksrv.gz的鏡像,你將運(yùn)行uploaddisk 192.168.0.5 images/w2ksrv.gz。
注意,如果虛擬機(jī)使用的是虛擬SCSI磁盤(pán),你將需要在命令句法里指定克隆哪個(gè)磁盤(pán)。通過(guò)使用G4U運(yùn)行磁盤(pán)命令能看見(jiàn)所有的磁盤(pán)。因此如果上面的例子使用的是虛擬SCSI磁盤(pán)而不是IDE磁盤(pán)的話,該運(yùn)行這個(gè)命令:uploaddisk 192.168.0.5 images/w2ksrv.gz sd0。
6.出現(xiàn)提示時(shí),輸入密碼以在FTP服務(wù)器上安裝帳戶。不久將開(kāi)始上傳鏡像。
7.等待上傳。完成后關(guān)閉源虛擬機(jī)。
現(xiàn)在已經(jīng)準(zhǔn)備好將鏡像部署到目標(biāo)虛擬機(jī)。
準(zhǔn)備目標(biāo)虛擬機(jī)
按照以下步驟進(jìn)行:
1.在Virtual Server(或Virtual PC)上創(chuàng)建一臺(tái)與源虛擬機(jī)硬件配置相同的虛擬機(jī)。注意,目標(biāo)系統(tǒng)上的虛擬硬盤(pán)必須等于或大于源虛擬機(jī)的虛擬硬盤(pán)。
2.使用downloaded g4u-2.2鏡像文件配置虛擬機(jī)的虛擬CD-ROM。
3.默認(rèn)下,虛擬機(jī)將通過(guò)DHCP試圖獲取一個(gè)IP地址。如果沒(méi)有可用的DHCP服務(wù)器,通過(guò)以下步驟為虛擬機(jī)設(shè)置一個(gè)靜態(tài)IP地址:
運(yùn)行ifconfig -a命令給網(wǎng)絡(luò)接口命名。
現(xiàn)在運(yùn)行ifconfig netmask 命令設(shè)置IP地址。例如,為了在接口pcn0上設(shè)置IP地址,你將運(yùn)行ifconfig pcn0 192.168.0.10 netmask 255.255.255.0。
4.使用以下命令句法下載虛擬機(jī):slurpdisk [disk]。例如,為了下載服務(wù)器192.168.0.5鏡像文件夾里叫做w2ksrv.gz的鏡像,你應(yīng)該運(yùn)行slurpdisk 192.168.0.5 images/w2ksrv.gz。
5.出現(xiàn)提示時(shí),輸入密碼安裝FTP帳號(hào)。注意,如果下載出現(xiàn)錯(cuò)誤,可能需要使用slurpdisk命令句法(例如:slurpdisk 192.168.0.5 images/w2ksrv.gz wd0)指定目標(biāo)磁盤(pán)。運(yùn)行磁盤(pán)命令查看所有目標(biāo)磁盤(pán)。
6.下載完成后重啟虛擬機(jī)。
7.重啟系統(tǒng)后登錄虛擬機(jī)。你應(yīng)該能看見(jiàn)檢測(cè)到的新硬件,并且出現(xiàn)重啟的提示,點(diǎn)擊"Yes"。
8.系統(tǒng)重啟后登錄,然后安裝虛擬機(jī)附件。這將在新虛擬機(jī)上安裝與Virtual Server(或Virtual PC)兼容的驅(qū)動(dòng)。
我已經(jīng)使用過(guò)本文描述的步驟轉(zhuǎn)換Windows 2000、Windows XP和Windows Server 2003上的VMware虛擬機(jī)到Virtual Server 2005 R2。
當(dāng)克隆系統(tǒng)在虛擬服務(wù)器上不能啟動(dòng)時(shí),常見(jiàn)的問(wèn)題如下:
與VMware相關(guān)的驅(qū)動(dòng)在源系統(tǒng)未克隆之前沒(méi)有安裝。這能通過(guò)登錄到Recovery Console并禁用與VMware相關(guān)的驅(qū)動(dòng)來(lái)糾正。
復(fù)制了不正確的hal.dll和ntoskrnl.exe文件到%windir%system32文件夾。這能通過(guò)登錄到Recovery Console并復(fù)制正確的文件版本到%windir%system32文件夾來(lái)糾正。
源系統(tǒng)的Boot.ini文件指在新Virtual Server磁盤(pán)上的錯(cuò)誤操作系統(tǒng)位置。這能通過(guò)運(yùn)行Recovery Console里的bootcfg /rebuild修復(fù)。
作為***的手段,許多人都重新在克隆虛擬機(jī)上重新運(yùn)行Windows設(shè)置,并選擇修復(fù)現(xiàn)有的操作系統(tǒng)安裝。盡管這能讓克隆虛擬機(jī)重新操作,不過(guò)這需要花費(fèi)很長(zhǎng)時(shí)間,還可能需要重新安裝先前安裝在虛擬機(jī)上的所有應(yīng)用。
解決Windows設(shè)置問(wèn)題的更多信息請(qǐng)參加Windows Server 2003 - Troubleshooting Startup。
當(dāng)我***次開(kāi)始執(zhí)行VMware到Virtual Server的遷移時(shí),這個(gè)過(guò)程通常非常耗時(shí)。在遷移過(guò)程中,為克隆準(zhǔn)備源虛擬機(jī)要不到15分鐘,其余時(shí)間都花在克隆軟件本身了。
任何鏡像方法都能用于從源虛擬機(jī)克隆虛擬磁盤(pán)到目標(biāo)虛擬機(jī),不過(guò)遷移過(guò)程的真正關(guān)鍵在于準(zhǔn)備源虛擬機(jī)。如果準(zhǔn)備得好,虛擬機(jī)遷移過(guò)程就很簡(jiǎn)單。
【編輯推薦】