5.

OVA / OVF とは | 仮想アプライアンス配布形式 / DMTF 標準

編集
この記事の要点
  • OVF(Open Virtualization Format)は DMTF が標準化した仮想アプライアンス記述形式。VM の構成(CPU、メモリ、NW、ディスク)を XML で記述する
  • OVA(Open Virtual Appliance)は OVF 一式を 1 つの TAR アーカイブ にまとめた配布用ファイル。.ovf + .mf(マニフェスト/ハッシュ)+ .vmdk 等のディスクを含む
  • ベンダ中立。VMware(vSphere / Workstation / Fusion)・VirtualBox・Hyper-V・Proxmox など主要ハイパーバイザがインポート対応
  • 仮想アプライアンス(ファイアウォール、NAS、サンドボックスなど)の 配布フォーマットの標準。VMware Marketplace、Bitnami、TurnKey Linux などが OVA で配布
  • OVF の XML には CPU 数、メモリサイズ、NIC、ディスク、起動順、ライセンス文言、製品情報(バージョン・URL)などを宣言的に記述
  • tar tvf foo.ova で中身を確認可能。OVF / マニフェスト / VMDK 等が並んでいる
  • バージョン: OVF 1.0(2008)→ 1.1 → 2.0(2013)。現在は 2.x が主流。VMware は独自拡張(vmw:ExtraConfig 等)を追加して使う

概要

OVF(Open Virtualization Format)と OVA(Open Virtual Appliance / Open Virtualization Archive)は、仮想マシンや仮想アプライアンスをハイパーバイザ間で移送するための標準フォーマット です。DMTF(Distributed Management Task Force)が 2008 年に OVF 1.0 を策定し、現在は OVF 2.x が広く使われています。VMware、Microsoft、IBM、HP、Cisco、Citrix、Dell など主要ベンダの合意で生まれたオープン規格で、ANSI/INCITS および ISO/IEC 17203 として国際標準化もされています。

OVF と OVA の関係は次の通りです。

  • OVF.ovf)は XML 形式の記述ファイル 単体を指します。VM 構成(CPU、メモリ、NIC、ディスクサイズ、ブート順など)が宣言的に書かれており、実体のディスクファイル(VMDK 等)は OVF と 同じディレクトリに別ファイル として並ぶのが原則
  • OVA.ova)は OVF + マニフェスト(.mf)+ ディスクファイル + 証明書(任意)を 1 つの TAR アーカイブにまとめた配布用ファイル。圧縮はされない、純粋な TAR

OVA の方が配布が楽(ファイル 1 個で済む)ため、配布形態としては OVA、内部解析するときは OVF を抜き出して見る、という使い分けになります。

用途として代表的なのは 仮想アプライアンスの配布 です。pfSense、OPNsense、FortiGate-VM、Bitnami の各種ソフトウェアスタック、TurnKey Linux、Security Onion、Nessus、F5 BIG-IP の評価版など、「仮想マシンとして配る OS + アプリ」の配布形式は OVA がデファクトです。ユーザは vSphere / VirtualBox / Workstation 等にインポートするだけで即座にアプライアンスが起動できます。

内部構造

OVA を tar tvf で展開すると典型的には次のようなファイルが入っています。

$ tar tvf appliance.ova
-rw-r--r-- 0/0    8531  appliance.ovf
-rw-r--r-- 0/0     128  appliance.mf
-rw-r--r-- 0/0 1234567  appliance-disk1.vmdk
-rw-r--r-- 0/0     512  appliance.cert   (任意)
ファイル役割
*.ovfVM の構成記述(XML)
*.mfマニフェスト。各ファイルの SHA-256 ハッシュをテキストで列挙
*-diskN.vmdk仮想ディスクの実体(VMDK が一般的、VHD/VHDX も可)
*.cert署名証明書(OVA の署名検証に使用、任意)

OVF の XML には以下のような要素が含まれます(実物の OVF を簡略化したサンプル)。

<Envelope xmlns="http://schemas.dmtf.org/ovf/envelope/1">
  <References>
    <File ovf:id="file1" ovf:href="appliance-disk1.vmdk" ovf:size="1234567"/>
  </References>
  <DiskSection>
    <Disk ovf:diskId="vmdisk1" ovf:capacity="20"
          ovf:capacityAllocationUnits="byte * 2^30"
          ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html"
          ovf:fileRef="file1"/>
  </DiskSection>
  <VirtualSystem ovf:id="appliance">
    <Name>My Appliance</Name>
    <OperatingSystemSection ovf:id="94">
      <Info>Ubuntu Linux 64-bit</Info>
    </OperatingSystemSection>
    <VirtualHardwareSection>
      <Item><rasd:Description>Number of CPUs</rasd:Description>
            <rasd:VirtualQuantity>2</rasd:VirtualQuantity></Item>
      <Item><rasd:Description>Memory MB</rasd:Description>
            <rasd:VirtualQuantity>4096</rasd:VirtualQuantity></Item>
    </VirtualHardwareSection>
  </VirtualSystem>
