如何對Hyper-V副本進行重新同步?
譯文【51CTO精選譯文】一說起對Hyper-V副本進行重新同步這個話題,很多朋友***冒出來的念頭就是--我們為什么或者說什么時候會需要對Hyper-V副本中的虛擬機進行同步?答案很簡單,如果Hyper-V 主服務器已經意識到虛擬機副本并非***版本或者不知道該復制哪些內容,這時候重新同步操作就非常必要了。
再有,如果虛擬機處于臨界狀態或者主服務器失去了追蹤變更的控制能力、因而無法檢測到副本的起始點,我們也需要對其進行重新同步。在以上這幾種情況下,主服務器需要重新啟動,具體流程包括刪除恢復歷史記錄(也就是HRL文件)并為即將進行復制的VHD文件創建新的基準線。
重新同步工作需要以下幾項條件作為前提:
- 大家需要利用Hyper-V管理器之外的其它方法對VHD文件進行修改。換句話來說,Hyper-V副本引擎只有在檢測到Hyper-V副本中的VHD文件發生變更之后,這些變更才能被記錄在HRL文件當中。
- HRL(即Hyper-V副本記錄)的累積量已經超過50%。
- 向HRL文件寫入內容時存在問題。
- HRL文件沒有被正確關閉。
在以上任何一種情況下,當虛擬機需要進行重新同步時、我們都會收到“副本健康狀況”錯誤提示信息。這條錯誤提示信息的具體內容為“虛擬機<虛擬機名稱>需要進行重新同步。重啟副本以開始重新同步。”一旦在使用過程中看到這條信息,那么大家必須利用Replica Virtual Machine對虛擬機進行重新同步。
備注:在我們開始重新同步之前,必須首先解決主服務器與副本服務器之間存在的連接問題。
對虛擬機內容進行重新同步的方式分為兩種:***,在Hyper-V管理器當中恢復主虛擬機上的副本;或者第二,使用PowerShell命令行。
在Hyper-V管理器當中,大家可以右鍵點擊虛擬機>副本>選擇"恢復副本"選項,從而對副本進行恢復或者開始重新同步流程。
要在PowerShell當中進行重新同步操作,我們則需要利用Resume-VMReplication命令,具體內容如下所示:
- Resume-VMReplication -VMName "MyVM" -Resynchronize -ResynchronizeStartTime "02/11/2014 12:00:00"
如果系統沒有提示要求重新同步或者Hyper-V副本并沒有將虛擬機設為"需要重新同步"狀態,大家也可以通過手動方式對重新同步流程進行初始化;不過我們建議大家不到萬不得已、請不要使用這種方式。
只有在我們認為虛擬機內容并未完全同步而且需要通過重新同步方式糾正這一問題時,才有必要進行手動重新同步。在手動進行重新同步的過程中,請首先暫停虛擬機運行、然后再對重新同步進行初始化操作。
- Suspend-VMReplication -VMName "MyVM"
- Resume-VMReplication -VMName "MyVM" -Resynchronize
大家可以利用Hyper-V管理器調整每套虛擬機系統的重新同步操作方式。右鍵點擊Hyper-V副本中的對應虛擬機,而后選擇"設置"。在左側窗體中,選擇"重新同步"選項、接下來在右側窗體中按照下圖所示內容對設置進行修改:
正如大家在截圖中所看到,我們可以為重新同步操作設置三種實施方案:***,手動;第二,自動;第三,以指定時間間隔進行。最明智的作法是配置并使用第三種選項('只在以下時段內自動開始重新同步'),從而保證重新同步流程只會發生在非高峰時段當中。
大家也可以如下所示利用Set-VMReplication以及Get-VMReplication兩條PowerShell命令配置并查看重新同步的具體設置:
禁用自動重新同步的命令內容:
- Set-VMReplication -VMName "MyVM" -AutoResynchronizeEnabled 0
啟用自動重新同步的命令內容:
- Set-VMReplication -VMName "RESYNC VM" -AutoResynchronizeEnabled 1 -AutoResynchronizeIntervalStart 00:00:00 -AutoResynchronizeIntervalEnd 23:59:59
要檢查重新同步設置的具體內容,我們可以如下所示使用Get-VMReplication PowerShell命令:
- Get-VMReplication -VMName "MyVM" | ft * -auto
要在Hyper-V副本中檢查全部虛擬機的設置內容,可以使用如下命令:
- Get-VMReplication * | ft * -auto
在Get-VMReplication命令的輸出結果中尋找AutoResynchronizeEnabled、AutoResynchronizeIntervalStart、以及AutoResynchronizeIntervalEnd列及其對應值。
重新同步流程到底如何執行?
重新同步流程包含以下幾個步驟:
1、觸發重新同步事件,無論是以手動還是自動方式。
2、檢查主虛擬機與副本虛擬機的VHD文件大小。
3、主服務器開始追蹤VHD文件中的變更記錄,同時重新同步工作已經進入運作狀態。
4、全部寫入內容都將被追蹤并保存在HRL文件當中,并在重新同步流程徹底結束之后進行復制。
5、記錄事件ID 29242,其具體內容包括虛擬機名稱、VHD文件以及VHD文件的起始與結束塊。
6、為VHD文件創建一套不同磁盤。這是為了確保如果用戶需要撤銷重新同步操作,整個撤銷過程能夠輕松完成。
7、該不同磁盤會在重新同步流程結束之后被合并到VHD文件當中。
8、在此期間,系統會比較VHD文件并進行同步。比較過程以數據塊為單位,只有內容不同的塊才會通過網絡進行傳輸。這樣的方式大大減少了需要進行網絡傳輸的數據量。
9、在同步過程結束之后,事件ID 29244會被記錄到主服務器當中。事件ID 29244當中包含眾多信息,例如經過復制的VHD文件、虛擬機名稱、塊發送、所耗時長以及操作的最終結果。
10、在此期間,所有變更都會被成功并入VHD文件,因此同步操作已經無法被撤銷。
11、刪除全部恢復點以及HRL文件。
如大家所知,重新同步流程會將所有恢復點刪除,并讓主虛擬機作好更新副本的準備。從這方面看,其與為虛擬機啟用副本功能非常相似。
總體而言,重新同步操作的目的在于確保主服務器能夠再次正確追蹤VHD文件當中的內容變更并保證副本能夠被正?;謴?。因此,請大家只在滿足以下情況的前提下進行"手動"重新同步:
如果主服務器不再將變更內容復制到副本服務器當中,而且主虛擬機已經累積下數量龐大的變更結果。
如果大家發現主虛擬機以及副本虛擬機在內容上出現原因不明的無法匹配狀況。
原文鏈接:http://www.serverwatch.com/server-tutorials/hyper-v-replica-resynchronization-process.html