[心得] Hyper-V VM Backup 方式, Replica 的替代

看板MIS (IT資訊人員)作者 (Dino9021)時間10年前 (2014/09/22 17:36), 10年前編輯推噓9(9041)
留言50則, 7人參與, 最新討論串1/1
因為一些緣故, 有一座 Hyper-V 叢集跑 DataCenter, 上面會跑好幾十台 VM 但是因為授權的關係, 不能用 Replica 到別台機器上 微軟說, Hyper-V Manager 裡面有多少台 VM 就要計算多少授權 但是每個 VM 的 vhd 都又肥又大, 不能 Replica 的話每天晚上光 Export 就飽了 所以花了點時間研究寫出了兩個 PowerShell 程式利用 CheckPoint 來做差異化備份 請大家參考~ 有需要儘管拿去用, 有 Bug 歡迎告訴我 Hyper-V VM Backup 方式, Replica 的替代方案 (自行撰寫 PowerShell 程式) 長網址 http://blog.dino9021.com/2014/09/hyper-v-vm-backup-replica-powershell.html 短網址 http://goo.gl/lUqCNZ 環境:  1. 唯一一台 Hyper-V, 無法做複寫或叢集  2. 只有一座 Hyper-V 叢集, 沒有其他 Hyper-V 主機 描述:  上述狀況都無法進行 Hyper-V 複寫來作為備份策略  如果用 Export-VM 的話, 若 VM 的 vhd 很大則會佔用大量 Disk I/O 解決方式:  自行撰寫 PowerShell 程式, 利用 CheckPoint 功能土砲差異化備份 (與 Replica 雷同) 預設條件:  VM 本身除了備份 Powershell 所建立的 CheckPoint 外不可以有其他 CheckPoint  註: Production 環境的 VM 本來就不該有 CheckPoint, 會影響運作效率 程式運作邏輯:  1. 建立 CheckPoint 使 VM 原始 vhd 停止寫入, 新的變更都會寫在 CheckPoint 所建立的差異磁碟 avhd   且該 CheckPoint 會將當時的記憶體寫入成檔案, 等於 VM Pause  2. 將上述 CheckPoint 資料複製出來作為備份, 未來就還原該 CheckPoint, 達到備份還原目的 可達到的目標:  1. 可進行 VM 線上差異化備份, 不用每次備份都 Export, 佔用大量 I/O  2. 可以在允許 Down Time 較久的前提下手動做不停機 Migration    與 Export 後再 Import 是一樣的道理, 只是使用的是差異化磁碟 歷史:  2014.09.24 加入備份檔案檢查機制 程式運作流程:  初始化:    1. 檢查 VM 任何 CheckPoint, 沒有就可以進行初始備份    2. Copy VM 的 xml 檔    3. 建立 CheckPoint (停止寫入原始 vhd 檔)    4. 複製 VM 原始 vhd 檔    5. 產生 CheckPoint 版本檢查檔 (純文字放在備份路徑中, 用以日後判斷差異磁碟版本)    6. 等待下次備份  備份:    1. 檢查是否只有一個 CheckPoint    2. 檢查該版本是否與 CheckPoint 版本檢查檔中的紀錄相同, 相同就可以進行備份    3. Copy VM 的 xml 檔    4. 建立 CheckPoint (停止寫入前一次 CheckPoint Snapshot 中的 vhd 檔)    5. 複製前一次 CheckPoint 的 差異磁碟 avhd    6. 複製前一次 CheckPoint 的 Snapshot (xml + bin / vsv)    7. 產生 CheckPoint 版本檢查檔 (純文字放在備份路徑中, 用以日後判斷差異磁碟版本)    8. 刪除前一次 CheckPoint (使 Hyper-V 自動合併, 避免積存太多 CheckPoint 影響效能)    9. 檢查備份數量, 如果超過所設定的備份數量, 就從最舊的版本開始進行 vhd 合併   10. 建立備份歷史檔, 記載備份檔案清單、檔案大小、最後修改日期   11. 等待下次備份  還原:   1. 列出備份資料夾中現有 CheckPoint 版本供選擇   2. 將原始 vhd 檔複製到 Merge 資料夾中   3. 從最舊的 CheckPoint 版本開始, 至所選擇 CheckPoint 版本的 "前一個版本" 為止    將每一個版本所備份的差異化磁碟 avhd 檔複製到 Merge 資料夾中   4. 將上述 avhd 與原始 vhd 依照版本順序 Merge   5. 將所選擇 CheckPoint 版本的差異化磁碟 avhd 檔 複製到 Merge 資料夾中 (不可以 Merge)   6. 將所選擇 CheckPoint 版本的 VM xml 複製到 Merge 資料夾中   7. 將所選擇 CheckPoint 版本的 Snapshot複製到 Merge 資料夾中   8. 完成, 至 Hyper-V 中 Import 上述 Merge 資料夾   9. Import 以右鍵點選 CheckPoint 並選擇 Apply 後再開機   10. 將該 CheckPoint 刪除, 此時會發現 CheckPoint 仍然存在且再次刪除時會發生錯誤   11. 手動至該還原 VM 的資料夾中將 Snapshot 資料夾中的檔案全部刪除   12. 重新整理後已沒有任何存在的檢查點, 並且 VM 正以所選擇的 CheckPoint 版本運作中   13. 重建備份歷史檔, 重新計算原始 vhd 檔案大小、最後修改日期, 刪除已合併的 CheckPoint 歷史資料   14. 繼續使用 VM, 並重新進行 Backup 策略 程式共兩支:  Hyper-V VM Backup.ps1    1. 用來進行備份, 需要帶入 4 個參數:      -VM [VM名稱]      -Path [備份目標路徑]      -RV [備份保留版本數, 數字, 未輸入則預設為 10]      -CI [CheckPoint 檢查名稱, 如有空格前後要加引號, 未輸入預設為 'Backup Circle By Dino9021']    2. 用排程執行就好了, 目前沒有撰寫背景等待執行的功能  Hyper-V VM Restore.ps1    1. 用來還原, 需要帶入 2 個參數:      -Path [備份所在路徑, 未輸入的話程式執行時會要求輸入]      -CI [CheckPoint 檢查名稱, 如有空格前後要加引號, 未輸入預設為 'Backup Circle By Dino9021'] 已知問題:   1. 還原後移除 CheckPoint 要按重新整理才會從 CheckPoint 列表中清除 (應該算 Hyper-V Bug?)   2. 除了本程式建立的 CheckPoint 之外不可以有其他的 CheckPoint    要想辦法寫出備份所有的 CheckPoint 也不是不行, 但是很麻煩    Production 環境的 VM 本來就不該有一堆 CheckPoint    所以目前並不打算進行這方面的研究 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.51.166 ※ 文章網址: http://www.ptt.cc/bbs/MIS/M.1411378574.A.BF1.html

