如何在ESXi主机上克隆虚拟机:5种方法

虚拟化技术通过诸如VM模板或VM克隆等功能实现更高效的工作流程和资源利用率,使您能够快速创建现有VM的完全相同副本。新的VM不需要从头开始配置,因为它具有与原始VM相同的虚拟硬件、安装的软件和其他设置。

VM克隆功能适用于由vCenter Server管理的VM。但是,如果您使用VMware ESXi主机的免费版本,您也可以克隆正在运行的VM。

本博文解释了如何使用不同方法在ESXi服务器上克隆现有的VMware虚拟机,无论是否使用vCenter Server。

VMware ESXi克隆VM环境

建议在开始之前不要对要克隆的VM创建快照。这可以帮助避免使用快照恢复VM克隆的VM状态时还原原始VM网络适配器的MAC地址等问题。如果您有VM快照,则需要在从快照恢复VM状态以避免冲突MAC地址的VM克隆后手动更改MAC地址。

我们用于演示如何制作克隆机器的环境如下:

  • ESXi主机1: 192.168.101.201
  • ESXi主机1上的VM: Windows-VM
  • ESXi主机2: 192.168.101.202
  • vCenter服务器: 192.168.101.103在这个环境中,使用ESXi 7和vCenter 7来解释工作流程和克隆虚拟机。

ESXi7和vCenter7在这个环境中用于解释工作流程和克隆虚拟机。

方法1:在没有vCenter的情况下使用VMware ESXi克隆VM -使用VMware Host Client

如果你有一个未由vCenter Server管理的ESXi主机,你可以使用VMware Host Client在那个ESXi主机上通过用户友好的网页界面克隆VM。

我们有一个ESXi主机(192.168.101.201),它有两个数据存储(datastore10adatastore10c)。名为Windows-VM的VM位于datastore10a上。我们将克隆这个VM,并将VM克隆存储在datastore10c上。

