如何从 VMware 迁移到 Hyper-V

您可能出于不同的原因需要将 VMware VM 转换为 Hyper-V VM。例如,您可能有一个多超级管理程序环境,您可能需要执行 VMware 到 Hyper-V 的迁移以进行测试,您可能希望为某些软件使用更合理的许可模型等等。然而,尽管有一些相似之处,但这两个虚拟化平台存在一些关键的差异。

了解 VMware 到 Hyper-V VM 转换过程对于顺利和成功地迁移至关重要。本文介绍了一些最实惠的方法和工具,可将 VMware VM 转换为 Hyper-V VM。

转换工具和方法概述

以下是从 Microsoft 提供的最常用的将 VMware VM 转换为 Hyper-V 的方法:

  • 使用 Microsoft 虚拟机转换器 (MVMC)。 MVMC 是一个免费的独立工具,具有图形用户界面(GUI),可以转换虚拟机(以及将物理机转换为虚拟机)。您可以使用它将 VM 迁移到 Microsoft Hyper-V 或 Azure,并允许您将 VMware ESXi VM 转换为 Hyper-V 格式的 VM。
  • 将 VMDK 转换为 VHD,并使用 PowerShell 将转换后的虚拟磁盘附加到新的 Hyper-V VM。当您拥有虚拟磁盘文件但不具备所有 VM 文件(例如 VMX 配置文件)时,您可以使用此方法。此方法允许您转换 VMware Workstation VM 和 VMware ESXi VM。
  • 使用System Center Virtual Machine Manager(VMM)转换虚拟机。 VMM是一款商业软件解决方案,可实现对Hyper-V和VMware环境的集中管理,包括VM、主机和集群的管理,并提供VM转换功能。

准备将VM迁移到Hyper-V的VMware

在将VMware VM转换为Hyper-V之前,您应该执行以下操作,以防止错误并简化迁移过程:

  • 删除不必要的虚拟设备并弹出虚拟光驱。例如,可以删除虚拟软驱和COM或LPT控制器等设备,以提高兼容性并防止可能的中断。如果您正在创建第1代Hyper-V VM,则稍后可以添加这些设备。

    注意: MVMC 3不支持Hyper-V第2代VM。

  • 清理虚拟硬盘。删除虚拟机的临时文件和其他不必要的文件,这些文件会占用VM虚拟硬盘上的空间。删除未使用的程序和组件。如果目标虚拟磁盘是动态扩展的(精简配置),这种方法可以节省磁盘空间和时间。
  • 删除/合并所有VM快照。如果您的VM不包含快照,则可以减少VM转换过程中出现错误的可能性。
  • 在线转换(仅限在线)之前卸载VMware工具。这提供了一种干净的方式来将基于VMware的虚拟机迁移到Hyper-V。在Hyper-V虚拟机中不需要VMware工具套件。Hyper-V提供了集成服务实用程序套件,旨在增强虚拟机客户操作系统的性能。

VMware到Hyper-V迁移的其他考虑事项

Microsoft虚拟机转换器(MVMC)在卸载VMware工具之前对要转换的VM进行快照,并关闭源机器以在转换过程中保留状态。在成功将连接到虚拟机的源磁盘复制到运行转换过程的计算机后,将虚拟机恢复到其以前的状态。此时,如果需要,可以启动VMware中的源机器。

MVMC不会在离线转换期间卸载VMware工具。相反,它仅针对Windows Server客户操作系统禁用VMware服务、驱动程序和程序。对于Linux客户操作系统的文件转换,不会禁用或卸载VMware工具。强烈建议在转换离线虚拟机时手动卸载VMware工具。

使用Microsoft虚拟机转换器进行转换

让我们考虑使用Microsoft虚拟机转换器将基于VMware的虚拟机转换为Hyper-V虚拟机。

输入参数如下:

  • A VM (virtual hardware version 7) is running on ESXi 6.5 (though the explained workflow is true for other/later virtual hardware versions).
  • 虚拟机具有一个没有快照的虚拟磁盘。
  • VMware Tools套件未安装。