09/22 21:45, , 1F
推用心分享
09/22 21:45, 1F

09/23 11:51, , 2F
很實用!
09/23 11:51, 2F

09/23 23:48, , 3F
09/23 23:48, 3F

09/24 11:08, , 4F
更新加入備份檔案檢查機制(檔案大小、最後修改時間)
09/24 11:08, 4F

09/24 11:09, , 5F
還原時會檢查備份歷史中每個檔案上述資訊以確保完整
09/24 11:09, 5F
※ 編輯: Dino9021 (118.163.51.166), 09/24/2014 13:57:32

09/24 19:35, , 6F
09/24 19:35, 6F

09/24 22:50, , 7F
標準版2個vm授權、datacenter不計vm授權吧? .
09/24 22:50, 7F

09/24 22:56, , 8F
但是如果要 Replica 到另一台上去, 另一台也要有授權啊
09/24 22:56, 8F

09/24 22:57, , 9F
而且微軟說,管你有沒有開機,在 Manager 裡面就要算數量
09/24 22:57, 9F

09/24 22:58, , 10F
所以也不能 Replica 到另一台 Standard 上當備份
09/24 22:58, 10F

09/24 23:20, , 11F
是原廠說的嗎? 還是代理商?. 因為replica 的話、另一台
09/24 23:20, 11F

09/24 23:22, , 12F
一定是關機狀態、這樣怎麼會算兩套.
09/24 23:22, 12F

09/25 06:57, , 13F
微軟原廠業務講的,他說即使是關機狀態都要算
09/25 06:57, 13F

09/25 06:58, , 14F
我說那我如果沒有匯入 VM Manager 呢,他說那就不算,
09/25 06:58, 14F

09/25 06:58, , 15F
但是只要有VM Manager 的都要算
09/25 06:58, 15F

