在windows平台下挂载vhd磁盘文件类似于挂载iso等文件;
使用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机器的单个文件和文件夹需要进行棘手的挂载与卸载。