虚拟化技术通过诸如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),它有两个数据存储(datastore10a和datastore10c)。名为Windows-VM的VM位于datastore10a上。我们将克隆这个VM,并将VM克隆存储在datastore10c上。
要在没有vCenter的情况下在ESXi主机上克隆VM,请执行以下操作:
- 使用管理员帐户(root)登录到VMware Host Client。
- 在所需的数据存储上创建一个目录来存储VM克隆的文件。我们在导航器窗格中单击存储,转到datastore10c,单击创建目录,并将Win-VM-Clone作为目录名称。单击创建目录。
- 打开源虚拟机的VM设置并检查虚拟机文件的位置。为此,请转到虚拟机,选择Windows虚拟机(在导航器中),并在硬件配置窗格中展开硬盘1。
我们可以看到我们的虚拟机的虚拟硬盘位于Windows-VM目录中的datastore10a上。如果您的虚拟机有多个虚拟磁盘,请检查每个磁盘的位置。在某些自定义配置中,虚拟机的虚拟磁盘可能位于不同的位置。复制克隆虚拟机的所有虚拟磁盘非常重要。
您还可以单击编辑 VM 设置并在 VM 设置中展开硬盘部分以查看虚拟硬盘的位置。
- 关闭要克隆的虚拟机。
- 打开数据存储浏览器,转到源虚拟机的目录。要做到这一点,点击导航窗格中的存储,点击datastore10a,然后点击数据存储浏览器。然后,在数据存储浏览器中选择datastore10a上的Windows-VM目录。
- 复制源虚拟机的VMDK文件和VMX文件到虚拟机克隆的目录。首先,复制原始VM的虚拟磁盘。在数据存储浏览器中选择VMDK文件(在我们的情况下是Windows-VM.vmdk),然后点击复制。
- 在下一个窗口中选择目标目录,然后点击复制。我们选择datastore10c上的Win-VM-Clone目录。
- 如果您的原始VM具有多个虚拟磁盘,请重复以下步骤以复制VM的所有虚拟磁盘。
请注意,VMware Host Client显示.vmdk和-flat.vmdk文件为一项。您可以看到在命令行界面中每个虚拟磁盘有两个文件。一个.vmdk文件是虚拟磁盘描述符文件,-flat.vmdk是包含数据的虚拟磁盘文件。运行在VMware Workstation中的VM的虚拟磁盘与ESXi VMs相比,使用.vmdk带有嵌入式描述符的虚拟磁盘(一个文件而不是两个文件)。
- 等待文件复制完成。您可以在网页界面底部的最近任务栏中监视进度。
- 下载 VMX 文件,这是一个虚拟机配置文件,到您的计算机上。为此,请打开数据存储浏览器并转到datastore10a上的Windows-VM目录。选择.vmx文件(在我们的情况下是Windows-VM.vmx)并单击下载(您可以右键单击 .vmx 文件以打开上下文菜单并选择选项)。将所选的 VMX 文件保存到您的计算机上。
- 编辑您已经下载的 VMX 文件(在我们的情况下是Windows-VM.vmx)。您可以使用您喜欢的文本编辑器。虽然克隆的虚拟机是相同的虚拟机,但在 VMware vSphere 中有一些设置(例如 VM 名称)必须对于每个虚拟机不同,以便更方便地识别虚拟机。
- 找到以displayName开头的行。将当前的VM克隆名称更改为与原始VM的名称不同。
我们将VM名称从
displayName =“Windows-VM”
更改为
displayName =“Win-VM-Clone”
我们显示的VM名称将与存储VM克隆文件的目录名称相同。
可选:您还可以在数据存储浏览器中重命名虚拟磁盘(Windows-VM.vmdk),并在.vmx配置文件的相应行中更改值,以获得唯一的虚拟磁盘名称(例如,在我们的情况下为Win-VM-Clone.vmdk)。
- 将编辑后的 VMX 文件上传到克隆虚拟机文件所在的数据存储中(像之前那样使用数据存储浏览器)。我们选择 datastore10c/Win-VM-Clone/ 目录,然后点击 上传(在浏览器窗口中选择适当的已编辑的 VMX 文件)。
- 现在,编辑后的 VMX 文件位于虚拟机克隆的目录中(在我们的情况下是 Win-VM-Clone 在 datatore10c 中)。您可以关闭数据存储浏览器。
注意: 如果要将虚拟机克隆到另一台 ESXi 主机,则需将虚拟机配置和虚拟磁盘文件下载到您的计算机,然后将这些文件上传到目标 ESXi 主机的数据存储中。您也可以使用 SCP/SFTP 客户端从/到数据存储中下载和上传文件(例如在 Windows 中使用 WinSCP)。
- 一旦我们复制了VM文件,我们需要在ESXi主机上注册一个VM克隆。转到导航窗格中的虚拟机,然后点击创建/注册虚拟机。
- 打开新虚拟机向导。
- 选择创建类型。选择注册现有虚拟机,然后点击下一步。
- 选择要注册的VM。点击选择一个或多个虚拟机、数据存储或目录。
- 在打开的数据存储浏览器窗口中选择位于VM克隆目录中的VMX文件,然后点击选择。
- 确保在向导的第二步选择所需的VMX文件,然后点击“下一步”。
- 在“准备完成”屏幕上点击“完成”。
- VM克隆现在已注册为虚拟机,并显示在虚拟机列表中。您可以随时在VMware Host Client的Web界面中重命名VM克隆。您可以右键单击VM名称,在打开的菜单中点击“重命名”。
- 现在,您可以启动虚拟机克隆。启动虚拟机后,应该会看到屏幕截图中显示的问题。
选择我复制了它(而不是移动)。这对于为虚拟机设置新的MAC地址和通用唯一标识符(UUID)非常重要。请记住,您可能需要更改客户操作系统中的虚拟机名称和SID(对于Windows虚拟机),以避免冲突。点击回答。
虚拟机已成功克隆在ESXi主机上。
方法2:如何在ESXi命令行中克隆虚拟机。
在不使用vCenter Server的情况下,在ESXi主机上克隆虚拟机的另一种方法是使用ESXi命令行。您可以直接访问ESXi服务器上的ESXi shell,也可以通过SSH远程连接到ESXi服务器。确保SSH访问已启用。
要在命令行中创建一个不使用vCenter的VMware克隆VM:
- 使用SSH客户端连接到ESXi服务器。如果您使用Windows,可以使用PuTTY。
检查在此ESXi主机上注册的VM的列表(我们将克隆相同的Windows-VM,即上一个示例中的原始VM)。
vim-cmd vmsvc/getallvms
- 我们需要关闭要克隆的原始VM。
获取要关闭的VM的ID(VMID)以识别要关闭的哪个VM。
vim-cmd vmsvc/getallvms
我们的Windows-VM的VMID为1(请参见下面的屏幕截图)。
- 关闭虚拟机的命令是:
vim-cmd vmsvc/power.shutdown VMID
我们用这个命令来关闭我们的Windows虚拟机:
vim-cmd vmsvc/power.shutdown 1
- 检查虚拟机电源状态的命令是:
vim-cmd vmsvc/power.getstate VMID
如果无法关闭虚拟机,可以使用关机命令:
vim-cmd vmsvc/power.off VMID
- 检查该虚拟机配置文件位置的命令是:
cat /etc/vmware/hostd/vmInventory.xml |grep -i Windows-VM | grep vmx
或者
vim-cmd vmsvc/getallvms |grep -i Windows-VM
- 您还需要知道此虚拟机的虚拟磁盘位于哪里(.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 上。
- 创建一个目录来存储虚拟机克隆的VM文件:
mkdir /vmfs/volumes/datastore10c/Win-VM-Clone2
- 克隆源VM的配置文件和虚拟磁盘克隆,将虚拟磁盘克隆存储在VM克隆的目标目录中。我们为目标vmx和vmdk文件设置新名称,以匹配新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
- 您可以使用
- 现在,我们需要编辑 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 键。
- 注册 ESXi 主机上的 VM 克隆:
vim-cmd solo/registervm /vmfs/volumes/datastore10c/Win-VM-Clone2/Win-VM-Clone2.vmx
- 获取已注册的 VM 信息,确保克隆虚拟机已注册:
vim-cmd vmsvc/getallvms
- VM 克隆已注册(在下方截图中显示为 VMID 3)。
- 现在您可以启动 VM 克隆。要在命令行中启动此 VM 克隆(VMID 为 3),您可以使用以下命令:
vim-cmd vmsvc/power.on 3
- 您应该打开 VMware 主机客户端,并回答您已复制此 VM。在您回答此问题之前,VM 不会启动。
- 正如您在截图中看到的,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 可以启动。
- 完成新虚拟机向导的 5 个步骤以创建新的 VM。
- 将源 VM 的虚拟磁盘复制到 VM 克隆的 VM 目录。您可以在 VMware Host Client 的数据存储浏览器中执行此操作,类似于我们在第一个示例中所做的方式(VM 克隆方法)。
- 点击存储,选择源虚拟机存储的数据存储(在我们的情况下是datastore10a)。点击数据存储浏览器,选择源虚拟机的目录(在这个例子中是Windows-VM)。选择vmdk虚拟磁盘,然后点击复制。
- 在接下来打开的窗口中选择目标目录(在我们的情况下是Win-VM-Clone3),然后点击复制。
- 如果你的源虚拟机有多个虚拟磁盘,以同样的方式复制它们。可选择地,你可以为存储在虚拟机克隆目录中的虚拟磁盘副本重新命名,以便更方便地使用唯一的名称。
- 编辑虚拟机克隆的设置。从导航器进入虚拟机页面,右键点击新的虚拟机(即虚拟机克隆),然后在打开的菜单中点击编辑设置。
- 删除使用新虚拟机创建的虚拟硬盘。在硬盘 1行的虚拟硬件选项卡中,单击X图标,位于VM设置窗口中。
- 选中从数据存储中删除文件复选框以确认删除虚拟硬盘。
- 单击保存。
- 再次打开VM设置。
- 将从原始VM复制的虚拟硬盘添加到VM克隆目录中。
单击添加硬盘 >现有硬盘。
- 选择您之前复制到VM克隆目录的vmdk虚拟磁盘。我们在datastore10c上的Win-VM-Clone目录中选择Windows-VM.vmdk。
- 如果您的原始VM有多个虚拟硬盘,请将它们全部添加到VM配置中。在添加虚拟磁盘后,单击保存以保存VM配置。
- A virtual disk has been added to our VM configuration.
- 打开VM克隆。
- 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创建克隆的虚拟机,请执行以下操作:
- 登录VMware vSphere Client以访问vCenter的管理Web界面。
- 选择主机和集群视图,在导航窗格中选择您的虚拟机。我们将克隆名为Windows-VM的虚拟机,该虚拟机位于ESXi主机192.168.101.201上。
- 右键单击原始虚拟机,在打开的菜单中单击克隆>克隆到虚拟机。
- 打开克隆现有虚拟机向导,包含5个步骤。
- 选择名称和文件夹。输入虚拟机克隆的名称。在我们的情况下,我们选择了Win-VM-Clone4。选择一个数据中心和虚拟机文件夹来放置克隆的虚拟机。在向导的每个步骤中点击下一步以继续。
- 选择计算资源。选择必须运行VM克隆的ESXi主机或vSphere集群。在我们的情况下,这是ESXi主机192.168.101.201。您可以选择另一个ESXi主机来运行VM克隆,但是此主机不应与具有原始VM的主机相同。
- 选择存储。选择放置克隆VM的数据存储(我们选择datastore10c)。通过使用以下选项之一选择虚拟磁盘格式:
- 与源格式相同
- 粗粒度懒惰置零
- 粗粒度急切置零
- 薄配置
您还可以选择VM存储策略。
- 选择克隆选项。您可以使用一些选项自定义克隆 VM,例如更改游客 OS 的主机名。
- 准备好完成。请检查克隆 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复制克隆虚拟机,请执行以下操作:
- 通过转到设置>清单并单击+添加项目来将ESXi主机或vCenter服务器添加到NAKIVO解决方案中。您还可以单击清单中显示的ESXi主机或vCenter以查看驻留在该资源上的VM。
- 在作业 > + > VMware vSphere 复制作业 中创建一个新的 VMware vSphere 复制作业。
新 VMware vSphere 的 Replication Job Wizard 包含 7 个步骤。
- 源。 选择您要克隆的原始虚拟机。 我们选择 ESXi 主机 192.168.101.201 上的 Windows-VM。 单击向导的每个步骤的 下一步 继续。
- 目的地。 选择一个容器,可以是由 vCenter 管理的 ESXi 主机或集群,用于存储 VM 副本(此资源必须添加到 NAKIVO 库中)。 选择一个数据存储。 您可以选择连接到所选 ESXi 主机或集群的数据存储。 如果需要,选择所选资源上的 VM 文件夹。
- 网络。VM 副本(ESXi 克隆 VM)应连接到一个VM 网络。您可以将 VM 副本连接到所选 ESXi 主机或集群上的任何可用网络。这个功能是通过网络映射特性实现的,当您将 VM 复制到其他 ESXi 主机时尤其有用。此外,您也可以跳过此选项,将 VM 连接到默认网络。
- 重新 IP。如果您使用网络映射,并将 VM 连接到与源网络不同的网络,则下一步是更改 VM 网络适配器配置中的 IP 地址,使其与目标子网的寻址匹配。在完成复制后使用重新 IP功能时,无需手动编辑客户操作系统中的网络设置。
- 日程安排。您可以手动运行虚拟机复制,即按需进行,也可以安排虚拟机复制作业以定期创建克隆虚拟机(副本虚拟机)。
- 保留。您可以通过配置保留设置创建多个恢复点,并在适当的时间内保留它们。
- 选项。输入复制作业名称并配置可以提高虚拟机复制速度、安全性和可靠性的作业选项。单击完成并运行以保存作业设置,并运行虚拟机复制作业以使用此方法创建 VMware 虚拟机克隆。
- 你被重定向到工作页面,您可以在那里监视复制任务的进度。等待工作完成。
如您所见,使用NAKIVO解决方案创建VM克隆很简单。此外,NAKIVO备份与复制支持VMware VM的实时复制,用于关键VM的灾难恢复目的,这些VM需要低至1秒的严格RPO。