解析:如何將VMware虛擬磁盤鏡像轉換至Virtual Server
取決于環境,遷移虛擬機可能變成一件棘手的工作。Platespin的PowerConvert是大多數遷移里有用的工具,其價格也相對較低。當你需要轉換虛擬磁盤,但沒有PowerConvert的預算時會發生什么樣的情況?
如果你需要轉換微軟(.vhd)虛擬磁盤到VMware(.vmdk)虛擬磁盤,可以使用VMware的Virtual Machine Importer,這是一個可免費下載的工具。為了將VMware的虛擬機轉換到Virtual Server或Virtual PC,僅有的來自微軟的開源產品是Virtual Server Migration Toolkit (VSMT)。
不過由于VSMT有大量煩瑣的要求,包括Microsoft Automated Deployment Services(ADS),許多管理員更喜歡使用另一種方法。
在本文中,我們將描述這種將VMware虛擬機遷移到Virtual Server的方法。***部分將講述如何為遷移準備源虛擬機,第二部分將討論如何準備FTP服務器、克隆源虛擬機以及準備目標虛擬機。
下面是需要具備的:
Symantec Ghost磁盤鏡像軟件。對于沒有Ghost的管理員,本文說明使用開源Ghost for UNIX(G4U)創建和部署鏡像。我分別使用Symantec Ghost和G4U測試了這個過程。使用G4U,部署鏡像到新Virtual Server虛擬機比使用Symantec Ghost快兩倍。
上傳與存儲克隆鏡像的FTP Server。
遷移Windows Setup CD或為虛擬機操作系統安裝的***服務包。
prepvm.vbs腳本,用于禁止服務以及可能阻止已遷移的虛擬機成功啟動的驅動。
將VMware虛擬機作為Virtual Server虛擬機部署相對比較容易,只要移除不必要的驅動和服務,并用現有的硬件抽象層(HAL)代替。
確保目標硬盤配置與源虛擬機磁盤配置相同,以便在克隆虛擬機之前不需要修改boot.ini文件。
現在我們來看看遷移過程。
準備源虛擬機
遷移過程最重要的一部分就是準備源虛擬機。當部署到Virtual Server時,新虛擬機不會在啟動時出現藍屏。
為了保證遷移成功,將使用我的prepvm.vbs腳本以禁用任何可能遺留的VMware驅動,避免Windows啟動時阻礙虛擬機。下面是這個腳本:
'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
照以下步驟準備源虛擬機
1.創建虛擬機的備份副本,并在余下步驟使用這個副本。為克隆準備副本,確保在克隆期間發生錯誤時,源虛擬機仍然可用。
2.從源虛擬機的副本啟動并登錄。復制prepvm.vbs腳本到虛擬機,這時候不要運行這個腳本。
3.使用添加/刪除程序卸載VMware Tools。出現對話框時重啟虛擬機。
4.重新登錄虛擬機。如果在登錄后顯示Found New Hardware Wizard,取消向導。如果提示重新啟動,點擊"NO"。
#p#
5.檢查系統的服務器包級別。如果沒有安裝服務包,那么需要用到OS Setup CD。如果安裝了,需要訪問服務包設置文件。
注意,你復制的文件與OS/Service Pack版本想匹配非常重要。復制舊一點的版本可能使用系統不能啟動。
6.打開命令提示符窗口。
7.恢復到默認HAL,運行以下命令(假定Service Pack或Setup CD-ROM有驅動器號D):
expand d:i386hal.dl_ %windir%system32hal.dll
注意,如果你從%windir%system32servicepackfiles文件夾復制文件(假定在服務包安裝期間,在本地復制SP備份文件到系統的硬盤)的話,你只需要復制servicepackfilesi386hal.dll文件到%windir%system32文件夾。
8.將目前的ntoskrnl更換成默認值,使用下面的命令:expand d:i386 toskrnl.ex_ %windir%system32 toskrnl.exe。
注意,如果你從%windir%system32servicepackfiles文件夾復制文件,只需要復制servicepackfilesi386 toskrnl.exe文件到%windir%system32文件夾。
9.現在運行prepvm.vbs腳本。虛擬機現在將關閉并可以進行鏡像了。
準備好源虛擬機后,現在就能開始鏡像過程了。
在上一部分中,我們討論了為什么管理員有時候需要另一種方法從VMware遷移虛擬機到Virtual Server。有時,一些工具不能滿足企業的需求。我們也討論了如何為遷移準備源虛擬機。
在第二部分中,TechTarget中國的特約作者Chris Wolf將解釋如何準備FTP服務器、克隆源虛擬機,然后準備目標虛擬機以接受來自源虛擬機的信息。
準備FTP服務器
如果你打算使用G4U為虛擬機創建鏡像,將需要一個可用的FTP服務器。你也需要在FTP服務器上創建一個帳號,以便有權限創建和寫入文件。
如果你尋找快速的FTP應用,不妨考慮Cerberus FTP。這款軟件對個人免費開放,商業版本需要59.99美元。有了FTP服務器設置和叫做安裝的帳號,就可以對源虛擬機創建鏡像了。
克隆源虛擬機
使用以下步驟克隆源虛擬機硬盤鏡像:
1.下載G4U CD-ROM ISO鏡像并保存在源虛擬機主機系統上。
2.使用所下載的g4u-2.2.iso文件配置虛擬機的虛擬CD-ROM。
3.在虛擬機開始啟動時按下ESC鍵。將出現虛擬機的啟動菜單,然后選擇CD-ROM驅動。
4.默認下,虛擬機將通過DHCP試圖獲取一個IP地址。如果沒有可用的DHCP服務器,通過以下步驟為虛擬機設置一個靜態IP地址:
運行ifconfig -a命令給網絡接口命名。
現在運行ifconfig netmask 命令設置IP地址。例如,為了在接口pcn0上設置IP地址,你將運行ifconfig pcn0 192.168.0.10 netmask 255.255.255.0。
5.現在開始創建鏡像。運行uploaddisk [disk]命令。例如,在服務器192.168.0.5上的鏡像文件夾里創建叫做w2ksrv.gz的鏡像,你將運行uploaddisk 192.168.0.5 images/w2ksrv.gz。
注意,如果虛擬機使用的是虛擬SCSI磁盤,你將需要在命令句法里指定克隆哪個磁盤。通過使用G4U運行磁盤命令能看見所有的磁盤。因此如果上面的例子使用的是虛擬SCSI磁盤而不是IDE磁盤的話,該運行這個命令:uploaddisk 192.168.0.5 images/w2ksrv.gz sd0。
6.出現提示時,輸入密碼以在FTP服務器上安裝帳戶。不久將開始上傳鏡像。
7.等待上傳。完成后關閉源虛擬機。
現在已經準備好將鏡像部署到目標虛擬機。
準備目標虛擬機
按照以下步驟進行:
1.在Virtual Server(或Virtual PC)上創建一臺與源虛擬機硬件配置相同的虛擬機。注意,目標系統上的虛擬硬盤必須等于或大于源虛擬機的虛擬硬盤。
2.使用downloaded g4u-2.2鏡像文件配置虛擬機的虛擬CD-ROM。
3.默認下,虛擬機將通過DHCP試圖獲取一個IP地址。如果沒有可用的DHCP服務器,通過以下步驟為虛擬機設置一個靜態IP地址:
運行ifconfig -a命令給網絡接口命名。
現在運行ifconfig netmask 命令設置IP地址。例如,為了在接口pcn0上設置IP地址,你將運行ifconfig pcn0 192.168.0.10 netmask 255.255.255.0。
4.使用以下命令句法下載虛擬機:slurpdisk [disk]。例如,為了下載服務器192.168.0.5鏡像文件夾里叫做w2ksrv.gz的鏡像,你應該運行slurpdisk 192.168.0.5 images/w2ksrv.gz。
5.出現提示時,輸入密碼安裝FTP帳號。注意,如果下載出現錯誤,可能需要使用slurpdisk命令句法(例如:slurpdisk 192.168.0.5 images/w2ksrv.gz wd0)指定目標磁盤。運行磁盤命令查看所有目標磁盤。
6.下載完成后重啟虛擬機。
7.重啟系統后登錄虛擬機。你應該能看見檢測到的新硬件,并且出現重啟的提示,點擊"Yes"。
8.系統重啟后登錄,然后安裝虛擬機附件。這將在新虛擬機上安裝與Virtual Server(或Virtual PC)兼容的驅動。
我已經使用過本文描述的步驟轉換Windows 2000、Windows XP和Windows Server 2003上的VMware虛擬機到Virtual Server 2005 R2。
當克隆系統在虛擬服務器上不能啟動時,常見的問題如下:
與VMware相關的驅動在源系統未克隆之前沒有安裝。這能通過登錄到Recovery Console并禁用與VMware相關的驅動來糾正。
復制了不正確的hal.dll和ntoskrnl.exe文件到%windir%system32文件夾。這能通過登錄到Recovery Console并復制正確的文件版本到%windir%system32文件夾來糾正。
源系統的Boot.ini文件指在新Virtual Server磁盤上的錯誤操作系統位置。這能通過運行Recovery Console里的bootcfg /rebuild修復。
作為***的手段,許多人都重新在克隆虛擬機上重新運行Windows設置,并選擇修復現有的操作系統安裝。盡管這能讓克隆虛擬機重新操作,不過這需要花費很長時間,還可能需要重新安裝先前安裝在虛擬機上的所有應用。
解決Windows設置問題的更多信息請參加Windows Server 2003 - Troubleshooting Startup。
當我***次開始執行VMware到Virtual Server的遷移時,這個過程通常非常耗時。在遷移過程中,為克隆準備源虛擬機要不到15分鐘,其余時間都花在克隆軟件本身了。
任何鏡像方法都能用于從源虛擬機克隆虛擬磁盤到目標虛擬機,不過遷移過程的真正關鍵在于準備源虛擬機。如果準備得好,虛擬機遷移過程就很簡單。
【編輯推薦】