我在尝试使用可能在 Windows 上创建的 .vmx 的 vmware fusion 中遇到了类似的情况。我可以启动虚拟机,但任何使用 ovftool 导出机器或使用 vmware-vdiskmanager 的尝试都被以下命令轰炸:
Error: Failed to open disk: source.vmdk
Completed with errors
磁盘名完全有效,路径有效,权限有效,唯一的线索是运行 ovftool:
ovftool --X:logToConsole --X:logLevel=verbose source.vmx dest.ova
Opening VMX source: source.vmx
verbose -[10C2513C0] Opening source
verbose -[10C2513C0] Failed to open disk: ./source.vmdk
verbose -[10C2513C0] Exception: Failed to open disk: source.vmdk. Reason: Disk encoding error
Error: Failed to open disk: source.vmdk
正如其他人所建议的那样,我查看了 .vmdk。在其中我发现了其他 3 条线索:
encoding="windows-1252"
createType="monolithicSparse"
# Extent description
RW 16777216 SPARSE "source.vmdk"
所以首先我将 monolithicSparse vmdk 转换为“预先分配的虚拟磁盘拆分为 2GB 文件”:
vmware-vdiskmanager -r source.vmdk -t3 foo.vmdk
然后我可以编辑“foo.vmdk”来更改编码,现在看起来像:
encoding="utf-8"
createType="twoGbMaxExtentFlat"
# Extent description
RW 8323072 FLAT "foo-f001.vmdk" 0
RW 8323072 FLAT "foo-f002.vmdk" 0
RW 131072 FLAT "foo-f003.vmdk" 0
最后,在修复 source.vmx 之后:
scsi0:0.fileName = "foo.vmdk"
利润:
ovftool source.vmx dest.ova
...
Opening VMX source: source.vmx
Opening OVA target: dest.ova
Writing OVA package: dest.ova
Transfer Completed
Completed successfully