9

我正在尝试使用 OVFTool 将 VMX 转换为 OVF 格式,如下所示,但是它给出了错误:

C:\Program Files\VMware\VMware OVF Tool>ovftool.exe
vi://vcenter.com:port/folder/myfolder/abc.vmx abc.ovf
Error: Failed to open file: https://vcenter.com:port/folder/myfolder/abc.vmx
Completed with errors

如果您有任何解决方案,请告诉我。

4

8 回答 8

8

我在尝试使用可能在 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
于 2017-01-11T02:30:07.030 回答
7

我在尝试导出为 OVF 格式时遇到了类似的问题。

Export failed: Failed to open file: C:\Virtual\test\test.vmx.

首先,我在编辑器中打开 .VMX 文件(它是一个文本文件)并确保设置如下

scsi0:0.fileName = "test.vmdk"
nvram = "test.nvram"
extendedConfigFile = "test.vmxf"

提及正确的文件名。然后我注意到了这一行:

.encoding = "windows-1251"

这是西里尔语代码页,所以我将其修改为使用西方代码页

.encoding = "windows-1252"

然后,运行 OVFTool 给出了不同的错误

Export failed: Failed to open disk: test.vmdk.

要修复它,我必须在 HEX 编辑器中打开 .VMDK 文件(因为它通常是一个大的二进制文件),在那里找到了字符串

encoding = "windows-1251"

(它在文件开头的某个地方),并将“1251”替换为“1252”。

它成功了!

于 2016-03-18T20:45:06.713 回答
2

就我而言,在将“abc.vmx”转换为“abc.ovf”之前需要修复磁盘“abc.vmdk”。

将此用于 Linux:

$ /usr/bin/vmware-vdiskmanager -R /home/user/VMware/abc.vmdk

查看此链接https://kb.vmware.com/s/article/2019259以了解 Windows 和 Linux 中已解决的问题

于 2018-10-03T13:25:45.017 回答
1

尝试如下所述运行。

C:\Program Files\VMware\VMware OVF Tool>ovftool C:\Win-Test\Win-Test.vmx(您的 vmx 文件的位置) C:\Win-Test\win-test.ovf(目标)

于 2015-07-07T20:30:33.857 回答
1

也许ovftool无法识别您提供的路径。

尝试使用以下命令:

ovftool --eula@=[path to eula] --X:logToConsole --targetType=OVA --compress=9 vi://[username]:[ESX address] [target address]

提供 ESX 地址后,它将列出您在 ESX 框中创建的文件夹。然后您可以通过附加文件夹名称再次触发上述命令。

如果您的框中没有文件夹层次结构,那么它只会列出虚拟机名称。

重试相同的命令追加[foldername]/[vmname no vmx file name required]

ovftool --eula@=[path to eula] --X:logToConsole --targetType=OVA --compress=9 vi://[username]:[ESX address]/[foldername if exist]/[vmname no vmx file name required] [target address]
于 2015-09-20T17:41:00.327 回答
0

我有同样的问题。在我的例子中,我打开了 VMX 文件并从文件中删除了 IDE 和声音控制器并保存了。然后,我能够使用该工具和标准语法将所有内容转换为 OVA。

例如我放弃了:

ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-image"

和:

sound.present = "TRUE"
sound.fileName = "-1"
sound.autodetect = "TRUE"

这使我可以像往常一样转换文件。

于 2018-02-16T02:06:08.393 回答
0

就我而言,这有效:

ide1:0.present = "TRUE"

ide1:0.deviceType = "cdrom-image"

我确实更改truefalse并且工作正常,因为cdrom-image不存在,此更改允许格式转换。

于 2019-03-19T14:36:27.987 回答
0

对我来说,打开 .vmx 并删除以下行是有效的:

sata0:1.deviceType = "cdrom-image"
于 2018-03-15T09:11:58.300 回答