.OVA 文件压缩以供分发

.OVA 文件压缩以供分发

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

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

 7z a -t7z vm.7z -m0=lzma2 -mx=9 -aoa vm.ova

我在 vm 文件夹中运行相同的命令(没有 vm.ova)以获取 1.1 GB 的文件。我的目标是文件大小最小,并且易于在 vmware 和 virtualbox 中使用,导入到 qemu、hyper-v 和 vshere 是加分项。

答案1

.ova根据规范,文件只是一个 tar 文件。ova 文件中有一个文件.vmdk包含虚拟磁盘,还有一个.ovf文件包含配置。OVF 是一种跨平台工作的标准。

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

tar xvf appliance.ova

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

此时 vmdk 文件已经被压缩,因此直接在这两个文件上运行 7zip 不会降低压缩率。

删除 .vmdk 文件并获取创建设备之前的原始未压缩 vmdk 文件。检查文件.ovf( xml) 以确保文件名匹配。找到以如下格式开头的 xml 元素

<File ovf:href="diskname.vmdk" ovf:id="file1" />

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

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

7z a -t7z appliance.7z -m0=lzma2 -mx=9 -aoa

.7z现在,我就可以以我能实现的最小文件大小来分发您的文件。

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

答案2

我们发现,归零并从 VirtualBox 重新导出会大大减少 ova 的磁盘空间。从 8.5 GB 变为 3 GB。

  1. 按照这些说明的第 2 步操作(https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/
  2. 从 VirtualBox GUI 导出了新的 OVA。(我在 MacBook 上使用 5.1.26 r117224 (Qt5.6.2)。

希望有所帮助。

相关内容