要在没有vCenter的情况下在ESXi主机上克隆VM,请执行以下操作:

  1. 使用管理员帐户(root)登录到VMware Host Client。
  2. 在所需的数据存储上创建一个目录来存储VM克隆的文件。我们在导航器窗格中单击存储,转到datastore10c,单击创建目录,并将Win-VM-Clone作为目录名称。单击创建目录

  3. 打开源虚拟机的VM设置并检查虚拟机文件的位置。为此,请转到虚拟机,选择Windows虚拟机(在导航器中),并在硬件配置窗格中展开硬盘1

    我们可以看到我们的虚拟机的虚拟硬盘位于Windows-VM目录中的datastore10a上。如果您的虚拟机有多个虚拟磁盘,请检查每个磁盘的位置。在某些自定义配置中,虚拟机的虚拟磁盘可能位于不同的位置。复制克隆虚拟机的所有虚拟磁盘非常重要。

    您还可以单击编辑 VM 设置并在 VM 设置中展开硬盘部分以查看虚拟硬盘的位置。

  4. 关闭要克隆的虚拟机。
  5. 打开数据存储浏览器,转到源虚拟机的目录。要做到这一点,点击导航窗格中的存储,点击datastore10a,然后点击数据存储浏览器。然后,在数据存储浏览器中选择datastore10a上的Windows-VM目录。
  6. 复制源虚拟机的VMDK文件和VMX文件到虚拟机克隆的目录。首先,复制原始VM的虚拟磁盘。在数据存储浏览器中选择VMDK文件(在我们的情况下是Windows-VM.vmdk),然后点击复制

  7. 在下一个窗口中选择目标目录,然后点击复制。我们选择datastore10c上的Win-VM-Clone目录。

  8. 如果您的原始VM具有多个虚拟磁盘,请重复以下步骤以复制VM的所有虚拟磁盘。

    请注意,VMware Host Client显示.vmdk-flat.vmdk文件为一项。您可以看到在命令行界面中每个虚拟磁盘有两个文件。一个.vmdk文件是虚拟磁盘描述符文件,-flat.vmdk是包含数据的虚拟磁盘文件。运行在VMware Workstation中的VM的虚拟磁盘与ESXi VMs相比,使用.vmdk带有嵌入式描述符的虚拟磁盘(一个文件而不是两个文件)。

  9. 等待文件复制完成。您可以在网页界面底部的最近任务栏中监视进度。

  10. 下载 VMX 文件,这是一个虚拟机配置文件,到您的计算机上。为此,请打开数据存储浏览器并转到datastore10a上的Windows-VM目录。选择.vmx文件(在我们的情况下是Windows-VM.vmx)并单击下载(您可以右键单击 .vmx 文件以打开上下文菜单并选择选项)。将所选的 VMX 文件保存到您的计算机上。

  11. 编辑您已经下载的 VMX 文件(在我们的情况下是Windows-VM.vmx)。您可以使用您喜欢的文本编辑器。虽然克隆的虚拟机是相同的虚拟机,但在 VMware vSphere 中有一些设置(例如 VM 名称)必须对于每个虚拟机不同,以便更方便地识别虚拟机。
  12. 找到以displayName开头的行。将当前的VM克隆名称更改为与原始VM的名称不同。

    我们将VM名称从

    displayName =“Windows-VM”

    更改为

    displayName =“Win-VM-Clone”

    我们显示的VM名称将与存储VM克隆文件的目录名称相同。

    可选:您还可以在数据存储浏览器中重命名虚拟磁盘(Windows-VM.vmdk),并在.vmx配置文件的相应行中更改值,以获得唯一的虚拟磁盘名称(例如,在我们的情况下为Win-VM-Clone.vmdk)。

  13. 将编辑后的 VMX 文件上传到克隆虚拟机文件所在的数据存储中(像之前那样使用数据存储浏览器)。我们选择 datastore10c/Win-VM-Clone/ 目录,然后点击 上传(在浏览器窗口中选择适当的已编辑的 VMX 文件)。

  14. 现在,编辑后的 VMX 文件位于虚拟机克隆的目录中(在我们的情况下是 Win-VM-Clonedatatore10c 中)。您可以关闭数据存储浏览器。

    注意: 如果要将虚拟机克隆到另一台 ESXi 主机,则需将虚拟机配置和虚拟磁盘文件下载到您的计算机,然后将这些文件上传到目标 ESXi 主机的数据存储中。您也可以使用 SCP/SFTP 客户端从/到数据存储中下载和上传文件(例如在 Windows 中使用 WinSCP)。

  15. 一旦我们复制了VM文件,我们需要在ESXi主机上注册一个VM克隆。转到导航窗格中的虚拟机,然后点击创建/注册虚拟机

  16. 打开新虚拟机向导。
  17. 选择创建类型。选择注册现有虚拟机,然后点击下一步

  18. 选择要注册的VM。点击选择一个或多个虚拟机、数据存储或目录

  19. 在打开的数据存储浏览器窗口中选择位于VM克隆目录中的VMX文件,然后点击选择

  20. 确保在向导的第二步选择所需的VMX文件,然后点击“下一步”。

  21. 在“准备完成”屏幕上点击“完成”。

  22. VM克隆现在已注册为虚拟机,并显示在虚拟机列表中。您可以随时在VMware Host Client的Web界面中重命名VM克隆。您可以右键单击VM名称,在打开的菜单中点击“重命名”。

  23. 现在,您可以启动虚拟机克隆。启动虚拟机后,应该会看到屏幕截图中显示的问题。

    选择我复制了它(而不是移动)。这对于为虚拟机设置新的MAC地址和通用唯一标识符(UUID)非常重要。请记住,您可能需要更改客户操作系统中的虚拟机名称和SID(对于Windows虚拟机),以避免冲突。点击回答

    虚拟机已成功克隆在ESXi主机上。

方法2:如何在ESXi命令行中克隆虚拟机

在不使用vCenter Server的情况下,在ESXi主机上克隆虚拟机的另一种方法是使用ESXi命令行。您可以直接访问ESXi服务器上的ESXi shell,也可以通过SSH远程连接到ESXi服务器。确保SSH访问已启用。

