34 VHD系统备份及问题深入探究

VHD系统备份及问题深入探究

最近有网友提问有关VHD系统使用的后续问题,包括子VHD备份,父VHD替换等.笔者认为有必要进行统一的说明.

声明:本文所有的方法都是笔者自己想的,或许会有考虑不周,但是笔者已经尽了最大努力.如果你能想到更好的解决方案,欢迎在评论区里留言.

我们的系统初始配置如下:

C盘:25GB

D盘:35GB

D盘内:一个父VHD文件:win10.vhdx;两个子VHD文件:win10son1.vhdx,win10son2.vhdx.

C盘内:一个子VHD文件:win10son3.vhdx

BCD配置无误,BCD文件内容列表包括:

  • win10father

  • win10son1

  • win10son2

  • win10son3

    问题如下:

1.在使用了一段时间的差分子VHD系统后,担心有一天子VHD报废了,里面的文件全部丢失.希望能有一些可靠的备份方法.
2.子VHD和父VHD是否可以在两个盘里?
3.我的VHD父子链断裂了,怎么办?

可能的解决方案:

1.在使用了一段时间的差分子VHD系统后,担心有一天子VHD报废了,里面的文件全部丢失.希望能有一些可靠的备份方法.

(1)首先,传统的系统备份方法可以达到这一目的.在VHD子系统里,使用Dism++进行系统备份,即可把当前的整个系统环境备份下来.

此外,如果父VHD在此前有过wim备份的话,在备份子VHD的时候,可以在wim文件的保存路径里面选择父VHD的wim包,创建增量备份.增量备份仅仅会备份两次系统备份之间的差异文件,并不进行重复文件备份.在系统还原的时候,可以使用winntsetup或Dism++在这个wim包里选择需要还原的那个系统版本.

(2)第二种方法,即父子VHD合并.我们需要在PE系统里进行操作.父子文件合并后,可以达到父VHD和与其合并的子VHD两个系统里面文件都相同的效果.在用户层面看,也就是父VHD变成了子VHD,父子融合.

操作方法:

1)打开bootice.exe

2)点击 磁盘镜像

3)点击 差分VHD

4)选择 父文件位置,第二个子文件位置不用选,最下面的 子文件位置 选择你想要合并的子文件.

5)选择合并深度.合并深度是指子VHD与父VHD的层级关系.通俗的说,如果子VHD是父亲的亲儿子,那么合并深度就是1.如果是爷爷和孙子的关系,合并深度是2.爷爷和曾孙子,合并深度是3.

合并深度并不能无限增大,合并深度越大,两个系统之间的差异越大,可能会导致合并后的系统不稳定或者无法运行.所以,bootice这个软件仅支持最大合并深度为3.

34合并vhd.png

合并父子VHD文件后,父VHD在保持自身数据不变的情况下,就拥有了子VHD的所有数据.

看似这是一种备份子VHD系统的好方法.然而,这种备份方法有着一些潜在的问题.

首先,我们需要保证操作任何VHD文件的时候,VHD文件没有被挂载.也就是说,文件资源管理器里不能有这个VHD虚拟出来的磁盘.如果有,一定提前把他们弹出.否则,极有可能导致一系列问题,比如差分失败,父子链断裂,合并失败,差分链修复失败.

其次,也是很重要的一点,上面所介绍的那种方法会导致除了合并的两个父子VHD以外的所有子VHD失效.笔者认为,这也是不推荐合并父子VHD的一个重要原因.具体的情境理解,就是如果我把win10.vhdx和win10son1.vhdx合并了,会导致win10son2这个子系统与他的父VHD链断裂,导致win10son2无法启动.

这也是能够接受的,毕竟父VHD被修改了.我曾经说过,一旦创建了父VHD的差分子系统,父VHD是连开机运行都不可以的.一点点微小的父VHD变化都会导致差分链断裂.

所以,我们有没有什么方法能够避免差分链断裂问题呢?

我们分析可以发现,一个爸爸的改变会导致一群儿子无法启动.那么,如果是一群爸爸和一群儿子呢?

仍然使用我们的系统初始环境配置讨论.

一个爸爸:win10.vhdx,两个儿子:win10son1,win10son2.

现在爸爸和win10son1合并了,然后win10son2失效了.

我们能不能在win10son2失效之前做些什么呢?

