ad1

2021年6月24日木曜日

仮想マシンの OVF・OVA エクスポートと仮想ディスク形式

先日 VMTN に仮想マシン、仮想ディスクのバックアップ・リストア時のディスクタイプの挙動について質問があり、久しぶりに OVF / OVA への仮想マシンエクスポート・インポートの挙動を試したのでその覚え書き。

OVF (Open Virtualization Format) / OVA (Open Virtualization Format Archive)

OVF (Open Virtualization Format) は DMTF (Distributed Management Task Force) で規格化された仮想化環境共通の仮想マシンテンプレート形式みたいなものです。
※ 異なる仮想化環境間での仮想マシンの動作互換性を保証するものではありません。

OVF (Open Virtualization Format) は vSphere 環境では以下のファイルで構成されます。

  • .ovf ファイル : 仮想マシンの構成情報、仮想ハードウェア情報などが xml 形式で記載されたファイル
  • .mf ファイル : マニュフェス。各ファイルの SHA ダイジェスト値が記載されたファイル
  • .vmdk ファイル : 仮想ディスク。vSphere ESXi 環境だと VMDK ファイルですが、他の Hypervisor 環境では別形式の場合もあります
  • .nvram ファイル : vSphere ESXi 環境では vSphere 6.7 以降に含まれます。.nvram ファイルが含まれていると 6.5 以前の環境へのインポートに失敗するので、その際は次の KB を参照の上、ファイルの修正をしてください <https://kb.vmware.com/s/article/67724?lang=ja>
OVA (Open Virtualization Format Archive) は上記の OVF の各ファイルを tar で1つに固めたものになり、拡張子は .ova です。
OVA の方が単一ファイルで管理可能で運用が楽なのでお勧めします。

OVF / OVA 形式での仮想マシン・仮想ディスク (vDisk) のエクスポート方法・インポート方法

仮想マシンを起動した状態でバックアップするのであれば、3rd Party のバックアップソフトを使って VADP バックアップを取得する方法や、vSphere Replication や外部ストレージのレプリケーション機能で筐体間コピーする方法がありますが、
今回は無償で利用できる OVF / OVA 形式でエクスポートする方法です。

OVF / OVA 形式でエクスポートするためには対象の仮想マシンは事前にシャットダウン状態 (パワーオフ) にします。 

OVF / OVA 形式に仮想マシン・仮想ディスクをエクスポート・インポートするための以下 4つの方法を紹介します。

  1. vSphere Client (Host Client) を利用する
  2. OVFTool を利用する
  3. PowerCLI を利用する
  4. vCenter Converter Standalone を利用する
それぞれに特徴があり使い易さや機能が異なり、特にインポート時に Thin / Thick など選べる仮想ディスクが異なるものがありますので参考にして頂ければ幸いです。

vSphere Client (Host Client) を利用する

vCenter 管理下の環境では Web ブラウザ経由で vSphere Client、ESXi ホストのスタンドアロン環境では Host Client を利用して仮想マシンを OVF へのエクスポートOVF / OVA のインポートが行えます。
対象の仮想マシンを選択し"アクション" または 右クリックメニュー > テンプレート > OVF テンプレートのエクスポート を選びます。

エクスポート時のオプションで、元の仮想マシンの UUID や MAC アドレスを引き継ぐこともオプションで選択できます。

Host Client を利用したエクスポート

vCenter で管理されないスタンドアロン ESXi 環境では Host Client を利用します。
対象の仮想マシンを選び、"アクション" または 右クリックメニュー > エクスポート を選びます。




ダウンロードが始まらない時はポップアップブロックを解除

ダウンロードが始まらない時はブラウザのポップアップブロックが悪さをしている場合があるので、それぞれのブラウザの URL 欄あたりの警告を解除してください。


vSphere Client (Host Client) を利用する際の注意点

vSphere を利用する環境なら当たり前に使える vSphere Client 等を利用できるので非常に簡易ですが、現在の vSphere Web Client / Host Client ではエクスポートする際は OVF 形式のみとなり、複数のファイルがバラバラと出力されます。
OVA 形式で固めてエクスポートしたい場合は OVFTool、PowerCLI 等を利用します。