要在命令行中创建一个不使用vCenter的VMware克隆VM:

  1. 使用SSH客户端连接到ESXi服务器。如果您使用Windows,可以使用PuTTY。

    检查在此ESXi主机上注册的VM的列表(我们将克隆相同的Windows-VM,即上一个示例中的原始VM)。

    vim-cmd vmsvc/getallvms

  2. 我们需要关闭要克隆的原始VM。

    获取要关闭的VM的ID(VMID)以识别要关闭的哪个VM。

    vim-cmd vmsvc/getallvms

    我们的Windows-VM的VMID为1(请参见下面的屏幕截图)。

  3. 关闭虚拟机的命令是:

    vim-cmd vmsvc/power.shutdown VMID

    我们用这个命令来关闭我们的Windows虚拟机

    vim-cmd vmsvc/power.shutdown 1

  4. 检查虚拟机电源状态的命令是:

    vim-cmd vmsvc/power.getstate VMID

    如果无法关闭虚拟机,可以使用关机命令:

    vim-cmd vmsvc/power.off VMID

  5. 检查该虚拟机配置文件位置的命令是:

    cat /etc/vmware/hostd/vmInventory.xml |grep -i Windows-VM | grep vmx

    或者

    vim-cmd vmsvc/getallvms |grep -i Windows-VM

  6. 您还需要知道此虚拟机的虚拟磁盘位于哪里(.vmdk-flat.vmdk 文件)。默认情况下,虚拟磁盘与虚拟机配置文件(.vmx 文件)存储在同一目录中。

    要检查当前虚拟机的虚拟磁盘位置,请打开 vmx 虚拟机配置文件:

    less /vmfs/volumes/datastore10a/Windows-VM/Windows-VM.vmx

    如果虚拟磁盘存储在同一目录中(例如我们的第一个和唯一虚拟磁盘),您应该会看到类似以下的行:

    ide0:0.present = “TRUE”

    ide0:0.fileName = “Windows-VM.vmdk”

    如果虚拟磁盘(例如第二个虚拟磁盘)存储在 VM 目录之外,则应该会看到类似以下的行:

    scsi0:1.present = “true”

    scsi0:1.fileName = “/vmfs/volumes/609a545a-50d29185-ffbb-000c293004f2/directory2/SecondHardDisk.vmdk”

    如果虚拟磁盘存储在 VM 目录之外,您将在 vmx 配置文件的相应行中看到完整路径。

    现在我们知道虚拟机文件的位置,可以继续克隆虚拟机。我们将把这个 ESXi 克隆虚拟机存储在 datastore10c 上。

  7. 创建一个目录来存储虚拟机克隆的VM文件:

    mkdir /vmfs/volumes/datastore10c/Win-VM-Clone2

  8. 克隆源VM的配置文件和虚拟磁盘克隆,将虚拟磁盘克隆存储在VM克隆的目标目录中。我们为目标vmxvmdk文件设置新名称,以匹配新VM克隆的名称。
    • 您可以使用vmkfstools克隆虚拟磁盘。此工具允许您设置目标虚拟磁盘格式,并且还允许您将厚配置格式更改为精简配置

      vmkfstools -i /vmfs/volumes/datastore10a/Windows-VM/Windows-VM.vmdk /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2.vmdk -d thin

    • 复制VM配置文件(.vmx)

      cp /vmfs/volumes/datastore10a/Windows-VM/Windows-VM.vmx /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2.vmx

    • 或者,您可以使用cp命令按原样复制虚拟磁盘文件(.vmdk-flat.vmdk),并为目标文件设置新名称。

      cp /vmfs/volumes/datastore10a/Windows-VM/Windows-VM.vmdk /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2.vmdk

      cp /vmfs/volumes/datastore10a/Windows-VM/Windows-VM-flat.vmdk /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2-flat.vmdk

  9. 现在,我们需要编辑 VM 克隆的 vmx 文件,将 VM 名称和路径对齐到虚拟磁盘/虚拟磁盘名称。因此,我们需要在 VM 克隆的 vmx 配置文件中用 Win-VM-Clone2 替换 Windows-VM

    使用文本编辑器 vi 退出 VM 克隆的 vmx 文件。在 vi 中使用以下命令查找并替换整个文件中的字符串。

    :[range]s/{pattern}/{string}/[flags] [count]

    我们的情景下命令模板如下:

    :%s/foo/bar/g

    在我们的情况下,命令应该如下:

    :%s/Windows-VM/Win-VM-Clone2/g

    保存 VM 克隆的 vmx 文件。在 vi 中键入 :wq 然后按 Enter 键。

  10. 注册 ESXi 主机上的 VM 克隆:

    vim-cmd solo/registervm /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2.vmx

  11. 获取已注册的 VM 信息,确保克隆虚拟机已注册:

    vim-cmd vmsvc/getallvms

  12. VM 克隆已注册(在下方截图中显示为 VMID 3)。
  13. 现在您可以启动 VM 克隆。要在命令行中启动此 VM 克隆(VMID 为 3),您可以使用以下命令:

    vim-cmd vmsvc/power.on 3

  14. 您应该打开 VMware 主机客户端,并回答您已复制此 VM。在您回答此问题之前,VM 不会启动。

  15. 正如您在截图中看到的,VM 大小较小,因为我们克隆了源虚拟磁盘,该磁盘是粗略配置为细粒配置格式(2.76 GB 对比 6 GB)。

