我正在寻找一个解决没有可用 vCenter 的 VMware ESXi 环境问题的好的解决方案。
在保持 VMDK 精简配置的同时,将虚拟机从一个数据存储移动到另一个数据存储在单个 ESXi 主机上的最佳方法是什么?
这是一台独立服务器,已扩展了另一个驱动器阵列/数据存储。我想将旧阵列中包含的数据移动到新阵列。
编辑:目标数据存储大小实际上小于源。我没有足够的空间来复制厚文件。
答案1
您也可以使用文件 -> 导出 -> 导出 OVF 模板
然后导入。上次我尝试时,我认为这确实保留了 vmdk 格式。现在不太确定,因为已经过去了很长时间。
答案2
刚刚自己找到了一种方法来做到这一点。以下是一份易于遵循的指南,介绍如何将您的虚拟机移动到新的数据存储区,同时在传输过程中保留精简配置(从而减少传输时间):
在 CLI 中使用 vmkfstools 的分步指南
- 关闭虚拟机
- (选修的)如果需要的话,合并快照。
- 从 vCenter 清单中删除虚拟机
- 右键单击虚拟机,然后单击“从库存中移除”
- 在 ESXi 计算机上启用 SSH
- 在 vSphere 客户端中,转到:配置 -> 安全配置文件 -> 属性(服务旁边)-> SSH(在列表中)-> 选项 -> 开始
- 以 root 身份通过 SSH 登录
- 在目标数据存储上准备目录
mkdir "/vmfs/volumes/destination_datastore/Some VM"
- 使用精简配置克隆 .vmdk 文件
vmkfstools -i "/vmfs/volumes/source_datastore/Some VM/Some VM.vmdk" -d thin "/vmfs/volumes/destination_datastore/Some VM/Some VM.vmdk"
- 复制所有剩余文件(避免覆盖 .vmdk 文件)
find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep -v ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
- 如果您在步骤2中没有合并快照,则可能存在快照.vmdk增量文件,我们还需要复制这些文件(这可能需要一些时间):
find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789] | grep ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
- 完成克隆和复制所有必要文件后,将虚拟机从新数据存储添加回库存
- 在 vSphere 客户端中,转到:配置->存储->数据浏览器,右键单击您将虚拟机移动到的目标数据存储,然后单击“浏览数据存储”。
- 浏览到您的虚拟机并右键单击.vmx文件,然后点击“添加到库存”
- 启动虚拟机以查看它是否正常工作,当被问到您是否复制或移动它时,只需回答您复制了它。(我不确定这是什么意思,但我认为它至少与更改 vNIC 的 MAC 地址有关。)
- 如果虚拟机启动正常,则可以从旧数据存储中删除该虚拟机。
rm -rf "/vmfs/volumes/source_datastore/Some VM"
注意:仅使用 ESXi 5 进行测试
插图厚颜无耻地抄袭自这个博客。
答案3
查看这个答案同样的逻辑也适用于你的情况,即以下引文:
它被称为“转换器”,但实际上应该被称为“全功能操作系统数据移动器”。不过,这个名字不太好听。
唯一的区别是源主机和目标主机相同,但数据存储不同。这意味着文件将从 ESXi 主机传输到 Converter 计算机,然后再返回主机。如果 Converter 很“聪明”,知道这是同一台主机,那就太好了。不幸的是,这需要花钱。
警告:转换虚拟机将为任何网络适配器生成新的 MAC 地址。大多数客户操作系统将其解释为新设备。
答案4
我将复制该文件然后通过 vmkfstools 将其重新转换为精简版。