Hyper-v手动合并AVHD快照文件至VHD

今天公司有台 Hyper-V 主机无预警的挂了,就这个刚好公司开发用的数据库正好安装在那壹台,为了让大家能够继续工作,必须尽速将 VM 移至另一台 Hyper-V 服务器,但是 VM 的设定都没有汇出,所以无法完整的汇入另一台 Hyper-V,因为原本的 VM 建立了许多快照(Snapshots),所以光是将 VHD 档复制过去是没用的,这跟 Hyper-V 的 Snapshots 的运作机制有关。

首先,我尝试了好几个小时把 VHD 档复制到另一台 Hyper-V 服务器,并手动新增虚拟机上去,这才发现所有数据库是三个月前的版本,这怎么能接受,所以花了好些时间研究到底要如何才能复原虚拟机制到最新版,有时后人太铁齿就会浪费许多宝贵的时间,我也不例外,尝试了好久之后才愿意认真去学 Hyper-V 的 Snapshots 运作机制,这才发现一个非常宝贵的知识:Hyper-V 的 Snapshots 的运作完全跟差异磁盘的运作机制一模一样!

假设我们的虚拟机有一颗虚拟硬盘(VHD),当你建立了第一个快照后,这个快照就会自动变成一颗差异磁盘,并且扩展名为 *.avhd,事实上 *.avhd 就是 VHD 格式的硬盘。而且原本的 *.vhd 硬盘就会变成这颗 *.avhd 快照磁盘的父磁盘(parent disk)。

了解差异磁盘原理的人就知道,当你产生差异磁盘并使用过后,父磁盘是不能被变更的,只要一变动父磁盘的内容,所有继承于这颗父磁盘的差异磁盘将完全失效!

目前为止,我并不知道如何完整复原 Snapshots 的状态回 Hyper-V,但是我学会了如何手动将虚拟机的虚拟硬盘回复到最新的一份快照 (或任何一份快照的版本),以下是我的还原计划与策略:

环境说明

  • 壹台虚拟机(需重建)

  • 壹个原始的虚拟硬盘 (*.vhd)

  • 已有两个快照集 (Snapshots)

还原目标

  • 复原虚拟硬盘至最近、最新的版本

还原策略 (1):透过合并磁盘功能将多个磁盘合并成壹个唯一磁盘 (较耗时的方法)

1. 先选取最新的快照磁盘文件 (*.avhd),并透过
编辑磁盘
工具进行合并磁盘动作,合并至父磁盘

修改原本 *.avhd 的扩展名为 *.vhd

从 Hyper-V 管理员点选 [编辑磁盘] / [Edit Disk] 动作

选取刚刚更名的快照磁盘

选择 [Merge] 选项

合并变更至父磁盘

2. 再选取刚刚被合并的父磁盘 (*.avhd),并透过编辑磁盘工具进行合并磁盘动作再合并至它的父磁盘,此时这个快照磁盘的父磁盘就是当初建立虚拟机原本的虚拟磁盘

3. 重新建立新的虚拟机,并指派最后被合并的那个虚拟磁盘,大功告成!

https://bbs.51cto.com/thread-1494182-1.html

(0)

相关推荐