ESXi 克隆 VM 的创建已成功完成。您还可以使用此方法将虚拟机克隆到另一个独立的 ESXi 主机,而无需使用 vCenter Server。您需要使用 SCP 或 SFTP 客户端从/到不同的 ESXi 主机复制 VM 文件。该方法的其余逻辑保持不变。

方法 3:如何通过创建新的 VM 克隆 VM 而无需使用 vCenter

在 ESXi 主机上克隆 VM 的另一种方法是使用 VMware Host Client 而无需使用 vCenter Server。该方法的优点是您无需编辑 VM 克隆的 VMX 文件。在创建 VM 克隆时,请确保新 VM 的 VM 配置与原始 VM 的配置相同。如果新 VM 的配置与原始 VM 不同,则新 VM 可以启动。

  1. 完成新虚拟机向导的 5 个步骤以创建新的 VM。
  2. 将源 VM 的虚拟磁盘复制到 VM 克隆的 VM 目录。您可以在 VMware Host Client 的数据存储浏览器中执行此操作,类似于我们在第一个示例中所做的方式(VM 克隆方法)。
  3. 点击存储,选择源虚拟机存储的数据存储(在我们的情况下是datastore10a)。点击数据存储浏览器,选择源虚拟机的目录(在这个例子中是Windows-VM)。选择vmdk虚拟磁盘,然后点击复制

  4. 在接下来打开的窗口中选择目标目录(在我们的情况下是Win-VM-Clone3),然后点击复制

  5. 如果你的源虚拟机有多个虚拟磁盘,以同样的方式复制它们。可选择地,你可以为存储在虚拟机克隆目录中的虚拟磁盘副本重新命名,以便更方便地使用唯一的名称。
  6. 编辑虚拟机克隆的设置。从导航器进入虚拟机页面,右键点击新的虚拟机(即虚拟机克隆),然后在打开的菜单中点击编辑设置

  7. 删除使用新虚拟机创建的虚拟硬盘。在硬盘 1行的虚拟硬件选项卡中,单击X图标,位于VM设置窗口中。

  8. 选中从数据存储中删除文件复选框以确认删除虚拟硬盘。
  9. 单击保存

  10. 再次打开VM设置。
  11. 将从原始VM复制的虚拟硬盘添加到VM克隆目录中。

    单击添加硬盘 >现有硬盘

  12. 选择您之前复制到VM克隆目录的vmdk虚拟磁盘。我们在datastore10c上的Win-VM-Clone目录中选择Windows-VM.vmdk

  13. 如果您的原始VM有多个虚拟硬盘,请将它们全部添加到VM配置中。在添加虚拟磁盘后,单击保存以保存VM配置。

  14. A virtual disk has been added to our VM configuration.
  15. 打开VM克隆。
  16. A message with the question (whether a VM was copied or moved) doesn’t appear because we created this VM as a new VM.

方法4:使用vCenter进行VMware虚拟机克隆

VMware vCenter Server是用于VMware vSphere的集中管理系统,提供了比没有vCenter更方便的克隆VM的方法。您可以将VM克隆到相同的ESXi主机或由vCenter管理的另一个ESXi主机上。

要在VMware vSphere Client中使用vCenter创建克隆的虚拟机,请执行以下操作:

  1. 登录VMware vSphere Client以访问vCenter的管理Web界面。
  2. 选择主机和集群视图,在导航窗格中选择您的虚拟机。我们将克隆名为Windows-VM的虚拟机,该虚拟机位于ESXi主机192.168.101.201上。
  3. 右键单击原始虚拟机,在打开的菜单中单击克隆>克隆到虚拟机

  4. 打开克隆现有虚拟机向导,包含5个步骤。
  5. 选择名称和文件夹。输入虚拟机克隆的名称。在我们的情况下,我们选择了Win-VM-Clone4。选择一个数据中心和虚拟机文件夹来放置克隆的虚拟机。在向导的每个步骤中点击下一步以继续。

  6. 选择计算资源。选择必须运行VM克隆的ESXi主机或vSphere集群。在我们的情况下,这是ESXi主机192.168.101.201。您可以选择另一个ESXi主机来运行VM克隆,但是此主机不应与具有原始VM的主机相同。

  7. 选择存储。选择放置克隆VM的数据存储(我们选择datastore10c)。通过使用以下选项之一选择虚拟磁盘格式:
    • 与源格式相同
    • 粗粒度懒惰置零
    • 粗粒度急切置零
    • 薄配置

    您还可以选择VM存储策略。

  8. 选择克隆选项。您可以使用一些选项自定义克隆 VM,例如更改游客 OS 的主机名。

  9. 准备好完成。请检查克隆 VM 的选择参数,然后点击 完成