开始转换过程:

  1. 使用可执行安装程序下载MVMCmsi文件。独立MVMC的最新版本是3.1。您也可以下载.doc文件,其中包含Windows PowerShell命令的说明。

    注意:对于较新版本的Microsoft虚拟机转换器,您可以将此工具作为Microsoft System Center虚拟机管理器(VMM)的一部分使用,因为Microsoft终止了独立MVMC的发布。

  2. 安装过程非常简单:运行安装程序,接受许可协议,选择安装目录,然后在设置向导中点击安装。确保有足够的磁盘空间,包括虚拟机转换过程中创建的临时文件所需的空间。
  3. 安装完成后,运行转换器。点击开始 > Microsoft虚拟机转换器来启动转换器。
  4. 开始之前屏幕上,您可以阅读简短的描述。如果您不想每次运行转换器时都看到这个屏幕,请选择不再显示此页面复选框。点击下一步继续。
  5. 机器类型。选择要转换的源机器类型。在这种情况下,选择虚拟机转换。点击下一步

  6. 选择目标 Hyper-V 主机。在此示例中,Hyper-V 服务器正在本地主机上运行(转换器和Hyper-V 服务器已安装在同一台机器上)。Microsoft Virtual Machine Converter 也可以将转换后的 VM 保存到网络上的外部目标主机。
    如果您的转换器和 Hyper-V 主机运行在不同的机器上,请确保您的防火墙已相应配置。必须启用通过

    Windows 管理仪表板

    进行的远程访问,并在目标机器上启动相应的服务。
    选择目标主机的名称或 IP 地址,并添加具有足够访问权限的用户的凭据,以连接到 Hyper-V 主机(目标 Hyper-V 主机的本地管理员和域管理员具有此类访问权限)。然后单击下一步继续。

    如果您的转换器和 Hyper-V 主机运行在不同的机器上,请确保您的防火墙已相应配置。必须启用通过Windows 管理仪表板进行的远程访问,并在目标机器上启动相应的服务。

  7. 选择目标Hyper-V主机。在本例中,Hyper-V服务器运行在本地主机上(转换器和Hyper-V服务器安装在同一台机器上)。Microsoft虚拟机转换器还可以通过网络将转换后的VM保存到远程目的地主机。

    如果您的转换器和Hyper-V主机运行在不同的机器上,请确保您的防火墙已相应配置。远程访问通过Windows管理仪表必须启用,并且必须在目标机器上启动适当的服务。

    选择目标主机的名称或IP地址,并添加具有足够访问权限的用户凭据以连接到Hyper-V主机(目标Hyper-V主机的本地管理员和域管理员具有此类访问权限)。然后点击下一步继续。

  8. 建议您在生产环境中避免使用系统盘(通常为 C:)存储虚拟机。例如,如果您的 Hyper-V 主机是远程机器,则您选择的路径可能如下所示:

    \\10.10.10.12\d$\Virtual\Hyper-V

    选择转换后要使用的虚拟磁盘类型。虚拟磁盘可以有两种类型:固定大小磁盘(类似于厚置备磁盘)或动态扩展磁盘(类似于薄置备磁盘)。在这个演练中,选择了动态扩展磁盘以节省存储空间。

    选择虚拟硬盘的格式:vhdx是一种较新且更先进的文件格式,可供

    Hyper-V Gen1 和 Gen2 虚拟机

    使用。对于本演练,我们选择了.vhdx

    点击下一步继续。

  9. 指定源详细信息以连接到vCenter服务器或ESXi服务器。在此示例中,正在转换运行在ESXi服务器上的VM。因此,在此步骤中应输入ESXi服务器的IP地址、用户名和密码。如果使用vCenter集中管理ESXi主机,则可以使用管理员凭据。点击下一步继续。

  10. 现在,选择要转换的虚拟机来自您选择的ESXi服务器。在此示例中,正在转换运行在ESXi主机上的轻量级Windows VM。选择VM后,点击下一步

  11. 虚拟机连接。如果Linux虚拟机上安装了VMware Tools,您必须提供源虚拟机上root账户的用户名和密码,以便转换器能够卸载VMware Tools。在本例中,使用了一台没有安装VMware Tools的Windows机器,这些字段是无效的。定义源机器的最终状态和目标机器的最终状态(开启关闭)。点击下一步

  12. 定义工作空间。工作空间是一个临时文件夹,用于在转换过程中存储临时文件。为了获得更好的性能,这个文件夹应该位于安装了Microsoft虚拟机转换器的机器上。输入路径或点击浏览按钮并选择适当的文件夹。然后点击下一步

  13. 检查摘要。回顾您指定的配置细节。如果警告不是关键性的,您可以继续进行——这些警告不会阻止转换。在我们的情况下,我们忽略了操作系统警告,因为转换器对我们来说在Windows 10、Windows Server 2016、2019以及更新的Windows版本上都能正常工作。我们稍后可以调整内存设置。点击完成以开始虚拟机转换过程。

  14. 等待VM转换完成。这个过程可能会耗费时间,这取决于源VM的虚拟磁盘大小以及网络速度。如果转换成功,点击关闭以退出虚拟机转换器。

  15. 让我们考虑一种不同的虚拟机转换用例。如果您只有 VMware VM 虚拟磁盘,或者您有一个针对 VMware Workstation 的 VM(而不是针对 ESXi),则无法使用 Microsoft Virtual Machine Converter GUI。安装 MVMC 时,还提供了一些有用的 PowerShell 命令。在以下示例中,您可以了解如何使用命令行界面(CLI)将 VMDK 虚拟磁盘转换为 Hyper-V 格式磁盘以及如何在 Hyper-V 上使用该虚拟磁盘运行 VM。转换基于 VMware Workstation 的虚拟磁盘

    将转换器模块添加到当前的 PowerShell 会话中。该模块位于安装 Microsoft Virtual Machine Converter 的目录中。在当前示例中,使用默认位置进行转换。在 PowerShell 中键入以下命令:Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"如果您的转换器安装在另一个目录中,请键入您目录的路径,而不是C:\Program Files\Microsoft Virtual Machine Converter\Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"

  16. 配置完虚拟机设置后,启动虚拟机并配置来宾操作系统。等待操作系统识别新的虚拟设备。不要忘记安装Hyper-V集成服务以获得更好的性能和用户体验。对于集成服务的手动安装,将vmguest.iso镜像插入虚拟机的虚拟DVD驱动器中并运行安装程序。安装完成后,重启虚拟机并弹出虚拟ISO光盘。

