2017年4月28日金曜日

vCenter Serverは不要。ESXi単独で仮想マシンのクローンを作る方法

vSphere環境で仮想マシンのクローンを作る場合は、vCenter Serverを用意する必要があると思っていたが、実はESXiシェルのコマンドを使えばESXi単独でクローンが作れてしまうことを最近知った。

若干手順が多くなるのでちょっと手間ではあるものの、無償のESXiのみの環境であってもクローンが使えることは非常に便利である。例えば、よく使うOSの仮想マシンはテンプレートとして1台作っておいて、今回記載する手順でクローンして使うようにすれば、検証作業のたびにOSインストールから始める必要がなくなって効率がよくなる。

ESXi単独での仮想マシンのクローンの手順

以下に手順を記載していく。

1. クローン先の仮想マシンの箱を作成

vSphere Clientなどでクローン元と同じ構成で仮想マシンを作成する。仮想マシン作成時に「標準」と「カスタム」が選べるが、「標準」を選んだ場合、必ず仮想マシンに1つディスクを作成する必要がある。このディスクは次の手順ですぐに消すため、1GBと小さくして作成しておけばよい。
※「カスタム」の場合は、ディスクを作らない仮想マシンの箱を作成できる。


2. クローン先の仮想マシンのディスク削除

仮想マシン作成時に作られたディスクは不要なので、仮想マシンから削除(ディスクからも削除)しておく。


3. sshでESXiシェルにログイン

Tera Termなどでログインする。なお、ESXiの場合は、「チャレンジレスポンス認証」を選んでログインする。

4. コピー元ディスクの確認

データストアは以下パスに存在する。

/vmfs/volumes/<データストア名>/<仮想マシン名>

クローン元のファイルを事前に確認しておく。コピー対象となるファイルは*.vmdkファイルとなる。以下確認例となる。

[root@t3011es60:~] ls -l /vmfs/volumes/ssd_local_01/t1162w28r/
total 7388176
------------------------------
-rw-------    1 root     root     42949672960 Apr 26 13:55 t1162w28r-flat.vmdk
-rw-------    1 root     root          8684 Apr 26 13:41 t1162w28r.nvram
-rw-------    1 root     root           524 Apr 26 13:55 t1162w28r.vmdk
-rw-r--r--    1 root     root            43 Apr 26 13:55 t1162w28r.vmsd
-rwxr-xr-x    1 root     root          2806 Apr 26 13:55 t1162w28r.vmx
-rw-------    1 root     root          4151 Apr 17 05:19 t1162w28r.vmxf
-rw-r--r--    1 root     root       1203822 Apr 18 21:24 vmware-1.log
-rw-r--r--    1 root     root        267260 Apr 26 13:41 vmware.log
------------------------------

5. ディスクコピーの実施

以下コマンドで仮想マシンのディスクをコピーする。

vmkfstools -i <クローン元> <クローン先> -d <ディスク形式>

"-d"オプションでディスクの形式を選択できる。

・zeroedthick (default) : シックプロビジョニング
・thin : シンプロビジョニング
・eagerzeroedthick : EagerZeroedThick (作成時に0書き込み)

以下シンプロビジョニング形式でクローンを作成する実行例となる。

[root@t3011es60:~] vmkfstools -i /vmfs/volumes/ssd_local_01/t1162w28r/t1162w28r.vmdk  /vmfs/volumes/iscsi_qnap_01/t1165w28r/t1165w28r.vmdk -d thin
------------------------------
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/ssd_local_01/t1162w28r/t1162w28r.vmdk'...
Clone: 100% done.
------------------------------

なお、仮想マシンがパワーオン状態の場合、以下のようにファイルがロックされているメッセージが表示されてしまいクローンが実行できない。

------------------------------
Failed to open '/vmfs/volumes/ssd_local_01/t1162w28r/t1162w28r-000001.vmdk': Failed to lock the file (16392).
Command exited with non-zero status 255
------------------------------

この場合は、一度仮想マシンのスナップショットを取得してから、再度vmkfstoolsコマンドを実行すれば成功する(スナップショットを取得すると、vmdkファイルのロックが差分用のvmdkファイルに移るため)。一時的にスナップショットを取得した場合は、作業後のスナップショット削除も忘れずに。

6. 仮想マシンにディスクを追加

vSphere Clientで、先ほどコピーしたvmdkファイルを指定して、仮想マシンのハードディスクを追加する。



7. 仮想マシンを起動

仮想マシンを起動する。特に問題なくログイン画面が表示される。


なお、仮想マシン起動状態でクローンを実施した場合は、以下のように正常にシャットダウンされなかった旨が表示されるが、「windows を通常起動する」を選べばOSは起動できる。


参考

ESX/ESXi ホスト端末を使用して個々の仮想マシン ディスクのクローンを作成する (2078416)
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078416

vmkfstools を使用した仮想マシン ディスクのクローン作成および変換 (2078921)
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078921