2019年2月6日水曜日

InstantClone した VM に PromoteDisks を実行し元の VM と同じ状態にする方法

概要

前回 InstantClone を実行し高速に VM をクローンする方法を紹介しました
InstantClone は内部的には大元の VM の vmdk の差分分だけを管理しており元の VM の変更の影響を受けます

もし InstantClone した VM を大元とは別で管理したい場合には PromoteDisks という API をコールすることでクローン VM を昇格させることができます

今回は PromoteDisks API を InstantClone した VM に適用してみました

環境

  • VCSA 6.7.0.20000 build 10244745
  • ESXi 6.7.0 Update 1 (Build 10302608)
  • Ubuntu 18.04 LTS (クローン元)

事前準備

前回の記事を参考に 1 台 InstantClone VM を作成しておいてください
またファイルストアを確認すると vmdk が元の VM に比べて差分しか存在しないことを確認します

また重要なポイントとして InstantClone VM は事前に停止しておいてください
起動した状態だと PromoteDisks API がエラーを返してしまいます

mob からコールする

PromoteDisks API を一番てっとり早くコールできるのは mob なので今回は mob を使います
作成した InstantClone VM を探しアクセスしましょう

そしてメソッドの一覧から PrometeDisks_Task を探します
クリックすると API をコールするために別ウィンドウが開きます

パラメータは以下のように入力します

  • unlink・・・true
  • disks・・・
<disks>
   <key>2000</key>
   <capacityInKB>31457280</capacityInKB>
</disks>

ポイントは unlink を true にする点です
こうすることで大元のディスクとの紐付きを解消し VM が独立することができます
keycapacityInKB は大元の VM に接続されている VirtualDisk の数分用意、引用してください
今回はディスクは 1 つしかないので 1 つ分のディスク情報を記載します

結果を確認する

API を実行するとタスクにディスクの昇格の進捗ステータスが表示されます

完了後に再度 InstantClone VM のディスクストアを確認しましょう
先程よりも大幅に vmdk のサイズが大きくなっていると思います
このサイズはクローン元の VM の vmdk サイズと同じサイズになっているはずです

最後に

InstantClone した VM に対して PromoteDisks を実行することで VM を昇格させる方法を紹介しました
ポイントは昇格対象のクローン VM が停止していなければいけない点かなと思います
また昇格するディスク分パラメータを付与する点もポイントかなと思います

本文内では触れなかったのですがクローン元の VM にスナップショットが存在する場合も PromoteDisks できない可能性があります
試している最中に API が失敗するケースがあり調べてみるとクローン元の VM にスナップショットのゴミデータ (xxx-0001.vmdk や xxx-0002.vmdk) がありこれを削除してみたところうまく PromoteDisks できるケースがありました
なので失敗する場合はスナップショットデータを削除してみると良いかもしれません

参考サイト

0 件のコメント:

コメントを投稿