使用PowerShell将VMDK转换为VHD

现在让我们考虑另一种虚拟机转换的使用案例。如果您只有VMware虚拟机虚拟磁盘,或者您有一个用于VMware Workstation(不是用于ESXi)的虚拟机,则无法使用Microsoft虚拟机转换器GUI。

安装MVMC时,还会提供一些有用的PowerShell cmdlet。在以下示例中,您可以学习如何使用命令行界面(CLI)将VMDK虚拟磁盘转换为Hyper-V格式磁盘,以及如何在Hyper-V上运行使用该虚拟磁盘的虚拟机。

转换基于VMware Workstation的虚拟磁盘

  1. 在当前的PowerShell会话中添加转换器模块。该模块位于Microsoft虚拟机转换器安装目录中。在本例中,默认位置用于转换器。在PowerShell中输入以下命令:

    Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"

    如果您的转换器安装在另一个目录中,请输入您的目录路径,而不是C:\Program Files\Microsoft Virtual Machine Converter\

  2. 前往您的虚拟机所在的目录,并列出该目录中的文件。(我们想要从VMware迁移到Hyper-V的虚拟机名为StorageLinux。)在这个例子中,虚拟机位于C:\virtual\StorageLinux

    cd C:\virtual\StorageLinux

    dir

    您可以在这里看到虚拟机文件。请记下VMDK文件的名称,因为稍后的操作需要用到它。在这个例子中,我们使用了一个带有单个虚拟磁盘的Linux虚拟机。重要的是,该虚拟机没有快照,并且没有安装VMware Tools(请参见下面的截图)。

  3. 现在是需要将VMware转换为Hyper-V虚拟磁盘格式的时候了。通过使用以下命令和参数在PowerShell中运行转换器:

    ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\Virtual\StorageLinux\StorageLinux 3.x kernel 64-bit.vmdk" -DestinationLiteralPath "C:\Virtual\Hyper-V\converted\01" -VhdType DynamicHardDisk -VhdFormat Vhd

    其中:

    SourceLiteralPath <路径> 是要转换的VMware虚拟磁盘的路径。

    DestinationLiteralPath <路径> 是要保存Hyper-V格式虚拟磁盘的目录路径。

    VhdType <类型> 定义虚拟磁盘的类型 – 动态扩展或固定。

    VhdFormat 定义Hyper-V虚拟磁盘的格式(VHD或VHDX)。

    等待转换过程完成。进度条指示当前状态。

  4. 当虚拟磁盘成功从VMDK转换为VHD时,您应该在屏幕上看到以下内容:

  5. 创建一个新的虚拟机并使用从转换中创建的VHD磁盘。对于这一部分,请参考博客文章,该文章解释了如何在Hyper-V中创建新的虚拟机。关键点是连接虚拟磁盘。在新建虚拟机向导的适当阶段,选择使用现有的虚拟硬盘,并指定新创建的VHD文件的位置。

  6. 完成虚拟机的配置后,在你的Hyper-V主机上运行虚拟机。

