差异磁盘的最佳实践:VHD母盘制作

如何抓取优质的母盘向来都是做测试环境需要重视的问题,因为文件体积即决定了以后的虚拟机效率。那么什么是优质的母盘呢?我暂时先不回答这个问题,我们先来看一下差异磁盘的特点:

差异 VHD 与动态扩展 VHD 类似,但只包含所关联父 VHD 的修改后的磁盘块。由于父 VHD 为只读,因此必须修改差异 VHD。差异 VHD 有时也称为“子”VHD。父 VHD 可以是这三种 VHD 文件类型中的任意一种,包括另一差异 VHD。多个差异 VHD 可形成一个差异链。请注意差异 VHD 的要求如下:

  • 不应修改差异 VHD 的父 VHD。如果父 VHD 发生更改或由其他 VHD 替换(即使具有相同的文件名),则父 VHD 和差异 VHD 之间的块结构将不再匹配,并且差异 VHD 也会被损坏。
  • 必须将本地卷上相同目录中的两个文件(父 VHD 和差异 VHD)同时用于本机启动方案。对于本机启动 VHD,父 VHD 和差异磁盘不能位于不同的卷上,即使它们位于相同的本地磁盘。但是,在附加不用于本机启动的差异 VHD 时(例如,如果计划将其用于映像管理),父 VHD 可以在不同的目录和卷中,甚至可以在远程共享上。

在了解差异磁盘特性后,我们还需要知道动态VHD文件的特殊性:

动态VHD文件的体积会因为文件和磁盘改动而增加,但是删除文件却不会减小VHD文件体积,也就是说动态VHD磁盘的体积只会增长不会缩小。所以,这里我们就需要认识到,差异VHD所关联父VHD的内容和体积都非常重要。写这篇文章的目的就是想进行一个差异磁盘VHD母盘制作的最佳实践,下面我们就正式开始制作流程。

这里,我们先来看一下整个的制作流程:

  1. 使用08 R2 的Hyper-V管理器创建一个虚拟机;
  2. 为虚拟机创建一个动态VHD磁盘;
  3. 完成虚拟机的安装,安装常用的软件、补丁等;
  4. 使用cleanmgr执行虚拟机的文件清理操作,删除临时文件、升级残留文件等;
  5. 使用磁盘工具进行磁盘碎片整理;
  6. 执行sysprep进行虚拟机系统清理操作,清理系统SID等;
  7. 关机并对VHD进行压缩清理,制作完成。

那么我们先从第一步开始,创建一个虚拟机,为其分配内存即可:

由于是制作母盘,我们并不也需要为其分配网络,直接跳过到第二步为虚拟机创建一个动态VHD磁盘:

这里我们分配的大小是指动态VHD磁盘的最大体积,考虑到以后还要使用差异磁盘,这里设置一个相对合适的大小即可。

创建虚拟机的其他步骤就不再叙述,这里简单说一下为什么要使用动态VHD磁盘。因为固态VHD磁盘将直接填充指定的VHD文件大小,而我们做测试环境需要的是资源最优化,即磁盘空间的最佳利用。虽然动态磁盘会根据内容进行填充从而增大体积,但考虑到以后我们会使用差异磁盘,也会将动态VHD磁盘固定,不再修改。所以,动态VHD磁盘相比固态VHD磁盘更加灵活,更适用于我们的测试环境。

另外,如果是08 R2 SP1,可以为虚拟机进行动态内存的分配,这样可获得更好的虚拟机性能和更灵活直观的内存需求收集。

装好系统后,我们为其安装常用的软件,如WinRAR、.NET Framework 3.5.1、Silverlight以及安装需要的KB补丁。

完成补丁及常用软件的安装后,我们就可以进行磁盘清理了。这时候可能我们会发现08 R2中默认并没有磁盘清理工具,我们需要在系统分区中来找到该工具。如果觉得比较麻烦,也可以直接跳过此步骤。这里主要讲一下磁盘清理工具的高级用法,在安装好桌面体验功能后我们使用管理员身份运行命令提示符,并在其中键入:cleanmgr /sageset:n来使用增强的清理模式,这里我们就使用 cleanmgr /sageset:1

我们可以发现,增强的清理模式,相比Windows客户端系统中的磁盘清理拥有更多的清理选项,更适用于我们的环境。在全选清理选项后单击"确定"按钮会保存清理设置为1,这时我们再次在命令提示符中执行cleanmgr /sagerun:1来使用配置1进行磁盘清理。

完成磁盘清理后我们需要进一步的进行磁盘碎片整理,别以为刚安装完成的虚拟机就没有碎片,这往往是非常容易忽视的。通过实验得出,在使用碎片整理后我们最后得到的VHD文件会比不使用碎片整理的VHD文件体积大。所以我们需要在虚拟机中运行碎片整理工具,根据磁盘情况一般进行一次或两次碎片整理即可:

完成以上步骤后,我们就可以使用sysprep工具来准备我们的系统了,在开始菜单单击“运行”并在其中输入“sysprep”敲击回车键:(或使用【Windows徽标键+R】)

并使用管理员身份运行文件夹中的sysprep文件,并选择进入系统全新体验(OOBE)和通用选项、关机选项为关机。

这里简单的讲一下什么是进入系统全新体验(OOBE)和通用。使用通用选项,Sysprep 可以从 Windows 安装中删除系统特定的数据,系统特定的信息包括事件日志、唯一安全 ID (SID) 和其他唯一性信息,以及包括驱动程序等。使用OOBE选项,Windows 安装可以在下次启动计算机时运行“欢迎使用 Windows”,就如同我们第一次安装好Windows一样。 单击确定即可开始准备系统了。

如果Sysprep出现“Sysprep无法验证你的Windows安装。请查看…”错误,可尝试停止WMPNetworkSvc(Windows Media Player Network Sharing Service)服务,或者用Administrator登陆并删除其他帐户。

▲ Sysprep错误(一)

▲ Sysprep错误(二)

在等待几分钟后,sysprep准备完毕后会将虚拟机关掉,这时我们进行最后一个步骤,那就是压缩VHD文件。我们先来看一下未经过压缩的VHD文件:

查看好尺寸后,我们单击“编辑”并选择压缩选项单击下一步

我们再来看一下压缩好的VHD文件:

至此,我们的VHD母盘制作就已经完成,可以看到此体积对于测试环境来说还是非常满意的。如果对驱动进行精简,效果会更好。在创建完VHD母盘后,我们就可以创建测试环境的虚拟机了,并且在创建硬盘时我们选择差异磁盘,并指定我们创建好的母盘VHD为父磁盘。

制作好的VHD母盘一定不能进行任何的修改,否则所有的差异磁盘都将出现异常无法正常工作,所以一旦基于母盘创建了差异磁盘母盘就不能移动,在创建之初就需要进行认真的考虑和确认。

作者: Hugh

Welcome to Wan's world~