答案呼之欲出.

我们在合并爸爸和win10son1之前,复制粘贴一个爸爸的副本,起名为win10a.vhdx,然后再把爸爸和win10son1合并.

然后把这个复制的爸爸名字改回去,把win10a.vhdx的名字改为win10.vhdx.

如此操作,win10son2与父VHD的差分链并没有断裂.

然而,这个方法有两个问题:

1)由于复制粘贴操作,我们产生了两个大体积父VHD.占用了两份磁盘空间.这与我们安装VHD系统的初衷背道而驰.

2)由于父VHD与子VHD必须在同一个分区里,而且他们之间的相对位置不能发生变化,所以,上面的操作势必会在同一目录下产生两个文件名相同的win10.vhdx.这显然是不行的.笔者考虑的最优方法是把合并后的那个VHD重命名,然后修改它的BCD文件来使它可启动.

对于这两个问题,笔者确实没有想到好的解决方法,只能先写在这里.希望评论区里的大佬们可以发表你们的真知灼见,帮助我们渡过难关.

(3)第三个方法是直接备份子VHD文件,把他们复制到安全的地方,或者上传至网盘.只要父VHD存在,就可以在子VHD文件损坏的时候用这个备份替换损坏的子VHD.

笔者仍然推荐使用Dism++的系统备份功能,毕竟做完一次备份后,增量备份还是很快的.


2.子VHD和父VHD是否可以在两个盘里?

不可以.

经过测试,笔者将子VHD(win10son3)和父VHD放在两个盘里,并未启动成功.在网络里并未搜索到原因.然而向chatgpt4.0提问后,chatgpt回答二者可以放在不同的分区里.询问操作时,chatgpt给出的操作与笔者的无异.

实验时,笔者向BCD菜单里添加了子VHD的启动项,然而无论如何这个启动项都不能在Windows启动管理器里显示出来.按下Esc后,弹出错误提示:引导数据配置存储中存在无效的对象.

这是BCD编辑的win10son3配置:

34win10son3.png

34win10son3无效.png

34win10son3报错.png

目前笔者并不清楚其中的机制,还望评论区的各位大佬总结科普❤ :)


3.我的VHD父子链断裂了,怎么办?

使用bootice可以修复损坏的差分链.打开bootice,点击磁盘镜像->VHD文件信息,选择失效的子VHD,然后选择父文件,即可恢复VHD父子链.

34修复差分链.png

本文由博客一文多发平台 OpenWrite 发布!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我用Vboot工具安装VHD XP的方法(过期就会0x0000012f蓝屏) 经过好多次的蓝屏和无显示等各种故障,现在成功了。 一法: 1、运行“WinXP VHD 辅助处理工具 2011 【11-02-22最后更新】”,替换C:\vboot_temp以下文件: ①: VBOOT.IMG(I386下已换无时间限制的VBOOTDSK.SYS,若有$oem$/textmode/VBOOTDSK.SYS也要换没有不管) ②: floppies\vboot-img\i386\VBOOTDSK.SYS ③: tools\x86\drivers\vbootdsk\VBOOTDSK.SYS 若不换会0x0000012f蓝屏的。 2、选安装版XPISO文件或者NTFS格式的GHOST XP。重启。 我的笔记本这样装成功了。 台式机BIOS改SATA Mode为combiled,没有IDE选项,启动找不到硬盘,改其它都不行。只有用下面的方法了。 二法: 1、如以前安装GHOST XP一样,启动运行GHOST在实机C盘上安装,把所有驱动、设置、自己要用的程序装完。若安装版XP一样,不忘了NTFS格式。 2、重启运行GHOST备份C盘到其它盘WINXP.GHO。 3、重启进入C盘装好的XP,运行WinXP VHD辅助处理工具,如最上面第一步。 4、重启选VHD XP进入Vboot菜单选第一项继续安装,这样不会有各种故障了。 5、后面的都知道的,实C盘上XP可以不要了,须留下boot.ini、bootfont.bin、NTDETECT.COM、ntldr、vbootldr、vbootldr.mbr、WINXP.VHD文件及vboot文件夹。 没办法,我的台式机只能用第二种方法成功,并且我安装上了5个网上下载的XP,编辑grub.cfg文件(不能有中文)出现了5个XP菜单,选择启动想用哪个都可以。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值