注意: VM 克隆具有相同 SID 可能会导致问题,特别是如果 VM 在 Active Directory 域中。您可能需要使用 SYSPREP for Windows 或第三方工具更改/重置 SID。如果 VM 上安装了 MS SQL Server,则需要在克隆前(启用 sysadmin SQL 帐户)和克隆后(更改名称)执行 MS SQL Server 的额外预操作和后操作,以避免问题。

A clone VM has been created, and you can power on the VM.

方法 5:使用 NAIVO Backup & Replication 克隆 VM

VM 重新复制是克隆 VMware ESXi 主机上的 VM 的另一种方法。 VM 副本是 VM 的精确副本,类似于 VM 克隆。 VM 重新复制的优点是能够使用解决方案自动化 VM 过程,并使用基于 VM 快照功能的解决方案在 VM 副本中保存 VM 的多个时间点状态。

NAKIVO备份与复制是一个强大的数据保护解决方案,支持备份和复制VMware vSphere虚拟机。因此,您可以在任何ESXi主机或集群上创建VM克隆(副本)。

使用NAKIVO创建VM克隆的优势在于,您可以将虚拟机从一个ESXi主机克隆到另一个,即使这些主机未由vCenter管理也可以。您可以将vCenter添加到清单中,包括所有受管理的ESXi主机,或者添加多个独立的ESXi主机。配置在用户友好的界面中进行。

使用NAKIVO解决方案的其他好处包括自动化复制和从备份复制、灵活的调度和保留选项、用于最严格RPO的实时复制,以及用于DR编排的站点恢复

要使用VM复制克隆虚拟机,请执行以下操作:

  1. 通过转到设置>清单并单击+添加项目来将ESXi主机或vCenter服务器添加到NAKIVO解决方案中。您还可以单击清单中显示的ESXi主机或vCenter以查看驻留在该资源上的VM。

  2. 作业 > + > VMware vSphere 复制作业 中创建一个新的 VMware vSphere 复制作业。

    VMware vSphere 的 Replication Job Wizard 包含 7 个步骤。

  3. 。 选择您要克隆的原始虚拟机。 我们选择 ESXi 主机 192.168.101.201 上的 Windows-VM。 单击向导的每个步骤的 下一步 继续。

  4. 目的地。 选择一个容器,可以是由 vCenter 管理的 ESXi 主机或集群,用于存储 VM 副本(此资源必须添加到 NAKIVO 库中)。 选择一个数据存储。 您可以选择连接到所选 ESXi 主机或集群的数据存储。 如果需要,选择所选资源上的 VM 文件夹。

  5. 网络。VM 副本(ESXi 克隆 VM)应连接到一个VM 网络。您可以将 VM 副本连接到所选 ESXi 主机或集群上的任何可用网络。这个功能是通过网络映射特性实现的,当您将 VM 复制到其他 ESXi 主机时尤其有用。此外,您也可以跳过此选项,将 VM 连接到默认网络。

  6. 重新 IP。如果您使用网络映射,并将 VM 连接到与源网络不同的网络,则下一步是更改 VM 网络适配器配置中的 IP 地址,使其与目标子网的寻址匹配。在完成复制后使用重新 IP功能时,无需手动编辑客户操作系统中的网络设置。
  7. 日程安排。您可以手动运行虚拟机复制,即按需进行,也可以安排虚拟机复制作业以定期创建克隆虚拟机(副本虚拟机)。

  8. 保留。您可以通过配置保留设置创建多个恢复点,并在适当的时间内保留它们。

  9. 选项。输入复制作业名称并配置可以提高虚拟机复制速度、安全性和可靠性的作业选项。单击完成并运行以保存作业设置,并运行虚拟机复制作业以使用此方法创建 VMware 虚拟机克隆。

  10. 你被重定向到工作页面,您可以在那里监视复制任务的进度。等待工作完成。

如您所见,使用NAKIVO解决方案创建VM克隆很简单。此外,NAKIVO备份与复制支持VMware VM的实时复制,用于关键VM的灾难恢复目的,这些VM需要低至1秒的严格RPO。

Source:
https://www.nakivo.com/blog/vmware-esxi-clone-vm/