你也可以使用这种方法来转换带有多个虚拟磁盘的虚拟机。在这种情况下,每个虚拟磁盘必须在转换后附加到虚拟机上。

转换VMware ESXi格式的虚拟磁盘

首先,您需要将ESXi主机数据存储上的虚拟磁盘文件复制到安装了Microsoft虚拟机转换器的机器上。在这种情况下,一个VMware虚拟磁盘由两个文件组成:磁盘名称.vmdk磁盘名称-flat.vmdk。.vmdk文件是一个描述符,包含虚拟磁盘配置的信息,并指向一个-flat.vmdk文件。虚拟磁盘数据本身存储在-flat.vmdk文件中(以原始格式存储,类似于物理硬盘驱动器)。.vmdk文件的大小只有几KB,而-flat.vmdk文件的大小则大得多。您可以使用VMware vSphere客户端或任何SCP(安全复制协议)客户端从ESXi主机复制VMware虚拟磁盘文件。

使用VMware vSphere客户端复制文件

如果您通过vCenter Server管理ESXi主机,可以使用此方法。

  1. 使用VMware vSphere客户端登录到您的vCenter – 在web浏览器的地址栏中输入vCenter Server的IP地址。
  2. 转到存储选项卡,选择包含您的VM文件的数据存储,选择VM目录,然后选择要转换的虚拟磁盘。
  3. 运行 WinSCP 并输入 IP 地址、端口号和 root 凭据登录到 ESXi 服务器。WinSCP 具有直观的 GUI,其中有两个主要面板,您可以访问文件和目录。在左侧面板中,导航到在转换之前存储 VMDK 文件的目录。在右侧面板中,转到 ESXi 数据存储上的 VM 目录。在本例中,该目录的路径是 /vmfs/volumes/SSD2/Win-test2。选择所需的两个虚拟磁盘文件(.vmdk 和 –flat.vmdk),并将它们复制到本地目录。只需拖放文件。将从 ESXi 复制的 VMDK 虚拟磁盘转换

    从 ESXi 复制的 VMware 虚拟磁盘文件现位于具有 Microsoft Virtual Machine Converter 的 Windows 机器上。我们需要将 VMware 转换为 Hyper-V 虚拟磁盘格式。转换 ESXi VM 的虚拟磁盘类似于转换 VMware Workstation VM 的虚拟磁盘。主要区别在于现在有两个文件(.vmdk 和 –flat.vmdk),而不是一个单独的文件。打开 PowerShell 并确保导入了适当的转换器模块。如果没有,请输入以下命令:

    Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"

    Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"

  4. 一旦下载了zip存档,就提取虚拟磁盘文件。

  5. 提取文件后,您会看到-flat.vmdk虚拟磁盘文件占用了8GB的磁盘空间(当前虚拟磁盘的最大预配大小),而不是1.64GB。稍后,您可以将此虚拟磁盘转换为Hyper-V的动态扩展虚拟磁盘。

使用WinSCP客户端复制文件

WinSCP是一个免费的应用程序,它使用SCP、SFTP(SSH安全壳文件传输协议)、FTP和WebDAV协议进行数据传输。如果可能,首选SFTP。您可以从官方网站下载WinSCP

运行WinSCP并通过输入IP地址、端口号和root凭据登录到您的ESXi服务器。

