我创建了一个虚拟机,它有一个 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
现在,我就可以以我能实现的最小文件大小来分发您的文件。
要运行该设备,只需提取文件并将文件导入.ovf
VirtualBox、VMware 或任何其他可以导入设备的虚拟化解决方案。只要两个文件位于同一目录中,它就应该可以导入并正常运行。
答案2
我们发现,归零并从 VirtualBox 重新导出会大大减少 ova 的磁盘空间。从 8.5 GB 变为 3 GB。
- 按照这些说明的第 2 步操作(https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/)
- 从 VirtualBox GUI 导出了新的 OVA。(我在 MacBook 上使用 5.1.26 r117224 (Qt5.6.2)。
希望有所帮助。