說到IP遷移,其實也是我很想寫的一篇部落格,這項技術,當時大概是2013年的時候學習的這項技術,隻是一直沒找到很好的機會去實踐,前一陣子,筆者參與負責了一個研發項目,項目背景,使用MVMC 3.1 powershell 遷移vmware 到 hyper-v ,同時編寫異構混合雲門戶.NET程式,調用MVMC的powershell在UI界面進行操作,然後采用變量的方式傳入到程式。
在進行這項工作的時候,筆者發現一個問題,例如,我需要把虛拟機從ESXI5.1遷移至hyper-v3.0,我的ESXI是192.168.6.0這個網段,hyper-v3.0是192.168.2.0這個網段,當我在MVMC UI界面執行的時候,實質上,MVMC會去讀取esxi裡面虛拟機的配置,然後完全在hyper-v這面建立出來一個一模一樣的虛拟機配置,但是,如果說esxi裡面某台虛拟機的ip位址是192.168.6.1,當我把這台虛拟機遷移過來的時候,實質上,網卡資訊是被清空的,當我把192.168.6.1這台虛拟機遷移到hyper-v平台下,hyper-v會重新為這台虛拟機挂載新的網卡,而不是完全把原來esxi裡面虛拟機的網卡資訊同步過來,是以造成的效果就是虛拟機遷移到hyper-v平台後,會重新通過hyper-v網段的dhcp擷取到一個IP位址,如果hyper-v網段内沒有DHCP,那麼遷移過來的虛拟機會拿到一個169的IP位址。
這個是我在UI界面執行的效果,但是當我使用 MVMC powershell 進行遷移,例如我在ESXI5.1中,有一台虛拟機是192.168.6.1,那麼遷移過來之後,hyper-v的網卡是 未連接配接狀态,你需要手動去hyper-v中重新手動連接配接這塊網卡,手動連接配接上之後,網卡資訊也是被清空的,是以當網卡被連接配接上之後,也會在hyper-v網段,重新DHCP擷取到一個hyper-v網段的位址,我不知道是不是由于我的環境中,vmware和hyper-v不在同一個網段所導緻的,但是我猜想,更可能是發生在VMDK轉VHDX那個過程,IP位址丢了,如果您測試發現同一網段下的遷移,IP位址可以同步過來,歡迎您告訴我結果。
那麼,當時我就想,怎麼能把vmware裡面的網卡資訊,能夠遷移到hyper-v來呢,于是我立刻就想到了一個辦法,這個辦法需要用到三句powershell。
第一句,很簡單,在MVMC轉換的powershell後面,根據前面傳入的變量,即遷移到hyper-v之後的hyper-v主機,添加一個挂載網卡的指令,先讓遷移過來之後網卡挂載上再說。
第二句,就是用到了Windows 遷移工具,這條指令,我加在了轉換前面的一個步驟,首先,轉換需要确定Vmware裡面需要轉換那台虛拟機,那我就把這個轉換虛拟機的變量,傳入到後面的Windwos遷移工具子產品,首先,擷取到需要進行轉換的虛拟機之後,使用遠端會話連接配接進去,運作export-smigserversetting -ipconfig指令,把這台虛拟機的IP位址資訊儲存到一個網絡路徑下、
第三句,就是當遷移完成之後,也成功遷移虛拟機到hyper-v平台下,也成功執行了挂載網卡之後,在挂載網卡的後面,再加上一個powershell,import-smigserversetting -ipconfig,将之前儲存到網絡路徑下的IP位址再遷移回來,這樣子,vmware裡面的網卡資訊就可以同步到hyper-v裡面了,從某些程度來說網卡資訊的遷移,也減少了一定的當機時間與風險性。
這個就是我想到的一個ip位址遷移,能用到的場景,或者比如說,目前我的2003伺服器裡面配置了很多塊網卡,每塊網卡又包括了很多設定,諸如DNS字尾,TCP/IP連接配接等等,我希望,在保留現有2003的網卡配置上,遷移到2012平台上,同時,我希望這個步驟可以自動化來完成,避免人工操作的錯誤,那麼您也可以嘗試使用Windows遷移工具進行IP資訊的遷移。
OK,那麼言歸正傳,先來幫助大家複習一下
1.Windwos遷移工具,如果需要遷移,首先,需要在來源端和目标端分别安裝Windows遷移工具,才可以實施。
2.如果源端是2008R2及以上,可以直接通過添加Windows遷移工具功能,如果源端是2008/2003,需要在通過在目标端,生成可用于03端的遷移工具包,然後将遷移工具包複制到03上面進行安裝,讓03上面也可以具備Windows遷移工具功能。
3.由于Windwos遷移工具主要是在powershell工具下面進行執行,是以要求,來源端,至少安裝powershell1.0、.NET2.0
4.使用Windows遷移工具,主要是執行導入/導出操作,在來源端導出,在目标端導入,這句話如果大家暫時不了解沒關系,随着我們一步一步的深入,你就會看到。
介紹一下今天的環境。
1台Windows server 2003 VM虛拟環境
兩塊網卡 分别配置有IP位址
已認證遷移工具包安裝Windows遷移工具
1台Windows server 2012R2 VM虛拟環境
兩塊網卡,目前都是DHCP到的IP位址
已認證伺服器角色與功能安裝Windows遷移工具
我要做的是将2003裡面的兩塊網卡的所有資訊遷移到2012R2對應的網卡下,之後徹底替代掉2003這台伺服器的網絡對外連接配接。
首先,我們可以打開server 2003的網卡資訊進行檢視
記錄下這兩塊網卡的資訊,第一塊management網卡的IP位址是10.0.0.3,第二塊Intranet網卡的資訊是20.0.0.2,同時也請記下兩塊網卡的MAC位址
在源端Windows Server 2003上面,打開Windows遷移工具的powershell tools
<a href="http://s3.51cto.com/wyfs02/M01/5D/FE/wKiom1UolGSDuWzlAAKjJyPquk8243.jpg" target="_blank"></a>
執行指令如下
export-smigserversetting -ipconfig -path c:\ipconfig -verbose
<a href="http://s3.51cto.com/wyfs02/M00/5D/FE/wKiom1UolZrDPJ2bAAFApF0JJ2k256.jpg" target="_blank"></a>
這條指令的意義如下
export-smigserversetting 導出源端伺服器配置
-ipconfig 導出源端伺服器的IP位址資訊
-path 導出檔案的路徑
-verbose 是否在輸出端顯示導出資訊
當執行了這條指令之後,會提示讓你輸入一個password,這個password,主要是用于加密Mig遷移檔案的,避免Mig檔案被惡意使用。
随意輸入一個你喜歡的密碼之後,smigserver就會開始執行導出IP位址的操作,不光是IP位址,可以看到,整個網卡的所有資訊,都會被導出出來。
<a href="http://s3.51cto.com/wyfs02/M02/5D/FE/wKiom1UoluyBYv8cAAOQk-XdRVE507.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/5D/FA/wKioL1UomDnQ-h-cAAQ72QiM4so818.jpg" target="_blank"></a>
執行完成導出指令後,我們将導出得到的 被加密的 mig檔案,複制到2012R2伺服器上
<a href="http://s3.51cto.com/wyfs02/M00/5D/FE/wKiom1Uol5DzbejWAAEuFX-FCi4557.jpg" target="_blank"></a>
執行import-smigserversetting
<a href="http://s3.51cto.com/wyfs02/M02/5D/FA/wKioL1UomebjQQrSAADn9Xty51o869.jpg" target="_blank"></a>
或者你也可以通過這條指令,在Windwos powershell中運作Add-PSSnapin,加載遷移工具的指令
<a href="http://s3.51cto.com/wyfs02/M02/5D/FE/wKiom1UomNGyz6F2AAEQNXyxoNE227.jpg" target="_blank"></a>
Always 如果你想要使用指令提示符運作也是可以的,在指令提示符下輸入以下指令即可
powershell.exe -PSConsoleFile %SystemRoot%\system32\ServerMigrationTools\ServerMigration.psc1
<a href="http://s3.51cto.com/wyfs02/M00/5D/FF/wKioL1Uo66_SasT1AAGExkiYGFU653.jpg" target="_blank"></a>
注意:如果你的遷移源端和目标端在同一個可以通訊的網絡環境下,這裡你就需要選擇一個合适的時間點,将Windows server 2003裡面的網卡禁用掉,總之一定在導入前執行,否則就會出現兩個機器,ip位址沖突的情況!!!
<a href="http://s3.51cto.com/wyfs02/M02/5D/FB/wKioL1UonKCA84-yAAFWjT5oEtg740.jpg" target="_blank"></a>
這裡我們選擇在Windwos powershell中執行import-smigserversetting導入操作
<a href="http://s3.51cto.com/wyfs02/M01/5D/FF/wKiom1Uom82iKueaAAPOj4dGzDQ377.jpg" target="_blank"></a>
Import-SmigServerSetting -ipconfig all -SourcePhysicalAddress "00-0C-29-E4-B5-92","00-0C-29-E4-B5-9C" -TargetPhysicalAddress "00-0C-29-5E-9E-84","00-0C-29-5E-9E-8E" -path c:\ipconfig -Verbose
Import-SmigServerSetting 導入伺服器配置
-ipconfig 導入伺服器配置資訊類型,ipconfig為ip資訊
all 為所有網卡
-SourcePhysicalAddress
-TargetPhysicalAddress
看到這裡,我猜大家應該就會知道,Windows遷移工具,在做網卡資訊映射的時候,是根據MAC位址進行映射的,比如說,2003裡面第一塊網卡,management的MAC位址資訊是00-0C-29-E4-B5-92,2012R2裡面第一塊網卡的MAC位址資訊是00-0C-29-5E-9E-84,Windows遷移工具,就會将MAC位址為00-0C-29-E4-B5-92的所有網卡資訊,全部映射給00-0C-29-5E-9E-84。我這裡用了一個英文的,号隔離開了多個MAC位址資訊 ,代表我可以同時将多塊網卡,按照順序進行映射。
-path 要導入的mig檔案路徑
-verbose 輸出導入資訊
輸入之前在導出時候設定的密碼,采用密文輸入
<a href="http://s3.51cto.com/wyfs02/M02/5D/FB/wKioL1UonpWTO4lfAALbQy55LA8087.jpg" target="_blank"></a>
輸入完成後,Windows遷移工具就會開始映射網卡資訊
映射完成後,我們打開2012R2裡面的網卡資訊,發現03裡面的多塊網卡資訊已經按照順序映射了過來
<a href="http://s3.51cto.com/wyfs02/M01/5D/FB/wKioL1UooJyAmXmgAALNNeHjdB0495.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/5E/00/wKiom1Uon1DD84oZAALnvZj03Vs575.jpg" target="_blank"></a>

本文轉自 老收藏家 51CTO部落格,原文連結:http://blog.51cto.com/wzde2012/1631172