また、vSphere Client / Host Client を利用した場合、ファイルサイズが数 10GB を超える大容量の場合、一定時間経過でログオフされてしまったり、タイムアウトするなどで失敗してしまう事があります。
Host Client のタイムアウトを無効にする事で回避も可能ですが、これらの問題も OVFTool や PowerCLI を使えば回避できて確実なので、特にエクスポートに関してはCLI ツールで実行する事をお勧めします。

Host Cliet でタイムアウトをオフにする方法

タイムアウトをオフにするには右上のユーザー名をクリック、設定 > アプリケーションのタイムアウト > オフ と辿り設定します。


vSphere Client / Host Client を利用した OVF / OVA のインポート

vSphere Client を利用した OVF テンプレートのインポートは簡単なので詳細は省略します。

注意点として、Host Client を利用して OVF をインポートする場合は vCenter 管理下のままだとインポートが出来ないので vSphere Client を利用するか、いったん vCenter との接続を切断します。


また、vSphere Client を利用する際は、仮想ディスクのプロビジョニング方式を Thick Lazy / Thick Eager / Thin の 3種類から選べますが、Host Client の場合は Thin / Thick のどちらかしか選べず、Thick は Lazy で展開されます。

Thick Eager Zeroed でデプロイしたい場合は、vSphere Client を利用するか OVFTool を利用します。

Host Client だと Thin / Thick (Lazy) の2択

vSphere Client なら Thick Lazy / Thick Eager / Thin の3択

OVFTool を利用する

OVFTool は仮想マシンテンプレートのエクスポート、インポートを行ったり、OVF を OVA に固めるなど様々ンオプションが利用可能で、ブラウザを利用した vSphere Client 等を利用する場合と比べかなり高機能なツールです。
無償の vSphere Hypervisor でも利用できるので自宅 Lab のバックアップ用途にも使えます。

入手方法は VMware Customer Connect (旧 My VMware) から無償でダウンロードできますので、Windows / Mac / Linux など環境に合わせたバイナリをダウンロード、インストールします。

OVFTool を利用したエクスポート

使い方は上記のユーザーガイドを参照するか、--help を付加して OVFTool を実行すれば各種オプションの使い方が参照可能です。

ovftool --help 

基本の書式は以下の形式。仮想マシンをエクスポートする場合は <source locator> が vSphere 上の仮想マシン、<target locator> がエクスポート先のフォルダ、ファイル名です。
    ovftool <options> <source locator> <target locator>
	
例えば 192.168.1.110 の ESXi から TestVM という仮想マシンを C:\temp\OVF\TestVM.ovf にエクスポートする場合は以下の様になります。

ovftool.exe --noImageFiles --acceptAllEulas --noSSLVerify  vi://<User>:<Password>@<ESXi>/<VMName>  <FilePath>\<FileName>.<ovf or ova>
    
ovftool.exe --noImageFiles --acceptAllEulas --noSSLVerify  vi://root:Password@192.168.1.110/TestVM  C:\temp\OVF\TestVM.ovf
 

出力形式を .ovf とすれば OVF として複数ファイルがエクスポートされ、 .ova とすれば tar で固められた OVA ファイルが1つエクスポートされます。

ファイルの指定方法、vSphere 環境の仮想マシンの指定方法、その他オプションについては以下を参照ください。
ESXi からエクスポートするときの指定は簡単ですが、vCenter 経由での指定時は仮想マシンのインベントリパスの指定方法が初見だとわかりにくいと思うのでユーザーガイドの vSphere Locators を参照してください。

OVFTool を利用したインポート

基本的にエクスポートの時と <source locator> <target locator> が入れ替わる形です。

ovftool.exe --datastore=<DataStore> --network=<PortGroup> --acceptAllEulas --noSSLVerify --diskMode=<DiskType> --name=<VMName>  <FilePath>\<FileName>.<ovf or ova>  vi://<User>:<Password>@<ESXi>/<VMName>

ovftool.exe --datastore="datastore" --network="VM Network" --acceptAllEulas --noSSLVerify --diskMode=eagerZeroedThick --name=TestVM2  C:\temp\OVF\TestVM.ovf  vi://root:Password@192.168.1.110
 

