VMware系列:全站最完整的关于VMDK快照原理、备份和恢复(包括手动恢复)教程以及【win7-win11多系统VHD和VHDX安装简单攻略】




一. 全站最完整的关于VMDK快照原理、备份和恢复(包括手动恢复)教程

1. 简介

我们很多人都在使用虚拟机,最常用的虚拟机软件当然是VMWARE公司的Vmware Workstation Pro,当然VMWARE公司还有很多虚拟机软件如ESXI之类的。

今天我们就来讲讲VMDK虚拟磁盘镜像文件,我们在使用Vmware Workstation Pro创建新的虚拟机时,都会创建一个VMDK的磁盘镜像文件,我们可以把它称作母镜像文件,当我们需要保存一个系统状态,以便快速恢复到这个系统状态时,我们可以建立一个快照文件,它是从之前的母镜像文件中分割出的新的子镜像文件,而之前的母镜像可以理解为已只读化了,从建立快照后,系统所有的更改都会写入到子镜像文件。同理,我们再次建立的孙镜像后,这个子镜像也锁定住,不再写入更改,直到我们重新恢复到子镜像快照时为止。

至于VM虚拟机快照中的另一个功能,就是克隆,它可以把当前系统所在的镜像打包成一个单独的镜像,它与快照最大的区别在于,克隆生成的镜像,可以当成一个母镜像直接使用,是脱离开之前的所有快照镜像的。

2. 问题

而我们建立的所有快照镜像是一个也不能删除的,不能单独使用。

我们在重装物理机系统后,在安装好VM软件后,有时可能VMX配置文件坏了,或者因为硬盘的盘符和重装系统前不一样了,可能会碰到读取不了VMDK镜像文件的问题。

其实就是系统找不到之前的VMDK路径了,因为每个VMDK文件头都有一些对每个镜像的描述信息,如它自己的磁盘ID,它的父磁盘对象ID,它的路径信息,我们可以把VMDK快照想象成一个链表,每次创建快照都会建立下一个子链表,而有时我们会删除不需要的VMDK快照,这些都会写入相关的VMDK文件头,甚至因为删除,导致VMDK名称后缀的0001,0002之类的序列也会打乱,比如有vm.vmdk(母镜像-起始点),vm-0001.vmdk(快照1),vm-0002.vmdk(快照2),vm-0003.vmdk(快照3),vm-0004.vmdk(当前点),当删除了快照2后,也就是把vm-0002.vmdk删除了,也就剩下了vm.vmdk(母镜像-起始点),vm-0001.vmdk(快照1),vm-0003.vmdk(快照3),vm-0004.vmdk(当前点),如果这时把当前点转到快照1,其实当前点并不会变成vm-0001.vmdk(快照1),而是可能会变成vm-0002.vmdk(当前点),再新建一个新的快照反而会移动到序号的空白处,也就是vm.vmdk(母镜像-起始点),vm-0001.vmdk(快照1),vm-0002.vmdk(当前点),vm-0003.vmdk(快照3),vm-0004.vmdk(最后建立的快照)。

以上我只是打个比方,实际快照建立多了会更复杂,而且时间长了只能通过系统的快照对话框或vmware-vmx.exe读取vmx来读取快照的关系,甚至更严重情况是vmx文件损坏时,所建立的快照关系都不能看到了,有人这种机会很少,但是我自己就经历过这种事,因为硬盘出问题导致正好vmx文件损坏,虚拟机配置都打不开了,这时怎么解决问题?

3. 解决方法

当时参考了很多网站的教程,甚至是VM官网的论坛和教程,关键点有几个,在这告诉
大家下:

1.建立快照一定要在关机模式下,而不是开着虚拟机建立快照。

这点很关键,挂起快照只是把系统的更改放到vmem或者vmss这样的文件中去,并不是保存到vmdk中,所以要建立快照一定要关机,你会发现关机后建立快照是一瞬间就完成了,因为关机后vmdk才能得到保存(虚拟机文件目录,在虚拟机开机时会出现win7.lck、win7-0001.lck这样的结尾文件夹,我估计就是虚拟机开机在读取写入vmdk分卷信息的临时文件夹,这些文件夹,在下面的恢复工具手动恢复也会出现,除了ghost这个工具),建立快照的操作只是分出一个新的空白卷而已。

2.如果你现在有很多快照,但是都是没有关机时建立的,那么还有解决方法.