WinSCP拥有直观的图形用户界面,其中包含两个主要面板,您可以在其中访问文件和目录。在左侧面板中,导航到转换前存储VMDK文件的目录。在右侧面板中,转到ESXi数据存储上的VM目录。

在本例中,该目录的路径是/vmfs/volumes/SSD2/Win-test2。选择所需的两个虚拟磁盘文件(.vmdk和-flat.vmdk)并将它们复制到本地目录。只需拖放文件即可。

将从ESXi复制的VMDK虚拟磁盘转换

现在,从ESXi复制的VMware虚拟磁盘文件位于具有Microsoft虚拟机转换器的Windows机器上。我们需要将VMware转换为Hyper-V虚拟磁盘格式。转换ESXi VM的虚拟磁盘类似于转换VMware Workstation VM的虚拟磁盘。主要区别在于您现在有两个文件(.vmdk和-flat.vmdk)而不是单个文件。

  1. 打开PowerShell并确保导入了适当的转换器模块。如果没有,请输入以下命令:

    Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"

  2. 现在输入以下命令来转换虚拟磁盘。

    ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\Virtual\Hyper-V\converted\FromESXi\Win-test2.vmdk" -DestinationLiteralPath "C:\Virtual\Hyper-V\converted\Win-test2PS" -VhdType DynamicHardDisk -VhdFormat Vhd

    为-SourceLiteralPath参数指定.vmdk文件的路径(不是-flat.vmdk文件的路径)。

  3. 转换过程成功完成后,创建一个新的Hyper-V虚拟机,并使用现有虚拟磁盘选项来附加转换后准备好的VHD虚拟磁盘(如本文前面所述)。然后,您可以编辑虚拟机配置并运行虚拟机。

常见转换错误和解决方法

有多种错误可能会阻止转换过程的进行。让我们考虑可能出现的问题以及如何解决它们。

条目1不是描述符支持的磁盘数据库条目

在将虚拟磁盘从VMDK格式转换为VHD格式时出现的错误意味着Microsoft虚拟机转换器无法识别磁盘数据库的一些条目。条目编号可能会有所不同 – 例如,您可能会看到2、3、4等,而不是1。为了解决此问题,请编辑虚拟磁盘描述符。

修复VMware Workstation格式虚拟磁盘的问题

A VMDK virtual disk of a VMware Workstation format has an embedded descriptor (the descriptor is integrated into the VMDK file with the disk data). You need to download a free utility kit to extract the virtual disk descriptor to a TXT file. You can then edit the descriptor and import the edited descriptor from the TXT file back into the VMDK file. The name of the utility kit is dsfok tools (DS File Ops Kit). You can download the dsfok kit here.

  1. 从存档中提取文件,例如,提取到C:\Virtual\_tools\dsfok
  2. 运行CMD(按Win+R,键入cmd并按Enter)。转到包含dsfok工具的目录:

    cd C:\Virtual\_tools\dsfok

  3. 运行dsfo.exe并使用以下参数:

    dsfo.exe “C:\virtual\win7x64\win7x64.vmdk” 512 1024 descriptor-win7x64.txt

    其中:

    512字节是偏移量

    1024字节是导出的数据大小

    Descriptor-win7x64.txt是要导出描述符的文件名

  4. 描述符现已提取到目录中带有descriptor-win7x64.TXT文件的dsfok工具。

  5. 使用文本编辑器(选择一个能正确识别布局的,如Notepad++)编辑描述符的.txt文件。找到描述符中包含ddb.toolsInstallType = "1"的部分,并通过将第一个“d”字符替换为“#”字符来注释掉那一段。在这种情况下,描述符的格式没有被破坏,并且你得到了#db.toolsInstallType = “1”字符串作为结果。注释掉的字符串在读取描述符配置时不被处理。编辑完成后保存文件。

  6. 现在您需要将编辑过的描述符重新导入到VMware Workstation格式的VMDK文件中。为了完成这个任务,请运行带有以下参数的dsfi.exe

    dsfi.exe "C:\virtual\win7x64\win7x64.vmdk" 512 1024 descriptor-win7x64.txt

  7. 现在您可以通过在PowerShell中运行以下命令将VMDK虚拟磁盘转换为VHD格式:

    ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\Virtual\win7x64\Win7x64.vmdk" -DestinationLiteralPath "C:\Virtual\Hyper-V\converted\01" -VhdType DynamicHardDisk -VhdFormat Vhd

    错误不再显示,转换过程开始。

  8. 一旦虚拟磁盘转换为VHD格式,您就可以创建一个新的Hyper-V虚拟机并附加该虚拟磁盘(这个过程在本博客文章的前面部分已经解释过)。然后,您可以在Hyper-V上运行该虚拟机。然而,可能会出现另一个问题。如果您的虚拟机无法加载,并且您在黑色背景上看到一个闪烁的光标,那么您需要修复虚拟磁盘的引导扇区。

    注意:在本演练示例中,虚拟磁盘上安装了Windows 7。对于安装了Windows 10、Windows Server 2016等的虚拟机,您可以使用相同的逻辑。

  9. 插入您的Windows发行版的ISO安装映像,并从虚拟CD/DVD驱动器启动。安装光盘内置的修复工具可以用来修复引导扇区,包括主引导记录(MBR)。

  10. 一旦Windows安装程序加载完成,点击修复您的计算机

  11. 在适当的虚拟磁盘上选择您的操作系统,然后点击下一步

  12. 运行命令提示符并执行以下命令:

    <代码>bootrec /fixmbr

    <代码>bootrec /fixboot

    重新启动虚拟机并从虚拟硬盘启动。

  13. 您的VM现在应该能够成功启动了。

