将 VMDK 转换为 VHD

将 VMDK 转换为 VHD

我正在考虑将 VMDK 硬盘转换为 VHD(虚拟硬盘)。VMDK 来自我们的 VMware 机器的导出,我想尝试将其导入 Azure。

知道如何实现吗?我尝试了各种小工具来尝试在两种格式之间转换,但到目前为止毫无效果。大多数工具都以某种方式声明 VMDK 无效。

答案1

Microsoft 虚拟机转换器 (MVMC) 包含 Microsoft 虚拟磁盘转换器工具 (MVDC.exe),可将 VMDK 文件转换为 VHD 文件。

http://www.microsoft.com/en-ca/download/details.aspx?id=42497

MVDC SrcDisk  DstDisk  [/?]  [/Dyn]

SrcDisk  Specifies the source VMDK disk path to be converted.
DstDisk  Specifies the path for the converted disk.
[/?]     Show Help
[/Dyn]   Indicates the destination disk should be dynamic rather than fixed.

例如:

C:\Program Files (x86)\Microsoft Virtual Machine Converter Solution Accelerator>mvdc "D:\VM\Windows Server 2008 R2 x64\Windows Server 2008 R2 x64.vmdk" "D:\VM\Windows Server 2008 R2 x64\Windows Server 2008 R2 x64.vhd"
Step 1 of 3: Loading Source Disk...
Step 1 of 3: Loading Source Disk Completed.
Source file found of size 40.0 GB.
DiskGeometry:
   Cylinders:        5221
   Tracks/Cylinder:  255
   Sectors/Track:    63
   Bytes/Sector:     512
   MediaType:        FixedMedia
Step 2 of 3: Creating Destination Disk...
Step 2 of 3: Creating Destination Disk Completed.
Destination file created of size 40.0 GB.
DiskGeometry:
   Cylinders:        5221
   Tracks/Cylinder:  255
   Sectors/Track:    63
   Bytes/Sector:     512
   MediaType:        FixedMedia
Step 3 of 3: Copying raw data...
Step 3 of 3: Copying raw data completed.
Conversion Complete!  The converted file is located at: D:\VM\Windows Server 2008 R2 x64\Windows Server 2008 R2 x64.vhd

默认情况下,它会创建一个固定大小的 VHD,这也是 Azure VM 所需要的。

将其转换为 VHD 后,最好在 Hyper-V 中本地启动它,确保它已配置为动态 IP,并且已启用 RDP,并且您能够成功地通过 RDP 进入它。然后,如果您想将其用作基础映像,您还需要使用 sysprep 对其进行通用化。如果您想将其用于单个 Azure VM,请不要运行 sysprep,而是将其作为磁盘而不是映像上传(Csupload Add-Disk 而不是 Add-PersistentVMImage)。

也可以看看: http://www.windowsazure.com/en-us/manage/windows/common-tasks/upload-a-vhd/

答案2

我为此使用了 VirtualBox(实际上是与 VirtualBox 一起安装的 CLI vboxmanage),在安装 VirtualBox 和 Hyper-V 时我没有遇到任何问题,但不能同时运行它们,那是另一个线程!

无论如何在提升的(管理员模式)提示下使用

cd %programfiles%\Oracle\VirtualBox

vboxmanage clonehd "C:\tmp\file.vmdk" "C:\tmp\file.vhd" -format VHD

注意,您可以使用 7zip 从 OVA 中提取 VMDK!

答案3

将 .vmdk 转换为 .vhdk 的工具已更新。

Microsoft Virtual Machine Converter 2.0 于 2014 年 4 月左右发布。

以下是该工具的链接:Microsoft 虚拟机转换器 2.0

新工具改变了从使用 MVDC.exe 到使用 powershell cmdlet 的转换方式。

我关注了这篇优秀的博客来解决这个问题。Microsoft 虚拟机转换器 2.0 的新增功能

以下是有关如何操作的详细摘要。

默认安装位置是:

C:\Program Files\Microsoft Virtual Machine Converter

以本地管理员身份使用 powershell 然后您可以加载 cmdlet:

Import-Module .\MvmcCmdlet.psd1

加载 cmdlet 后,您可以调用以下命令:

ConvertTo-MvmcVirtualHardDisk

这将询问.vmdk 文件路径:

提供以下参数的值:

SourceLiteralPath: D:\some.vmdk

然后它将开始转换,并在转换后将 .vhdk 放置在以下路径中:

C:\Program Files\Microsoft Virtual Machine Converter

我希望这对其他人有帮助。

答案4

@ElvisLives 和 @AvkashChauhan 的回答很好,但对于那些不害怕使用 powershell 的人来说是一个很好的解决方案。

  1. 首先你需要下载并安装Microsoft 虚拟机转换器 3.0来自微软网站。
  2. 接下来,打开提升的 PowerShell 提示符并运行以下命令(更改路径以匹配您的源 VMDK 文件和新 VHD 文件的目标路径):

    -导入模块'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1'

    -ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath “C:\Ubuntu-disk1.vmdk” -DestinationLiteralPath “C:\Ubuntu-disk1.vhd” -VhdType FixedHardDisk -VhdFormat Vhd


这样做时不需要 RDP

相关内容