深入认识VHD
2009-09-14流水
流 水
新的操作系统Windows 7将原生态支持VHD文件。那么,什么是VHD文件?它将给我们带来什么便利呢?本文将针对这些问题进行比较详细的讨论。
并不陌生的VHD
别以为VHD来自火星,早在几年前,它就闯入我们的视野了。使用VPC就免不了与它打交道,用过Vista的也一定见过VHD。
用VPC创建VHD
其实,VHD文件并不陌生,VPC也能创建VHD文件,而VPC的元老版本可追溯到2003年。
VPC即PMicrosoft VirtualPC,该软件的元老级版出现于2003年,是微软出品的一款免费虚拟电脑软件。比如,让它在Windows XP(称之为宿主)下运行,可创建出多台虚拟电脑。操作虚拟电脑的方法与真实电脑类似。可启动或关闭、进行BIOS设置、硬盘分区(当然是虚拟的),然后在虚拟电脑上安装操作系统或应用软件。虚拟电脑主要用于教学培训、测试新操作系统或软件。
比如用VPC创建一个名为VXP的虚拟电脑。那么,可在虚拟电脑的保存位置查看到名为VXP Hard Disk,vhd的文件。
在宿主机下,观察到的虚拟电脑是一个VHD文件,但在虚拟电脑中,它却是虚拟的硬盘或分区,在虚拟的分区上可安装操作系统或应用软件。
用Vista创建VHD
在Vista(Windows 7也行)下,依次打开“控制面板”|“系统和安全”|“备份和还原”|“创建系统映像”,可将一个分区进行备份,同样能生成VHD文件。
在Vista(Windows 7也行)下,观察到的仍然是VHD文件,但还原后就是一个分区下的所有文件。
总结起来,VHD文件可虚拟为硬盘或分区,而虚拟的硬盘或分区中可安装操作系统或存放其它文件。
Windows 7对VHD的原生态支持
在Windows 7下可很方便地创建VHD,也可将VHD加载为虚拟硬盘,当然也可将虚拟硬盘卸载而还原为VHD,它们之间的变化也是双向的。这些操作可在磁盘管理器下进行,也可通过命令提示符来完成。本节,我们将重点介绍前一方法,后一方法请参考本文的虚拟安装Windows 7部分。
创建VItD
第1步:在开始菜单下右击“计算机”,选择“管理”|“磁盘管理”。接着,从打开的窗口中单击“操作”下的“创建VHD”,创建向导即可自动运行。
第2步:单击“浏览”,指定VHD文件的存放位置及文件名。接着,在“虚拟硬盘大小”后指定VHD文件的大小。然后,在“虚拟硬盘格式”下选择“动态扩展”或“固定大小”,最后单击“确定”即可。完成后可在我们前面指定的位置观察到VHD文件。
小提示:后面,我们还要将VHD文件虚拟为硬盘,可用虚拟硬盘来存放文件,选择“动态扩展”后,VHD文件的大小由虚拟硬盘中存放的文件大小决定;如果选择“固定大小”,那么,不管是否向虚拟硬拷贝了文件,也不管拷贝到多少,VHD文件的大小都将保持不变,但要注意的是,不管选择哪种格式,虚拟硬盘中能存放的文件都不能超过指定的大小。
将VHD虚拟为硬盘
通常,我们也称这一过程为将VHD文件虚拟为硬盘。
在磁盘管理器下,单击“操作”|“附加VHD”,再找到已创建的VH D文件即可。为保证加载后的虚拟硬盘能安装系统或存放其它文件,请不要在加载过程中勾选“只读”。完成后,可在硬盘管理器下观察到,如图l所示,其中,磁盘3、磁盘4都是通过VH D虚拟而得。要注意的是,硬盘4上标有“没有初始化”、“未分配”字样,不能在“计算机”(相当于WindowsXP中“我的电脑”)下观察到。对比来看,硬盘3已初始化,可在“计算机”下观察到,而且,从图1还可看出,磁盘3下有多个分区,而且Windows 7已为它们分配了分区的盘符,比如J、K等。
初始化虚拟硬盘
虚拟硬盘必须经过初始化才能使用,就像将普通硬盘的数据线、电源线连接到电脑的主板一样。
右击状态显示为“没有初始化”的磁盘,选择“初始化磁盘”,再在下一步中选择“MBR(主引导记录)”并单击“确定”。完成后,虚拟磁盘的状态信息将自动显示为“联机”。
对虚拟磁盘进行分区
右击要进行分区的虚拟磁盘,选择“创建简单卷”并单击“下一步”,分区向导会提示我们输入分区的大小,默认值为VHD文件的最大值。如果选择此值,虚拟磁盘只能分为一个分区。如果手动指定大小,还可将虚拟磁盘分为多分区。在整个过程中,向导还会提示我们是否对新建的分区进行格式化操作,格式化完成后,可在磁盘管理器下看到系统自动为每一分区分配的盘符。同时,打开“计算机”,即可像操作普通硬盘一样操作虚拟的分区了。卸载虚拟磁盘
右击虚拟磁盘,选择“分离VHD”,按提示操作即可。在卸载的过程中,如果选择了“删除磁盘后删除虚拟硬盘文件”,那么,我们向虚拟磁盘分区中写入的文件将全部消失。
至此,在磁盘管理器下对VHD的基本操作就全部完成了。
VHD的应用
VHD的应用比较广,下面略举两例说明它在个人电脑上的应用。
虚拟安装Windows 7
假设电脑上已安装了Windows XP,现在用Windows7安装光盘启动电脑,将Windows 7安装到电脑的一个VHD文件之中,完成后,仍然可形成包含Windows XP和Windows 7的多系统。等大家看了完成后的效果,自然就能体会这种多系统的好处了。
要注意的是,我们在此是将Windows 7安装到由VHD文件虚拟出来的分区之中。
安装方法
在这一安装中,将要用到命令提示符工具,如果对此不是很了解,请尽量原样输入。
第1步:准备。让电脑的D盘有30GB左右的空闲空间。
第2步:创建VHD。关机后用Windows 7安装光盘启动电脑,当安装向导运行到选择语言界面时,按Shift+F10调出命令提示符窗口,如图2所示。
在命令提示符窗口中依次输入以下命令:
命令1:diskpart命令作用:启动分区管理环境。要注意的是,这一命令在Windows XP以后就有了,但是,只有Windows 7的这一命令才支持创建和管理VHD的功能。命令2:list disk
命令作用:列出当前的磁盘。屏幕上显示的Disk O正是安装于电脑中的真实硬盘。
命令3:Create vdi8kfile=d:\vin7.vhd type=fixedmaximum=15000
命令作用:创建一个VHD文件。创建的VHD文件名为Vwin7,vhd,存放于D盘根目录之下。type=fixed表示它的格式为固定大小。maximum=15000表示VHD文件的最大值为15000MB即15GB。
命令4:select vdisk file=d:\vwin7.Vhd
命令作用:用刚才创建的vwin7,Vhd来虚拟硬盘。
命令5:attach vdisk
命令作用:激活虚拟硬盘。
命令6:list disk
命令作用:列出当前的磁盘。在前面,我们也用过这一命令,请比较它们输出结果的不同。此时,除Disk O外,还有Disk l,其中,disk l就是用VIID文件虚拟出来的。
命令7:exit
命令作用:退出diskpart环境。
第3步:选择安装位置。在图2中单击“Next”,让Windows 7的安装继续进行,直到选择安装位置的界面出现,如图3所示。
在此。可观察到两个磁盘,Disk O就是电脑中的物理硬盘,它的下面有三个分区,前面,我们创建的VHD文件存放位置为第二个分区(即Disk OPartition 2。也就是D盘)。
Disk 1即是虚拟硬盘,由于还没有加载,它的状态信息为:UnaUocated Space。下面就加载并对其进行分区,具体方法如下:选中Disk 1后,单击DriveOptions(advanced),在一下界面中单击“New”。接着,分区向导会要求输入分区的大小,默认为最大值(即15000MB)。如果取此默认值,并单击“Apply”,那么,整个虚拟硬盘将只划分一个分区,本例即是这样操作的。完成后。安装向导自动返回图3界面,但我们会发现Disk l后面会出现Partifion 1字样,而且其格式(Type)为主分区(Primary)。在此,只要选择Disk 1,再单击“Next”,Windows 7的安装即可自动进行,而且安装位置是由VHD虚拟出来的硬盘。
全部安装完成后,重新启动电脑时,会出现操作系统选择的菜单。
优势分析运行速度快。Windows 7尚处于测试阶段,很多朋友都用VPC等虚拟安装,但VPC安装时,硬件全是虚拟的,由于其显卡无法达到Windows 7的基本要求,无法体验到Windows 7在界面上给我们带来的新体验,更要命的是,VPC对硬件的要求极高,用它安装出来的Windows 7运行十分缓慢。将Windows 7安装到VHD时,Windows 7使用的硬件都是电脑中的物理硬件,包括CPU、内存、显卡、声卡等,与安装到物理硬盘上完全一样,不会因虚拟安装而受到任何影响。
维护方便。将VH D文件复制出来,当Windows 7出错时只要拷贝回去就行了。
疑问解答
操作结果能保存吗?Windows 7虽然是虚拟安装的,但我们在Windows 7下的所有操作结果,包括创建的文件、对系统进行的设置等都能保存下来。关闭Windows 7后,这些结果都存放于VHD文件之中。
还有,Windows XP也有Diskpart命令,能用VHD安装Windows XP吗?答案是否定的。从图2可看出,Windows 7的Diskpart版本号为6.1,XXX。而Windows XP的Diskpart版本号为5.1.XXX。不仅如此,Vista的Diskpart版本也不够;WindowsXP成Vista的Diskpart命令都不支持管理VHD的能力。
简单加密私密文件
通过前面的讨论,可能给大家印象最深的是:VHD可加载为虚拟的硬盘分区。可像普通硬盘一样对其进行读写。一旦卸载后就变成普通的VHD文件了,其中的内容不可见。
下面,我们将利用这一特性来隐藏自己的私密文件。
假设电脑的e:MF下有VHD文件,文件名为MF.vhd,且已进行了分区。Windows 7下有两个系统帐号,IxcH和lxcL,启动到LcH后,能自动将MF.VHD加载为虚拟硬盘,启动到lxcl时,不加载。下面是具体操作方法:
第1步,在E;\MF目录下创建两个文本文件cj.txt和de.txt。
前一文件的内容如下:
select vdisk file=e:\MF\MF.Vhd
attach vdJskexit后一文件的内容如下:select vdisk file=e:MFMF.Vhd
detach vdisk
exit第2步;E:\MF目录下创建两个批处理文件cj.bat和de.bat。
首先,打开记事本,输入以下内容:
dlskpart/se:\MF\cj.txt
接着,单击“文件”下的“保存”,在弹出对话框的“保存类型”后选择“所有文件”(切记,不然就保存为文本文件而不是批处理了)。在文件名后输入cj.bat。然后单击“保存”,批处理cj.bat就创建完成了。
同理,创建另一批处理。另一批处理的内容如下:
diskpart/se:\MF\de.txt
小提示:运行批处理cj.bat时,它会自动启动Diskpm并执行cj.txt中的命令行,即将MF.vhd加载为虚拟硬盘,同理,运行de.bat时,可将已加载的虚拟硬盘卸载。
第3步:按Win+R功能键调出“运行”对话框,输入“gpedit.msc”并回车以打开组策略编辑器,在左侧依次展开“计算机配置”|“Windows设置”|“脚本(启动/关机)”。接着,在右侧双击“关机”。然后,单击“添加”|“浏览”,将刚才创建的批处理文件de.bat导人进来。如图4所示。
第4步:进人以下目录:
D:\Users\lxcH\AppData\Roaming\Microseft\Windows\Sta rt Menu\Programs\Startup
将批处理文件cj.bat拷贝到该目录之下。完成后,可在开始菜单的启动组下观察到已添加进来的批处理。登录时启动组下的程序会自动运行,这样。只要登录到IxcH用户下,虚拟硬盘就能
自动加载。显然,这一批处理不能添加到另一用户即1xcL的启动组之下。
要注意的是其中的D:\Usets\IxcH,表示在我的电脑上,Windows 7安装位置为D盘,IxcH是系统帐户名。
至此,所有操作全部完成。小提示:关机脚本对任何用户都有效,而启动组的程序只对当前用户有效,这样,启动到IxcH后,虚拟硬盘将自动加载,启动另一用户(即lxcL)时却不能。就算另一用户手动加载VHD,只要一关机,VHD又将自动卸载。如果要彻底拒绝lxcL加载VHD,可在IxcH下对VHD文件进行EFS加密。
VHD与VPC的关系
VPC即Microsoft VirtualPC,它是微软出品的虚拟电脑软件,通过它也可创建出VHD文件。下面将简介VH D与VP C的关系。
在WindOws 7下打开由VPC创建的VHD文件
假设我们已用VPC创建了一台名为LS的虚拟电脑,那么,可找到名为ls Hard Disk,vhclls,vine的两个文件。其中,VHD文件体积很大,而VMC文件却非常小。现又假设已在虚拟电脑中安装了操作系统及应用软件。怎样才能在不启动VPC的情况下观察到虚拟电脑中的文件呢?
只要像本文所介绍的那样在Wmdows 7下Hard Disk,vhd加载为虚拟硬盘。此时,原来在VPC下才能观察到的分区都能在windows 7下观察到,当然也包括其中的文件。这又有什么用呢?过去,要在真实电脑和虚拟电脑之间交换文件,一般只有三种方法。其一、先安装由VPC提供的专用插件,再进行拷贝。其二、将虚拟电脑和真实电脑构建成局域网。其三、通过VPC设置共享。现在,有了Windows 7,变换文件就更加方便了,至少,多了—种方法。
在VPC下打开由windowS 7创建的VHD文件
在此,我们用具体的事例来说明:假设某Windows 7爱好者在试用该系统时创建了一些VHD文件,后来,由于种种原因没有安装Windows 7了。现在要将VHD中的文件拷贝一些出来,难道只有重新安装Windows 7?
为方便叙述,假设VHD文件名为test,位于E盘根目录下。
完成这一操作的前提是必须安装了VPC,而且VPC中有一台安装操作系统(本例中,安装的~Windows XP)的虚拟电脑。
第1步:运行VPC,在其管理界面上选择已安装的虚拟电脑,单击“Settings”,在弹出的对话框中选择“Hard Disk 2”。接着,单击“Browse…”再找到“E:\test.vhd”即可,如图5所示。
小提示:虚拟电脑中必然有硬盘或分区,它已由创建虚拟电脑时完成,其实,它也是一个VHD文件,可在“Hard Diak 1”下观察到它。
第2步:运行虚拟电脑VPC,让它启动,完成后可在虚拟电脑下观察到“E:\test.vhd”虚拟而来的第二硬盘及分区,当然也包括其中的文件,不仅如此,还可在其中深加、修改文件。
借用windOWS 7安装光盘查看VHD文件
假设硬盘中已安装了Windows XP,硬盘的D盘里存放有名为LS.VHD的文件,现在借用Windows 7的安装光盘来查看LS.VHD中包含有哪些文件。第1步:用Windows 7安装光盘启动电脑,当Windows 7安装向导运行到语言选择界面时,按Shift+F10键调出命令提示符窗口。如图6所示。
第2步:依次输入以下命令:命令1:cur d:\*.*
命令作用:确认一下VHD文件是否真的位于D盘根目录。显然,赫然在目。
命令2:Diskpart
命令3:list disk命令作用:查看当前磁盘。在我的电脑上显示出来的是Disk0,它就是电脑中的真实硬盘。
命令4:select vdi skfiled:is.vhd
命令5:Attach vdisk命令6:List disk命令作用:查看当前磁盘。此时,显示的有disk 0和disk1,与前面的显示相比,多出的Disk 1就是由d:Ms.is.vhd虚拟出来的硬盘。
命令7:exit
命令8:notepad
命令作用:Windows 7安装光盘启动电脑时,首先加载的是与Windows 7相对应的WindowsPE 2.0,输入这一命令后,记事本程序会自动打开。
也许大家会觉得奇怪,为什么要打开记事本程序?原来,此时的Windows PE 2.0运行于命令提示符之下,就算将VHD文件虚拟而成的硬盘加载了,也只能通过DIR等命令查看其中的文件,或者通过COPY等命令来将其中的文件拷贝到真实硬盘之中,麻烦之大可想而知。记事本程序打开后,只要单击记事本窗口中的“file-save as”,窗口化的资源管理器即可打开,如图6所示。
在我的电脑上,从圈6可看出:C、D盘就是真实硬盘的分区(自己的电脑自己最清楚),G盘就是VHD文件虚拟出来的硬盘的分区,双击即可打开它。千万不要忘记我们此时的任务是查看G盘中的文件而不是另存文件。要注意的是,此时能查看到的文件只有文本文件,要查看所有文件,请在“Save as type”后选择“All files”。能查看到其中的文件,当然就能拷贝到真实硬盘的分区之中。拷贝后,再重新启动电脑即可在Windows XP下处理这些文件。
总结
虽然,VHD文件的提出比较早,但真正的应用还得自Windows 7和Windows Server2008 R2开始。过去,我们都将它应用于虚拟机领域,自这两款操作系统后,还可应用于个人电脑和服务器,比如将Windows PE安装到VHD文件并生成启动菜单,使电脑身兼多职。除正常工作外,还可用于维护,对企业进行多台电脑的部署。更重要地,如果将其应用于服务器,理论上,有多少个VHD文件就相当于有多少台电脑,表面上看,多台客户机访问的是同一台电脑,但访问不同的VHD就意味着访问不同的操作系统、享受不同的服务。不仅切换方便,而且技术人员的维护也变得异常简单,只要管理好VHD文件即可保证被访问对象的健康和安全——最简单的方式就是拷贝VHD到其它地方备份一下。总之,抛开虚拟机,VHD也能向我们展示出它的另一番新天地。