用于分发的 .OVA 文件压缩

use*_*007 6 compression virtualbox virtualization 7-zip

我创建了一个具有 4.7 GB 虚拟硬盘 (.vmdk) 的虚拟机。我导出到 .ova 版本 1.0 并获得了一个 1.7 GB 的文件,我可以使用 7zip 将其压缩另外 200 mb。因此带有 OVA 的 7zip 存档大小为 1.5 GB。

7.直接压缩 vm 文件,文件大小为 1.1 GB。这是一个理想的大小,我想知道是否有人知道如何增加 ova 文件的压缩或手动创建 ova 文件。我使用的是 virtual box,但也有 vmware。这是我在 7zip 上运行的命令。

 7z a -t7z vm.7z -m0=lzma2 -mx=9 -aoa vm.ova
Run Code Online (Sandbox Code Playgroud)

我在 vm 文件夹内运行相同的命令,但没有 vm.ova 来获取 1.1 GB 文件。我的目标是文件大小最小,并且可以在 vmware 和 virtualbox 中轻松使用,导入到 qemu、hyper-v 和 vshere 是一个优点。

use*_*007 6

根据规范,文件.ova只是一个 tar 文件。ova 文件中有一个.vmdk保存虚拟磁盘的文件和一个.ovf保存配置的文件。OVF 是一个跨平台的标准。

创建ova文件后,使用tar提取ovf和vmdk

tar xvf appliance.ova
Run Code Online (Sandbox Code Playgroud)

如果需要,请删除 ova 文件或将其移至其他位置。

此时 vmdk 文件已经被压缩,因此直接对这两个文件运行 7zip 不会减少太多压缩量。

删除 .vmdk 文件并获取制作设备之前的原始未压缩 vmdk 文件。检查您的.ovf文件 ( xml) 以确保文件名匹配。找到像这样开头的xml元素

<File ovf:href="diskname.vmdk" ovf:id="file1" />
Run Code Online (Sandbox Code Playgroud)

在这种情况下,未压缩的 vmdk 文件应命名(或重命名,如果需要)为 diskname.vmdk

.ovf现在在包含 2 个文件(和)的目录中运行此 7zip 命令.vmdk

7z a -t7z appliance.7z -m0=lzma2 -mx=9 -aoa
Run Code Online (Sandbox Code Playgroud)

您的.7z文件现在可以以我能达到的最小文件大小进行分发。

要运行该设备,只需提取文件并将.ovf文件导入 VirtualBox、VMware 或任何其他可以导入设备的虚拟化解决方案。只要这两个文件位于同一目录中,它就应该导入并运行良好。