09/25 07:00, , 16F
為此我跟他們折騰了幾個禮拜,還要來原廠授權文件看,
09/25 07:00, 16F

09/25 07:00, , 17F
不過全英文頁數又超多後來懶得看,就信他了
09/25 07:00, 17F

09/25 07:04, , 18F
微軟一位這樣跟我說:
09/25 07:04, 18F

09/25 07:04, , 19F
不好意思,因為關機狀態不需要授權只發生在Azure上,所
09/25 07:04, 19F

09/25 07:04, , 20F
以有誤會。就Windows Server而言,沒有關機狀態就不需要
09/25 07:04, 20F

09/25 07:04, , 21F
授權這件事情,只要安裝就需要授權,不管是備援或是複寫
09/25 07:04, 21F

09/25 07:04, , 22F
09/25 07:04, 22F

09/25 07:05, , 23F
回我的這位是業務搞不定我的時候去搬來的救兵
09/25 07:05, 23F

09/25 07:07, , 24F
要計算的是這台實體機器上面”最多”可能跑多少VM,包含
09/25 07:07, 24F

09/25 07:07, , 25F
災難發生的時候你可能要把機器fail-over的情境,這是為
09/25 07:07, 25F

09/25 07:07, , 26F
什麼我說在備援或是複寫的時候,因為這台機器可能會被開
09/25 07:07, 26F

09/25 07:07, , 27F
啟,所以需要考量他的授權。
09/25 07:07, 27F

09/25 07:07, , 28F
如果你能夠提供說為什麼要把機器關機放在Hyper-V上的原
09/25 07:07, 28F

09/25 07:07, , 29F
因,我們可以討論一下這樣的情境下會需要什麼授權。
09/25 07:07, 29F

09/25 07:09, , 30F
之後他們就不理我了,因為我是個人詢問他們說沒辦法一
09/25 07:09, 30F

09/25 07:09, , 31F
直回答我假設性的問題,其實我沒有假設啊,根本就是大家
09/25 07:09, 31F

09/25 07:09, , 32F
實際上會發生的啊 XD
09/25 07:09, 32F

09/25 08:36, , 33F
再怎麼算datacenter就是不算window server的執行個體數
09/25 08:36, 33F

09/25 08:37, , 34F
兩個CPU的限制
09/25 08:37, 34F

09/25 08:40, , 35F
剛google了一下、說要有SA才有cold disaster recovery
09/25 08:40, 35F

09/25 08:41, , 36F
不用對replica複本額外買授權.
09/25 08:41, 36F

09/25 15:42, , 37F
問題你還是只有一座 Datacenter 啊
09/25 15:42, 37F

09/25 15:42, , 38F
你要 Replica 到另一台去, 另一台還是要有授權啊
09/25 15:42, 38F

09/25 15:42, , 39F
而且如果 Replica 到另一台很多台的話
09/25 15:42, 39F

09/25 15:43, , 40F
還是要買多套 Standard 或一套 Datacenter
09/25 15:43, 40F

09/25 15:43, , 41F
你查到的資料可以分享一下一起研究嗎?
09/25 15:43, 41F

09/25 15:45, , 42F
反正你要裝兩個實體 Datacenter 就要買兩套
09/25 15:45, 42F

09/25 15:45, , 43F
沒辦法買兩套就不能做 Replica, 就可以用我這個替代方案
09/25 15:45, 43F

09/25 15:46, , 44F
第二套實體如果授權數不夠也不能 Replica
09/25 15:46, 44F

09/25 15:46, , 45F
當然如果無視授權當然一點問題都沒有
09/25 15:46, 45F

09/25 15:47, , 46F
有要符合授權就不能超出授權範圍,Replica的VM也要算進去
09/25 15:47, 46F

09/25 20:24, , 47F
看起來這授權請複雜的,小弟我的儲存用DRBD+ISCSI來做HA
09/25 20:24, 47F

09/25 20:25, , 48F
Hypervisior用xenserver 6.2 免授權支援HA
09/25 20:25, 48F

09/26 21:54, , 49F
Hyper-V Server 2012 R2 也是全功能免授權
09/26 21:54, 49F

09/26 21:55, , 50F
授權問題不在 Hypervisior 上
09/26 21:55, 50F
文章代碼(AID): #1K7-sEln (MIS)
文章代碼(AID): #1K7-sEln (MIS)