什么是OVF/OVA?及转换方法
在虚拟化环境中,我们经常需要导出、分发或部署虚拟机。OVF 和 OVA 就是两种常见的虚拟机打包格式,下面来简单介绍一下它们的区别与转换方法。
OVF 与 OVA 的区别
- OVF(Open Virtualization Format,开放虚拟机格式)是一种针对虚拟设备(或允许软件运行的虚拟机)进行打包和发布的开放标准。它通常包含多个文件,例如虚拟机描述文件(.ovf)、虚拟磁盘文件(.vmdk)、BIOS 设置文件(.nvram)以及校验文件(.mf)等。
- OVA 与 OVF 的唯一区别在于,OVA 是一个单文件,它实际上是对 OVF 相关文件进行打包(tarball)后得到的归档文件。
简单来说:OVA 就是把 OVF 的多个文件“压缩”成一个文件,便于分发和传输。
转换方法
方式一:使用 ovftool
ovftool 是 VMware 提供的命令行工具,可以轻松完成 OVF 与 OVA 之间的相互转换。
将 OVF 转换成 OVA
ovftool /ovfs/my_vapp.ovf /ovfs/my_vapp.ova将 OVA 转换成 OVF
ovftool /ovfs/my_vapp.ova /ovfs/my_vapp.ovf
方式二:使用 tar 命令手动打包
通常,从 ESXi 导出的 OVF 模板会包含以下四个文件:
| 文件名 | 作用 |
|---|---|
my_vapp.ovf | 虚拟机描述文件 |
my_vapp-1.vmdk | 虚拟磁盘文件 |
my_vapp.nvram | BIOS 设置信息 |
my_vapp.mf | SHA1 校验文件(包含所有文件的校验信息) |
重要: 使用 tar 打包成 OVA 时,需要按照一定顺序添加文件:
- 第一个文件必须是
.ovf文件 - 然后是
.mf校验文件 - 最后是其他文件(如
.vmdk、.nvram等)
关于文件所有者(可选)
ovftool 打包出来的 OVA 文件,内部所有者和用户组为 someone。如果你希望使用 tar 打包出的文件也具有相同的所有者信息,可以事先创建用户并指定。
Linux 创建用户:
useradd someoneMac 查看用户 ID:
id -u someone
注意: 这并不是必须的,你可以根据实际情况决定是否指定所有者。
打包命令示例
假设当前目录下已有 *.ovf、*.mf、*.vmdk 等文件,按以下步骤打包:
创建 OVA 文件并添加
.ovf文件(作为第一个文件):tar cvf myova.ova *.ovf --owner=someone --group=someone追加
.mf、.vmdk等其他文件:tar uvf myova.ova *.mf *.vmdk --owner=someone --group=someone查看打包后的内容(可选):
tar tvf myova.ova
完成以上步骤后,myova.ova 就是一个符合规范的 OVA 文件,可以直接用于部署。