VMware vSphere Hypervisor でクローンを作成する方法（vCenter 不要）

# はじめに
VMware vSphere Hypervisor で仮想マシンをクローンしたいけれども vCenter が無い場合にどうすれば良いかを書きました。
環境は以下の通りです。

- VMware vSphere Hypervisor 5.5.0 build 1623387
- VMware vSphere Client 5.5.0 build 1618071

# 実現案
vCenter 無しでクローンを行うには 4 つ実現方法があると考えられます。それぞれの利点と欠点、有用と思われる用途を以下に挙げます。

- **案1. OVF エクスポート・デプロイ**
    - 【内容】
        - 仮想マシンを OVF でエクスポートし、それをインポートすることでクローンを作成する方法
    - 【利点】
        - OVF 化することである時点の仮想マシンの状態をいつでも復元することが出来る。
        - 別のホストにインポートすることも可能
    - 【欠点】
        - 複数の仮想ディスクを複数のデータディスクに分けてデプロイすることができない。
        - OVF を保存するディスク容量が OVF エクスポート先に必要。数十 GB になることがあるので注意。
        - OVF エクスポート・デプロイにはネットワークコストがかかる（時間がかかる可能性がある）
    - 【用途】
        - 特定の状態のマシンを必要に応じて沢山クローンしたい場合に有用（例：クリーンな開発環境の複製）
- **案2. VMware vCenter Converter Standalone の利用**
    - 【内容】
        - VMware vCenter Converter Standalone の機能を利用してクローンを作成する
    - 【利点】
        - GUI 操作で分かりやすい。
        - 別のホストにもクローン可能。
        - クローンを作成するときに仮想マシンの設定変更も可能（仮想マシンのバージョンも変換できる）
    - 【欠点】
        - 同じホスト内でのクローンでも一度クライアント側にダウンロードするためネットワークコストがかかる。
        - vmx ファイルの内容がクローン元と比較すると差分が多く出ることがある。
    - 【用途】
        - 任意のタイミングでマシンをクローンするとき、 OVF エクスポートする程でもない場合に有用
- **案3. ssh 接続で vmkfstools でディスククローン後、vmx をコピペ編集**
    - 【内容】
        - ホストに ssh 接続してコマンド操作でディスクをクローンして、他の必要なファイルをコピーする
    - 【利点】
        - 同じホスト内での操作のため、ネットワークコストがかからない
    - 【欠点】
        - コマンド操作のため分かりづらい。
        - vmx ファイルの編集知識が多少必要
    - 【用途】
        - 同一ホスト上でのクローンであり、かつネットワークが貧弱なため案2. では時間がかかる場合、または vmx ファイルをほぼ同じにしたい場合に有用
- **案4. ssh 接続で vmkfstools でディスククローン後、新規仮想マシン作成時に活用**
    - 【内容】
        - 案3. のディスククローンまでを行い、新規仮想マシンの作成時にクローンしたディスクを選択する
    - 【利点】
        - ネットワークコストがかからない。
        - クローンマシンの構成を GUI で任意に変更することができる（※ただし必要に応じてゲスト OS 側での設定変更が必要）
    - 【欠点】
        - 手順が煩雑になる。
        - マシン構成がクローン元と整合性がとれないと起動できない可能性がある
    - 【用途】
        - ディスクデータのみ複製したい場合に有用
- **案5. vSphere Client のデータストアブラウザ上で仮想マシンをコピペ**
    - 【内容】
        - データストアブラウザ上でマシンをコピーする
    - 【利点】
        - 手軽な操作でクローンを作成できる
    - 【欠点】
        - ファイル名などがそのままになる。
        - 変更したい場合は vmx を手動で変更する必要がある
    - 【用途】
        - 厳密さを求めず、お試しでクローンを作成したい場合

