vmware vSphere (VMware)からAWSへvmimport

# vmware vSphere (VMware)からAWSへvmimport #

## はじめに ##
vmware vSphereサーバからAWSへvmimportを行ってみました。AWSの解説では

> VM Import/Export
VM Import/Export を使用すると、仮想マシンイメージを既存の環境から Amazon EC2 インスタンスにインポートすることや、元のオンプレミス環境にエクスポートすることが簡単にできます。この機能によって、仮想マシンが Amazon EC2 のインスタンスとして移行されてすぐに使用できる状態になるので、IT セキュリティ、構成管理、およびコンプライアンスに関するお客様の要件に合わせて作成した仮想マシンへの、これまでの投資が無駄になることはありません。また、インポートしたインスタンスを元のオンプレミス仮想化インフラストラクチャにエクスポートすることもできるので、作業負荷を自社のITインフラストラクチャにデプロイできるようになります。

というわけで、つまりは**「会社にある仮想マシンをインポートできますよ」**って事みたいです。

## 移行仮想環境 ##
移行元になるvmware vmSphereの環境は以下の通り

#### Parent OS ####
- vmware ESXi 5.5.0
- vmware vSphere client 5.5.0


#### GuestOS CentOS 6.5 ####

- OS用のディスク 30GB
- データー用のディスク200GB

パーティションは以下の通り、現実的なデータにする為にも、ある程度ダミーデーターでHDDを埋めました。

	/dev/mapper/VolGroup-lv_root  27G   24G  1.6G  94% /
	/dev/sda1             485M   55M  405M  12% /boot
	/dev/sdb1             197G  177G   11G  95% /data

## これだけはやっておく ##
やっておかないと、もろハマりますのでしっかりとやっておきましょう。

### SSH/RDPのリモートコンソールを事前にインストール ###
これやってないとAWS持ち込み後に仮想マシンにアクセスできません。Firewall(IPTables/Advanced Windows Firewall)も一旦はOpenにして、インポートした後にしっかりアクセスができるかチェックしておきましょう。

### Windows Serverなら250MBの空き容量と、.NET Framework 3.5がインストール済 ###
インポート時に自動的にドライバがインストールされます。Windows Serverの場合は、AWS用インスタンスのドライバのセットアップのために250MBは空き容量を開けておきましょう。ライセンスはAWSのインスタンスのライセンスを利用する事ができます。sysprepあらかじめ行っておきましょう。

### vmware toolsはアンインストール ###
あとからアンインストールでも問題は無いみたいです、インポートされるインスタンスはHVMにインポートされます。PV(準仮想化)にはインポートできませんので、つまりはHVM提供しているインスタンスのみになります。

### 複数台のディスクを持つ仮想マシンはインポートできません ###
このように書いてあると追加のディスクNGみたいに考えそうですが、インポートは1インスタンス1ディスクイメージでインポートされるだけで、後に別途ディスクイメージを転送後にattachできます。
逆に起動ディスクがRAID化されていたり、LVMなrootディスクでは何か問題があるかもしれません。

### 複数ネットワークカードはサポートされていません ###
このように書いてあると追加のネットワークカードはNGみたいに考えそうですが、当初インポートされる際に1ネットワークカードでインポートされます、後にネットワークカードを転送後に追加可能です。
ネットワークインターフェイスがBondingされていたりすると問題になるかもしれません。

## エクスポート ##


1. エクスポートしたい仮想マシンを選択して、「ファイル」->「エクスポート」->「OVFテンプレートのエクスポート」します。
2. 名前、出力先ディレクトリ、フォーマット（OVF）を指定して、OKをクリック
3. コーヒーでも飲んで待ちましょう

## インポート ##

インポートにはEC2 CLIでインポートします。
エクスポートしたフォルダにはディスクがそれぞれOS起動用、追加ディスク用が出力されています。

- CentOS65-30GB.mf
- CentOS65-30GB.ovf
- CentOS65-30GB-disk1.vmdk
- CentOS65-30GB-disk2.vmdk

### リージョン一覧取得 ###

	$　ec2-describe-regions -O S3へのアクセスキー -W S3へのシークレットキー

### インスタンスへインポート ###

	$　ec2-import-instance --region ap-northeast-1 --aws-access-key S3へのアクセスキー --aws-secret-key S3へのシークレットキー --instance-type c3.large --group sg-88bd4ded --format VMDK --architecture x86_64 --platform Linux --bucket clpvmimport001 --owner-akid S3へのアクセスキー --owner-sak S3へのシークレットキー --availability-zone ap-northeast-1a --subnet subnet-e4776f90 CentOS65-30GB-disk1.vmdk

### ボリュームのインポート ###

	$　ec2-import-volume --region ap-northeast-1 --aws-access-key S3へのアクセスキー --aws-secret-key S3へのシークレットキー --format VMDK --bucket clpvmimport001 --owner-akid S3へのアクセスキー --owner-sak S3へのシークレットキー --availability-zone ap-northeast-1a CentOS65-30GB-disk2.vmdk

### インポート作業のチェック ###

	$　ec2-describe-conversion-tasks --region ap-northeast-1 --aws-access-key S3へのアクセスキー --aws-secret-key S3へのシークレットキー

	TaskType        IMPORTINSTANCE  TaskId  import-i-fhecg3h8       ExpirationTime  2014-07-10T20:17:43Z    Status  completed       InstanceID   i-610f2367
	DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   726333440       VolumeId        vol-ce328fc4    VolumeSize      30      AvailabilityZone      ap-northeast-1a ApproximateBytesConverted       726331680       Status  completed
	TaskType        IMPORTINSTANCE  TaskId  import-i-fhd49x78       ExpirationTime  2014-07-12T13:06:52Z    Status  completed       InstanceID   i-c8d2fdce
	DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   604369408       VolumeId        vol-1070cc1a    VolumeSize      30      AvailabilityZone      ap-northeast-1a ApproximateBytesConverted       604367328       Status  completed
	TaskType        IMPORTVOLUME    TaskId  import-vol-ffw5tiuf     ExpirationTime  2014-07-10T20:35:33Z    Status  completed
	DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   5313536 VolumeId        vol-fa2d90f0    VolumeSize      200     AvailabilityZone     ap-northeast-1a  ApproximateBytesConverted       5287840
	TaskType        IMPORTVOLUME    TaskId  import-vol-fg44w7td     ExpirationTime  2014-07-12T13:11:58Z    Status  completed
	DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   152687616       VolumeId        vol-ab70cca1    VolumeSize      200     AvailabilityZone      ap-northeast-1a ApproximateBytesConverted       152592960

### S3にアップロードされたディスクイメージの削除 ###

	ec2-delete-disk-image --aws-access-key S3へのアクセスキー --aws-secret-key S3へのシークレットキー --owner-akid S3へのアクセスキー --owner-sak S3へのシークレットキー -t インポートタスクID

##　インポートの確認とインスタンスの起動 ##

インポートが終了すると、STOP状態でインスタンスの一覧に表示されます、この表示されたインスタンスを後は起動するだけでOKです。また、追加ディスクに関してもvolumeの一覧に表示されていますので、Attach volumeでインスタンスにアタッチを行えばOKですし、NICの追加に関してもEC2コントロールパネルから追加が可能です。

##　おわりに ##

今回は一般の回線から行ったので、10分程度のアップロード時間になり、その後変換タスクが10分程度で完了しましたが、DirectConnectを使うと、速度は6倍程度まで伸ばせる事がわかっています。
現在は、Direct Connectの環境をうまく使いながら効率の良いインポートプログラムの開発などを研究中です。