教程:在Hyper-V环境里挂载VHD文件

日期: 2009-02-15 作者:Greg Shields翻译:唐琼瑶 来源:TechTarget中国 英文

作为一名虚拟管理员,可能有时候需要从虚拟机访问一个文件或文件夹。对于正在运行的虚拟机,你只需要登录虚拟机或者将其连接到网络上以获取文件。但是从未启动的虚拟机上访问文件的过程很复杂。不过使用微软Hyper-V,通过在桌面上挂载虚拟机的虚拟硬盘(VHD)文件来访问文件。

可以使用Windows PowerShell脚本或者在Microsoft Virtual Server(MVS)里的VHDMount工具挂载VHD文件。在本文中,TechTarget中国的特约作者Greg Shields将介绍这两种技巧。   使用VHDMount工具挂载VHD文件   启动Hyper-V里的外部VHD文件有点困难。……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作为一名虚拟管理员,可能有时候需要从虚拟机访问一个文件或文件夹。对于正在运行的虚拟机,你只需要登录虚拟机或者将其连接到网络上以获取文件。但是从未启动的虚拟机上访问文件的过程很复杂。不过使用微软Hyper-V,通过在桌面上挂载虚拟机的虚拟硬盘(VHD)文件来访问文件。可以使用Windows PowerShell脚本或者在Microsoft Virtual Server(MVS)里的VHDMount工具挂载VHD文件。在本文中,TechTarget中国的特约作者Greg Shields将介绍这两种技巧。

  使用VHDMount工具挂载VHD文件

  启动Hyper-V里的外部VHD文件有点困难。如果在备份驱动上有个VHD文件,并需要从其虚拟机访问文件,Hyper-V要求导入这台虚拟机。如果你需要快速获取一些文件,那么这个过程非常耗时,也很烦人。

  另一种方法是通过在桌面上直接挂载VHD访问硬盘。就像挂载DVD的ISO镜像,或者操作系统镜像的Windows Imaging Format文件,通过命令行可能挂载虚拟机的VHD文件。结果就是虚拟机的磁盘就如自己的独立磁盘,有具体的驱动器号。

  VHDMount工具能在桌面上直接挂载VHD访问硬盘,并能用于Microsoft Virtual Server 2005。VHDMount为挂载和访问VHD提供了一个命令行界面(CLI)。不过在第一次使用时,需要将VHD放置在桌面或服务器上。

  下载MVS 2005后开始安装,不过只安装VHDMount功能,不装其他的。这个过程安装VHDMount工具所需的必要组件,而不是完整安装MVS 2005。如果你想更快地提取VHDMount,可以使用下面的两个命令。它们能从设置文件获取MSI,然后运行VHDMount工具所需的组件:

setup.exe /c /t c:{targetFolder} msiexec /i "c:{targetFolder}Virtual Server 2005 Install.msi" /qn ADDLOCAL=VHDMount

  安装VHDMount后使用命令vhdmount /m {targetVHD}在可用的驱动器号上挂载VHD。挂载VHD后,任何更改将写入差分磁盘,除非卸载VHD。如果出现错误,这能允许你恢复到原始磁盘。使用命令vhdmount /u {targetVHD}卸载VHD。如果你想消除更改——差分磁盘的内容——就如卸载一样,使用命令vhdmount /u /d {targetVHD}。这些命令可以在Windows Vista下运行,不过在Windows XP下使用VHDMount会有一些问题。

  使用PowerShell挂载VHD文件

  如果使用VHDMount不适合你的话,可以使用PowerShell工具达到相同的效果。不过,PowerShell安装过程不那么简单。下面两个命令可以启动VHD:

$objVHDService = get-wmiobject -class "Msvm_ImageManagementService" -namespace "rootvirtualization" -computername "." $objVHDService.Mount("{targetVHD}")

  上面第一行使用PowerShell建立到本地计算机的Windows Management Instrumentation存储的连接,并取得Msvm_ImageManagementService类别的一个实例。这个类别需要使用挂载方法,类似于脚本的作用。

  完成这步后,已装的驱动到达一个脱机磁盘。你需要通过使用Windows Disk Management或diskpart.exe命令行工具让磁盘在线。通过PowerShell完成这个任务的复杂的。如果你想要一个直接的PowerShell解决方案,查看”using PowerShell to mount VHDs“这个博客。

  使用虚拟磁盘完成工作之后,需要通过运行下面的卸载脚本让磁盘重新处于脱机状态:

$objVHDService = get-wmiobject -class "Msvm_ImageManagementService" -namespace "rootvirtualization" -computername "." $objVHDService.Unmount("{targetVHD}")

  如果在小型环境使用Hyper-V,你可能也使用微软内部的Windows Server Backup工具用以备份虚拟机。由于这个工具只能在单个卷级别上备份,因此,在单个虚拟机级别上,这些备份存储在VHD级别上。这意味着来自Hyper-V机器的单个文件和文件夹需要进行棘手的挂载与卸载。

作者

Greg Shields
Greg Shields

Greg Shields,MCSE(微软认证系统工程师),是Concentrated Technology(www.concentratedtechnology.com)共同创始人和IT技术专家。他拥有近十五年的IT架构和企业管理经验。同时,也是一名IT培训师,并对IT多个技术主题进行演讲,主要包括微软管理、系统管理及监控、虚拟化等。他最近的著作是由SAPIEN出版社出版的《Windows Server 2008: What's New/What's Changed》。

相关推荐

  • 回顾年度9大虚拟化技术

    虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]

  • 从Azure VM到Hyper-V:想想这些技巧

    多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。

  • 功能多样的Get-VM PowerShell cmdlet,你知道多少?

    Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。

  • 支持Linux虚拟机:新版Hyper-V来帮忙

    大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。