就是先转到这些快照,然后开启虚拟机,然后再老老实实的关机,然后在快照下的当前点直接建立一个新快照,然后把老的没关机的快照删除,保留新快照即可。

3.如果你做对了上面两步

那么把当前虚拟机目录里的所有vmdk文件都复制出到一个新文件夹,因为我们要恢复数据,所以所有的操作都不能影响到原数据,这是恢复计算机数据的基本常识。

4.在恢复vmdk之前,我们需要搞懂他们之前的对应关系

没有找到现成的读取vmdk分卷之间关系的工具,就自己做了个轮子(csdn链接:https://download.csdn.net/download/weixin_54626591/88609697)(github链接:https://github.com/donglxd/ReadVmdkFile/tree/main)

在这里插入图片描述

在这里插入图片描述

5.因为要恢复数据,

最简单的就是使用一些打包工具把这些vmdk分卷都压到一起,也就是之前提到的克隆,首先要确定需要恢复到那个VMDK分卷快照节点,这可以用上面我编写的程序,然后可以使用下面3种方法:

a. vmware-vdiskmanager.exe工具:

为vm自带的处理分卷的工具,功能相当强大,甚至可以通过读取vmx文件来读取vmdk分卷间的关系,可以参看它的命令行帮助,在Vmware Workstation Pro的安装目录里能找到,直接在cmd命令提示符中输入命令使用,可以使用如下代码克隆分卷:

#进入VM软件的安装路径
cd E:\Program Files\VMware Workstation
#克隆需要的快照分卷(win7_00001.vmdk)为新的母镜像(win7_out_new.vmdk)
vmware-vdiskmanager.exe -r "D:/Vdisk/win7_00001.vmdk" -t 0 "D:/win7_out_new.vmdk"
b. 著名的备份软件ghost也可以克隆分卷:
#先把C:\VMDK\WIN7-0001.vmdk的VMDK分卷转换成GHO的ghost文件.
ghost32 -clone,mode=create,src="C:\VMDK\WIN7-0001.vmdk",dst="C:\myimage.gho" -batch -sure
#把克隆好的ghost文件(myimage.gho)转换成WIN7_out.vmdk(母镜像)
ghost32 -clone,mode=restore,src="C:\myimage.gho",dst="C:\VMDK\WIN7_out.vmdk" -batch –sure
c. Linux上有qemu-utils,命令如下:
#安装qemu-utils
sudo apt-get update
sudo apt-get install qemu-utils
#克隆VMDK分卷(/home/kali/Downloads/Windows 7.vmdk为需要克隆的快照VMDK文件,/home/kali/Downloads/out_old.vmdk为输出母镜像)
qemu-img convert -f vmdk -O vmdk "/home/kali/Downloads/Windows 7.vmdk" "/home/kali/Downloads/out_old.vmdk"

4. 总结

关于虚拟机文件的压缩技巧,当你只有一个母镜像时,你点击虚拟机设置中的清理虚拟磁盘,可以很方便的清理完成,但是如果你有很多vmdk快照那,就不好用了,你会发现,不管你怎么清理,甚至转到之前的快照再清理都不行,原来快照里占用的大量空间并不能删除掉,这是因为之前说的打了新快照,之前的所有数据都会封存在上一个当前点快照里,这个问题暂时我也没什么好办法,除了用上面的方法克隆你想要的快照。一个重要点,请大家在关机快照前,先清理当前的虚拟磁盘,然后再打快照。




二. win7-win11多系统VHD和VHDX安装简单攻略

用VHD和VHDX虚拟磁盘安装win7、win8、win10、win11是现在必备的安装系统技术。

1. 简介

它的优点是能像VM之类的虚拟机建立快照,随时快速恢复到快照的节点,缺点就是有点占用磁盘空间(因为使用的当前快照是百分百占用的,比如你建立一个win7.VHD磁盘文件,建立时设置成15g、动态大小,那么安装win7系统后,系统占用8G,这时你去看这个win7.VHD大小是15G。然后我们建立一个win7.vhd的分隔快照,那么进入新的win7_child.vhd磁盘启动系统后,那么win7.vhd从15G变成了实际大小8G,而win7_child.vhd则有15G,相当于母盘8G+子盘15G,一下用掉24G),但是对于现在这么便宜的固态存储来说,快照大小可以忽略不计。

总的来说,如果你经常折腾系统、测试软件等等破坏系统稳定的事,你可以试试使用vhd安装系统,另外如果你是电脑小白,建议你找个会VHD安装的高手安装,因为安装相当麻烦,但是如果安装上了,简直是3秒一键还原,非常的便捷,不是以前的那种ghost能比的速度.

2. 安装

至于安装,网上教程一大把,但是都说的比较复杂,我来提个提纲:

  1. 首先有没有PE都无所谓,也不需要输入CMD命令行,window自带的磁盘管理工具就可以建立VHD、VHDX,可以把VHD看成一个文件,里面保存着虚拟磁盘.建立Vhd时有个保存vhd文件的路径要记下,之后生成分割子镜像有用.

  2. VHDX不支持win7,但是win8-win11都支持,VHD支持所有,但是没VHDX可以设置最大的容量大,所以win7以上直接新格式VHDX即可.

  3. 建立好VHD磁盘不要忘了初始化,右击磁盘工具的硬盘列表里的那个VHD名称,不是右边的"长条",是左边的短的名称列,然后右击"长条"可以新建卷,然后随意格式化分配盘符(记住分配的盘符号比如F).

  4. 下载系统ISO镜像(itellyou)系统按你喜欢的来,可以点主页下面的图片进入新的主页,里面有win10-win11最新镜像.

  5. 右击ISO镜像文件,加载ISO为光盘分区(到我的电脑里看看盘符比如G)

  6. 用WinNtsetup工具,第一行选择ISO分区(比如之前的G盘)中的sourse目录下的install.wim,第二行你可以选择你当前的引导盘c盘,这样比较好生成多系统bsd引导菜单.第三行当然选择vhd的盘符(比如之前的F盘),然后可以选择下window的版本比如旗舰版,请安提示操作选择,因为有些版本并不能安装在vhd虚拟磁盘上,比如win7只能专业版和旗舰版才行.

  7. 注意WinNtsetup在部署前,最好勾选下底下的挂载系统为c盘的勾,不然安装好系统后,系统盘可能不是c盘.

  8. 部署完成后重启系统,进入正式安装window.

  9. 进入安装后的系统后,把必要的软件装一装,这个随意,也可以空白新系统.

  10. 下载VHD/VHDX辅助工具,选分割选项卡,把母VHD的路径选择下,就是你建立VHD时保存VHD的路径,子路径是自动生成的.关键点来了,点击最下面的下拉选择框,选择第二个选项,就是建立子镜像和还原引导的选项,接着确认,会让你输入一键还原时的保护密码,选一个你自己的常用记得住的密码,也可以空密码,直接确认2遍即可.

  11. 这样子镜像和一键还原的启动菜单就做好了,因为除了新加的两个启动菜单,还有原来安装系统时的母镜像菜单要删除,所以,接下来,用bootice之类的启动项编辑工具把母镜像菜单删除,选择bootice第三个选项卡"BCD编辑器",点下面"…"的按钮,找到引导分区(本例C盘)之下的boot目录下的boot文件,打开后,把第一个项删除,然后你可以把需要的那个启动菜单改个名字,每改一个,就点右边的当前保存,最后点左边的全局保存,即可。

  12. 至此,VHD系统和一键还原都安装成功了,如果想在子镜像的基础上追加备份,先用就用同样的方法,用VHD辅助工具分割下当前使用的子镜像,分出一个孙镜像和一键还原,最后把原来的子镜像和子镜像的一键还原启动菜单删除,只保留孙镜像和孙镜像的一键还原即可。我们可以很简单的把一个镜像和它的启动菜单、一键还原菜单删除来删除安装的系统,而完全不影响原系统,甚至都不物理分区。

    ps:备注自己安装win7碰到的坑,如果你的vhd文件存放的分区比较小,请不要隐藏你的引导分区(我把vhd就放在这个分区),因为这样会导致每次开机都弹出对话框让你设置虚拟内存,但是却无论怎么设置也不成功的情况,望大家注意,本文下班路上手打,详细的菜单名称可能不对,望谅解。










donglxd

全站最完整的关于VMDK快照原理、备份和恢复(包括手动恢复)教程

win7-win11多系统VHD和VHDX安装简单攻略

posted @ 2024-07-21 12:03  坦笑&&life  阅读(592)  评论(0)    收藏  举报  来源