# 手順
## 案1. OVF エクスポート・デプロイ
注意：クローン元の CD/DVD デバイスに ISO イメージが接続されていないことを確認してください。接続されたまま OVF エクスポートを行うと、デプロイの際に失敗します（参考：[CentOS6.4 のOVFテンプレートのデプロイに失敗する。 | VMware Communities](https://communities.vmware.com/message/2255792)）。

1. vSphere Client でホストに接続
2. クローン元の VM を選択
3. メニューから「ファイル」→「エクスポート」→「OVF テンプレートのエクスポート」を選択
4. 名前、保存先、フォーマット、説明を確認・修正して「OK」を押下
5. しばらくすると保存先に OVF テンプレートができあがる
6. メニューから「ファイル」→「OVF テンプレートのデプロイ」を選択
7. 先ほどエクスポートした OVF ファイルを選択
8. ウィザードに従って完了


## 案2. VMware vCenter Converter Standalone の利用
VMware vCenter Converter Standalone は物理マシンの仮想化、仮想マシンのフォーマット変換が行える無償のアプリケーションです。[ダウンロードはこちらから](https://my.vmware.com/jp/web/vmware/info/slug/infrastructure_operations_management/vmware_vcenter_converter_standalone/5_5)（要ログイン）。

画像付きの説明は[こちらのサイト](http://shigeo-t.hatenablog.com/entry/2014/05/14/095417)が詳しいです。

1. アプリケーションをクライアント版でインストール、起動
2. メニューから「Convert machine」を選択
3. Source System でクローン元があるホストへの接続情報を入力
4. Source Machine でクローン元マシンを選択（注意：電源 OFF 状態であること）
5. Destination System でクローン先のホストへの接続情報を入力（同一ホストであれば、3.と同じ情報を入力）
6. Destination Virtual Machine でクローンマシンの名前を入力
7. Destination Location でデータストアと仮想マシンバージョンを選択。データストアをディスクごとに選択したい場合は次の Options で変更可能
8. Options で仮想マシンの設定を変更。Data to copy では Type がデフォルトで Thick になっているので必要であれば Thin などに変更、データストアもデータごとに変更。Reconfigure に :warning: マークが付いていますが、気にせず起動後に手動で再設定しましょう。
9. Summary で内容を確認し、問題なければ「Finish」を押下して完了


## 案3. ssh 接続で vmkfstools でディスククローン後、vmx をコピペ編集
事前準備として、ホストに ssh 接続できるようにします。画像付きの説明は[こちらのサイト](http://virtual.cocolog-nifty.com/virtualmachine/2013/09/esxi-ssh-esxi-5.html)が詳しいです。

### 事前準備
1. vSphere Client を起動
2. ホストを選択し、「構成」タブから「ソフトウェア」内の「セキュリティプロファイル」を選択
3. 切り替わった画面の「サービス」の右にある「プロパティ」をクリック（子画面が表示される）
4. SSH を選択して「オプション」を押下
5. 「開始」を押下して「OK」で完了

### 手順
1．ssh でホストに接続

2．`vmkfstools` を使ってディスクをクローン（参考：[VMware KB: ESX/ESXi ホスト端末を使用して個々の仮想マシン ディスクのクローンを作成する](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078416)）。
データストアは `/vmfs/volumes/` 以下に格納されています。
（実行例）

```bash
 # クローン先のディレクトリ作成
 mkdir /vmfs/volumes/datastore1/CloneVM
 mkdir /vmfs/volumes/datastore2/CloneVM
 # ディスクのクローン
 vmkfstools -i /vmfs/volumes/datastore1/OriginalVM/OriginalVM.vmdk /vmfs/volumes/datastore1/CloneVM/CloneVM.vmdk
 vmkfstools -i /vmfs/volumes/datastore2/OriginalVM/OriginalVM_1.vmdk /vmfs/volumes/datastore2/CloneVM/CloneVM_1.vmdk
```

`vmkfstools` を使うときはオプションとして `-d Thin` （シン プロビジョニングにする）や `-K` （余分な領域を削除）などを任意に追加してください。

3．必要なファイルをクローン元からコピー
クローン元から `*.vmx` `*.vmsd` `*.vmxf` をクローン先にコピーします

4．vmx ファイルを編集
クローン先の `*.vmx` ファイルを開いてデータストアの格納先を修正します。クローン元と同じ構成の場合は `sed` コマンドで一括置換もできます
（例）

```bash
sed -i s/OriginalVM/CloneVM/g /vmfs/volumes/datastore1/CloneVM/CloneVM.vmx
```

5．vmx ファイルをホストに仮想マシンとして登録
以下のコマンド使用するか、vSphere Client からデータストアを参照し、該当の vmx ファイルを右クリックし、「インベントリへ追加」を実行してください。

```bash
vim-cmd solo/registervm /vmfs/volumes/datastore1/CloneVM/CloneVM.vmx
```

うまく登録されない場合はクローン先のファイルの整合性を確認してください（参考：[VMware KB: ESX/ESXi 仮想マシン ファイルの整合性の確認](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078481)）

## 案4. ssh 接続で vmkfstools でディスククローン後、新規仮想マシン作成時に活用
これは案3.の手順2.までを実施した後、vSphere Client から新規仮想マシンを作成し、そのときクローンしたディスクを選択する方法です。詳細は割愛します。

## 案5. vSphere Client のデータストアブラウザ上で仮想マシンをコピペ
[こちら](http://infra.blog.shinobi.jp/Entry/55/)を参照