</Envelope>

マニフェスト(.mf)は単純なテキストで、SHA-256 ハッシュ値が列挙されています。改ざんや破損の検出に使われます。

主な用途

  • 仮想アプライアンスの配布 — ベンダがファイアウォール・ロードバランサ・WAF・NAS などを「OS + アプリ込みの VM」として配る
  • ハイパーバイザ間の VM 移行 — VMware → VirtualBox、Hyper-V → VMware など、エクスポート/インポートの中間形式
  • 評価版ソフトウェアの配布 — 「ダブルクリック → インポート → 起動」だけで触れる手軽さ
  • 研究・トレーニング環境の配布 — 大学・カンファレンスのハンズオン教材を OVA で配ると環境差を排除できる
  • VMware Marketplace / Bitnami / TurnKey Linux など各種カタログサイトの標準フォーマット
  • クラウド ↔ オンプレ間の VM 移送 — VMware Cloud / AWS の VM Import など

関連形式との比較

形式性質主な対応
OVA / OVFVM 構成 + ディスクの配布パッケージ(標準)VMware / VirtualBox / Hyper-V / Proxmox / KVM
VMX + VMDKVMware 独自の VM 設定 + ディスクVMware Workstation / Fusion / ESXi
.vbox + VDIVirtualBox 独自の VM 設定 + ディスクVirtualBox
.xml + VHDXHyper-V の VM 設定 + 仮想ディスクHyper-V
Vagrant BoxVagrant が使う独自パッケージ(中身は OVF + 設定)Vagrant
Docker imageコンテナイメージ。VM ではなくプロセス分離Docker / OCI

OVA はベンダ中立であり、1 ファイルで配布でき、署名・ハッシュ検証もできるため、配布フォーマットとして圧倒的に普及しています。コンテナ時代になっても「OS まるごと」を配るニーズには引き続き OVA が使われます。

コマンド・ツール

VMware OVF Tool(公式 CLI):

# OVA から VMware ESXi にデプロイ
ovftool appliance.ova vi://root@esxi.example.com/

# 既存 VM を OVA としてエクスポート
ovftool vi://root@esxi.example.com/MyVM ./MyVM.ova

# 検証だけ(ハッシュ・スキーマ)
ovftool --schemaValidate appliance.ova

VirtualBox CLI:

# インポート
VBoxManage import appliance.ova

# エクスポート
VBoxManage export "MyVM" -o MyVM.ova --manifest

OVA の中身を覗く(TAR なので普通の tar コマンドで OK):

tar tvf appliance.ova        # 一覧
tar xvf appliance.ova        # 展開
cat appliance.mf             # ハッシュ値確認
xmllint --format appliance.ovf | less   # OVF を整形して閲覧

注意点

  • ハイパーバイザ間互換は「ほぼ」標準だが、完璧ではない。VMware が独自拡張(vmw: 名前空間)を使った OVF は VirtualBox では一部の設定が無視される。インポート後に CPU/NIC/SCSI コントローラの設定確認が必要
  • OVA は TAR なので圧縮されていない。配布前後でディスク容量に注意。中身の VMDK は streamOptimized(圧縮済み)で配ることが多い
  • マニフェスト(.mf)のハッシュが合わないとインポート時にエラー。OVA を再パックする場合は マニフェストも再生成 する必要がある(ovftool なら自動)
  • OVF 1.0 と 2.0 で記述方法に違いがある。古い 1.0 は対応必須、2.0 への移行は徐々に進行中
  • 署名付き OVA を改変するとシグネチャが無効になる。ベンダ提供 OVA はそのまま使うのが原則
  • VirtIO ドライバなど準仮想化ドライバが含まれない OVA を別ハイパーバイザにインポートすると、性能が出ない / 起動しないことがある。インポート後にドライバ追加を検討
  • 仮想 TPM(vTPM)や Secure Boot 設定など、ハイパーバイザ依存度の高い機能は OVA 経由で完全に再現できないことがある

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ISO(.iso)
  2. IMG(.img)
  3. VHD / VHDX(.vhd / .vhdx)
  4. QCOW2(.qcow2)
  5. OVA / OVF(.ova / .ovf)
  6. PEM(.pem)
  7. CRT / CER / DER(.crt / .cer / .der)
  8. PFX / P12(.pfx / .p12)
  9. PCAP / PCAPNG(.pcap / .pcapng)
  10. DMP / コアダンプ(.dmp / .core)

最近更新/作成されたページ