解决VMware ESXi格式虚拟磁盘的问题

让我们探讨一下,当你从VMware ESXi导出一个虚拟机到Hyper-V时,如何解决类似的问题,特别是当涉及到一个Linux虚拟机(虚拟机名为NAKIVO-clone)时,Microsoft Virtual Machine Converter返回以下错误:条目4不是描述符中支持的磁盘数据库条目。解决这个问题的方法与前一个例子中解释的方法类似——你需要编辑虚拟机每个虚拟磁盘的描述符。

请记住,运行在VMware Workstation上的虚拟机的虚拟磁盘有一个嵌入的描述符(描述符集成在VMDK文件中)。相比之下,如果一个虚拟机运行在ESXi主机上,那么虚拟磁盘数据和描述符存储在两个不同的文件中。在ESXi主机上启用SSH访问,该主机上注册了你想要转换的虚拟机。使用如PuTTY这样的SSH客户端登录到ESXi控制台。

  1. 转到存储虚拟机文件的目录。在本例中,虚拟机文件位于/vmfs/volumes/SSD1/NAKIVO-clone的ESXi主机上。在这种情况下,数据存储的名称是SSD1

    cd /vmfs/volumes/SSD1/NAKIVO-clone

  2. 输入ls -al来列出虚拟机目录中的文件。从下面的截图中可以看到,该虚拟机有两个虚拟磁盘。

  3. 使用vi(控制台文本编辑器)编辑虚拟磁盘的描述符:

    vi NAKIVO-clone.vmdk

  4. 查找以下字符串:

    ddb.toolsInstallType = "4"

  5. 编辑字符串,将第一个“d”字符替换为“#”字符。编辑后,它应该显示为:#db.toolsInstallType = “4”

    使用箭头移动光标。按a从导航模式切换到编辑模式以追加符号。更改完成后,按Esc退出编辑模式。然后输入:wq并按Enter将更改写入文件并退出。

  6. 在保存对描述符文件的更改后,检查虚拟磁盘的一致性:

    vmkfstools -e Win7PMM.vmdk

  7. 以同样的方式编辑同一虚拟机的第二个虚拟磁盘的描述符。当所有VM的虚拟磁盘描述符都编辑完毕后,再次使用Microsoft Virtual Machine Converter启动VM转换。现在,您的VM的虚拟磁盘可以无错误地进行转换。

多次尝试后,从VMware接收响应失败。查看内部异常

如果在Microsoft Virtual Machine Converter的GUI中将ESXi主机定义为源,则可能会发生此错误。如果您使用vCenter Server管理ESXi主机,包括当前主机,请在部分中定义vCenter Server的名称或IP地址以及凭据,而不是ESXi主机。

A task may only be disposed if it is in a completion state (RanToCompletion, Faulted or Canceled)