仮想ディスクのタイプは --diskMode オプションを利用します。
基本は --diskMode eagerZeroedThick / thick / thin で指定します。指定なしの場合の規定値は thick (lazyZeroedThick) になります。

※ Host Client を利用したインポートと同じく、ESXi が vCenter 管理下にあると ESXi に直接インポートするとエラーとなるので、vCenter 経由でインポートするか、ESXi を vCenter から切断してからインポートする必要があります。

PowerCLI を利用する

OVFTool がインストールされていない環境でも、PowerCLI がインストールされていれば OVF / OVA へのエクスポート、インポートが Export-VApp / Import-VApp コマンドで可能です。

※ PowerCLI は vSphere API を利用するため、無償版の vSphere Hypervisor では利用できません。無償版の vSphere Hypervisor を利用している場合は OVFTool が利用可能です。

PowerCLI のインストール方法などは以下を参照ください。

PowerCLI Export-VApp でエクスポート

まずは vCenter に接続

$cre = Get-Credential  # vCenter SSO のアカウント・パスワードを入力
Connect-VIServer -Server "vCenter IP or FQDN" -Credential $cre
 

対象仮想マシンを Get-VM するか、直接仮想マシン名を Export-VApp の -VM に渡します。

$vm = Get-VM -Name "VMName"  # 対象仮想マシンを確認、$vm に入れておく
Export-VApp -VM $vm -Destination .\OVAFileName.ova -Format Ova -RunAsync
 

これだけです。OVFTool の様に多様なオプションはありませんが、仮想マシンの指定など非常にシンプルです。
-Format のオプションで OVF か OVA を指定可能です(既定は OVF)

PowerCLI Import-VApp でインポート

シンプルに ESXi にインポートするのであれば以下の様なオプションでインポート可能です。

Import-VApp -Source .\OVAFileName.ova -Name "VMName" -Datastore "Datastore1" -VMHost "Hostname"  -DiskStorageFormat Thin  -RunAsync
 
      
仮想ディスクのタイプは -DiskStorageFormat オプションで指定します。
-DiskStorageFormat は EagerZeroedThick / Thick / Thin から指定します。指定しない場合の規定値は Thick (lazyZeroedThick) です。

Import-VApp で若干面倒なのが、ネットワーク設定が  Get-OvfConfiguration で設定する必要がある事です。
これが面倒であればインポート後に vSphere Client など GUI で vNIC にポートグループを割り当てるか、Set-NetworkAdapter -Portgroup "PortGroupName" などで割り当ててください。

その他のオプションは Get-Help Import-VApp -Detailed などを参照してください。

エクスポート・インポートでエラーが発生する場合

PowerCLI が以下の様なエラーとなる場合、vCenter の証明書を PC に取り込むかセキュリティ設定の変更のどちらかで回避可能です。

        PS C:\temp> Export-VApp -VM "VMName" -Destination ./VMName.ova -Format Ova
        Export-VApp : 2021/06/22 13:30:45       Export-VApp         
               この要求の送信中にエラーが発生しました。
        発生場所 行:1 文字:1
        + Export-VApp -VM "VMName" -Destination ./VMName.ova -Format Ova
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            + CategoryInfo          : NotSpecified: (:) [Export-VApp], ViError
        
            + FullyQualifiedErrorId :
            Client20_NfcLease_RunNfcTask_Error,VMware.VimAutomation.ViCore.Cmdlets.Commands.ExportVA
           pp
  
 

セキュリティ設定の変更方法は以下の投稿にまとめてありますので参照ください。

vCenter Converter Standalone を利用する

vCenter Converter Standalone は既に開発・サポートが終了している製品ですが、現時点でも入手、利用は可能です vSphere 8.0 への対応・セキュリティ脆弱性の修正などを施した Converter 6.3 が 2022年 10月にリリースされました。
Converter を利用して vSphere や VMware Workstation の仮想マシンを OVF 化する事もできます。

簡単ですが以下に現時点の状況をまとめました。


0 件のコメント:

コメントを投稿

過去30日でアクセスの多い投稿