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

楼主: Dino9021 (Dino9021)   2014-09-22 17:36:11
因为一些缘故, 有一座 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
   所以目前并不打算进行这方面的研究
作者: elianfun (蓝风)   2014-09-22 21:45:00
推用心分享
作者: lalelee (Yes We Can !)   2014-09-23 11:51:00
很实用!
作者: coflame (吾养吾浩然之气)   2014-09-23 23:48:00
楼主: Dino9021 (Dino9021)   2014-09-24 11:08:00
更新加入备份档案检查机制(档案大小、最后修改时间)还原时会检查备份历史中每个档案上述资讯以确保完整
作者: djpcsixth (排骨麵)   2014-09-24 19:35:00
作者: epenpal (.....)   2014-09-24 22:50:00
标准版2个vm授权、datacenter不计vm授权吧? .
楼主: Dino9021 (Dino9021)   2014-09-24 22:56:00
但是如果要 Replica 到另一台上去, 另一台也要有授权啊而且微软说,管你有没有开机,在 Manager 里面就要算数量所以也不能 Replica 到另一台 Standard 上当备份
作者: epenpal (.....)   2014-09-24 23:20:00
是原厂说的吗? 还是代理商?. 因为replica 的话、另一台一定是关机状态、这样怎么会算两套.
楼主: Dino9021 (Dino9021)   2014-09-25 06:57:00
微软原厂业务讲的,他说即使是关机状态都要算我说那我如果没有汇入 VM Manager 呢,他说那就不算,但是只要有VM Manager 的都要算为此我跟他们折腾了几个礼拜,还要来原厂授权文件看,不过全英文页数又超多后来懒得看,就信他了微软一位这样跟我说:不好意思,因为关机状态不需要授权只发生在Azure上,所以有误会。就Windows Server而言,没有关机状态就不需要授权这件事情,只要安装就需要授权,不管是备援或是复写。回我的这位是业务搞不定我的时候去搬来的救兵要计算的是这台实体机器上面”最多”可能跑多少VM,包含灾难发生的时候你可能要把机器fail-over的情境,这是为什么我说在备援或是复写的时候,因为这台机器可能会被开启,所以需要考量他的授权。如果你能够提供说为什么要把机器关机放在Hyper-V上的原因,我们可以讨论一下这样的情境下会需要什么授权。之后他们就不理我了,因为我是个人询问他们说没办法一直回答我假设性的问题,其实我没有假设啊,根本就是大家实际上会发生的啊 XD
作者: epenpal (.....)   2014-09-25 08:36:00
再怎么算datacenter就是不算window server的执行个体数两个CPU的限制刚google了一下、说要有SA才有cold disaster recovery不用对replica复本额外买授权.
楼主: Dino9021 (Dino9021)   2014-09-25 15:42:00
问题你还是只有一座 Datacenter 啊你要 Replica 到另一台去, 另一台还是要有授权啊而且如果 Replica 到另一台很多台的话还是要买多套 Standard 或一套 Datacenter你查到的资料可以分享一下一起研究吗?反正你要装两个实体 Datacenter 就要买两套没办法买两套就不能做 Replica, 就可以用我这个替代方案第二套实体如果授权数不够也不能 Replica当然如果无视授权当然一点问题都没有有要符合授权就不能超出授权范围,Replica的VM也要算进去
作者: xxoo1122 (一个连IE6都能相容的男人)   2014-09-25 20:24:00
看起来这授权请复杂的,小弟我的储存用DRBD+ISCSI来做HAHypervisior用xenserver 6.2 免授权支援HA
楼主: Dino9021 (Dino9021)   2014-09-26 21:54:00
Hyper-V Server 2012 R2 也是全功能免授权授权问题不在 Hypervisior 上

Links booklink

Contact Us: admin [ a t ] ucptt.com