当使用Microsoft Virtual Machine Converter将VM从ESXi转换为Hyper-V格式时,可能会遇到此错误。在这种情况下,将虚拟磁盘文件(.vmdk和–flat.vmdk)复制到安装了转换器的机器上,在PowerShell中转换虚拟磁盘,然后创建一个新的Hyper-V VM,并将磁盘附加到该VM。

在VMM中将VMware VM转换为Hyper-V

System Center Virtual Machine Manager (VMM)是一个功能强大的解决方案,提供了广泛的选择,允许您将VMware VM转换为Hyper-V VM。VMM通常用于具有Hyper-V主机和Windows服务器的大型环境。

要求

  • System Center Virtual Machine Manager 2022支持从vSphere 6.5及更高版本转换VMware VM。
  • ESXi主机必须添加到System Center Virtual Machine Manager
  • 支持将基于EFI的VMware VM转换为第2代Hyper-V VM
  • VMware Workstation VM不能使用VMM进行转换
  • 连接到虚拟IDE控制器的虚拟硬盘不能转换
  • 源VM必须关闭才能开始VMware到HyperV的转换过程
  • 在将VMware VM转换为Hyper-V格式之前卸载VMware Tools

使用VMM中的向导

执行以下步骤将VMware VM转换为Hyper-V VM:

  1. 前往虚拟机和服务 > 首页 > 创建 > 创建虚拟机 > 转换虚拟机.
  2. 转换虚拟机向导中,您从选择源步骤开始。点击浏览,在选择虚拟机源部分,选择您打算从ESXi主机转换的VMware虚拟机。在向导的每个步骤中点击下一步继续。
  3. 指定虚拟机标识中,根据您的需要调整机器名称和描述。
  4. 虚拟机配置中,为转换后将创建的Hyper-V虚拟机指定所需的处理器数量和内存设置。您可以选择Generation1或Generation2作为目标虚拟机。
  5. 选择主机部分,指定目标Hyper-V主机或Azure Stack HCI主机(适用于VMM 2019 UR3及以后版本)以放置虚拟机。如果您看到消息“找不到与所选虚拟机网络的可用连接”,则应导航到Fabric资源,找到逻辑网络部分并配置网络。编辑这些设置后,您可能需要重新启动虚拟机转换。
  6. 选择路径中配置主机上虚拟机文件的存储位置。列表中提供了默认的虚拟机路径。
  7. 选择网络部分,根据需要选择逻辑网络、虚拟网络和VLAN。
  8. 添加属性下,配置必要的设置。您可以选择在转换/部署后应用于虚拟机的开机/关机选项。
  9. 摘要中,查看设置并根据需要选择在部署后启动虚拟机。您可以点击查看脚本并保存一个包含 PowerShell 命令的文本文件,以使用这一套命令将更多 VMware 虚拟机转换为 Hyper-V 虚拟机。
  10. 点击创建来启动转换过程。通过访问虚拟机和服务 > 主页 > 显示 > 虚拟机 来验证 VM 的转换进度和完成情况。

您可以打开一个 System Center 作业列表,以查看使用这个 VMM 转换工具进行的 VMware 到 Hyper-V 迁移的进度。转换速度取决于基础架构中服务器的 VM 大小、网络速度、CPU、内存和存储资源。

要使用 PowerShell 将 VMware VM 转换为 Hyper-V,您可以使用以下 cmdlet:

New-SCV2V -VMHost <主机> -VMXPath <字符串> [选项]

结论

微软虚拟机转换器(MVMC)是您可以使用的最实惠的工具之一,用于将 VMware 虚拟机转换为 Hyper-V 格式。它包括 GUI 工具和 PowerShell 的命令行工具。通过 MVMC GUI,您可以转换运行在 ESXi 主机上的整个虚拟机。PowerShell cmdlet 允许您转换单个 VMware 虚拟磁盘的 ESXi 格式和 Workstation 格式。

无论您使用哪种虚拟化平台,都必须备份虚拟机以防止数据丢失和停机。NAKIVO备份与复制可以备份和复制VMware VM和Hyper-V VM,并且还可以通过先进的跨平台恢复功能帮助您在Hyper-V上运行从VMware备份中恢复的VM,反之亦然。

Source:
https://www.nakivo.com/blog/how-to-convert-vmware-vm-to-hyper-v/