VMImportでVMware仮想マシンイメージをEC2インスタンスとしてインポートする

サーバー仮想化環境で利用中の仮想マシンをEC2に移行したいケースというのは非常に一般的です。
AWS VMImport/ExportではVMwareやHyper-V等の主要な仮想マシンイメージ形式に対応しているので、様々な環境の仮想マシンをインポートできます。
今回は、VMImportでVMImportでVMware仮想マシンイメージをEC2インスタンスとしてインポートしてみます。

rdp


環境

今回の移行元の環境は以下の通りです。

  • ハイパーバイザ: VMware ESXi 5.0
  • 仮想マシン: Windows Server 2008 R2

以下の仮想マシン(Windows) の前提条件を満たすように準備しておきます。

  • リモートデスクトップを有効化する
  • DHCPにする
  • VMware Toolsをアンインストールする

前提条件の詳細は下記のドキュメントに記載されています。
VM Import/Export の前提条件


VMwareからのエクスポート

まず、VMwareから仮想マシンをエクスポートします。
簡単な手順は下記の通り。

  1. vSphere ClientでESXiにログイン
  2. 仮想マシンを選択し、ファイル>エクスポート>OVFテンプレートのエクスポートをクリック
  3. OVFテンプレートのエクスポートダイアログでOKをクリック(何も変えなくてもよい)
  4. しばらく待つとダイアログで指定した対象ディレクトリにovfファイルとvmdkファイルが出力される

作業が完了すると、次のようなファイルが出力されます。

> dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は AC57-4A63 です

 C:\Users\Administrator\Desktop\sekiyama-win2008r2 のディレクトリ

2014/07/24  03:02    <DIR>          .
2014/07/24  03:02    <DIR>          ..
2014/07/24  02:57     3,341,122,560 sekiyama-win2008r2-disk1.vmdk
2014/07/24  03:02     3,283,720,192 sekiyama-win2008r2-file1.iso
2014/07/24  03:02               229 sekiyama-win2008r2.mf
2014/07/24  03:02             5,391 sekiyama-win2008r2.ovf
               4 個のファイル       6,624,848,372 バイト
               2 個のディレクトリ   5,806,538,752 バイトの空き領域

EC2へのインポート

作業用インスタンスに、ec2-api-tools をインストールしておきます。
今回はvSphere Clientインストールマシンを併用しました。

では、さっそくさきほど出力されたvmdkファイルを利用して、ec2-import-instanceコマンドを実行します。

> ec2-import-instance C:\Users\Administrator\Desktop\sekiyama-win2008r2\sekiyama-win2008r2-disk1.vmdk
 --format VMDK
 --architecture x86_64
 --platform Windows 
 --instance-type m1.small 
 --bucket xxx-xxx-xxxxxxx-xx-sekiyama
 --availability-zone ap-northeast-1c
 --subnet subnet-5f381519
 --owner-akid AKIAXXXXXXXXXXXXXXXX 
 --owner-sak XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

正常に実行開始すると、プログレスバーが表示されます。

Requesting volume size: 20 GB
TaskType        IMPORTINSTANCE  TaskId  import-i-fh3ourqy       ExpirationTime 2014-07-31T12:25:06Z    
Status  active  StatusMessage   Pending InstanceID i-1067b909
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   3341122560      VolumeSize      20
AvailabilityZone        ap-northeast-1c ApproximateBytesConverted       0       Status  active
StatusMessage   Pending : Downloaded 0
Creating new manifest at xxx-xxx-xxxxxxx-xx-sekiyama/22d474ba-d44f-4aed-830f-b72f2d49e459/sekiyama-win2008r2-disk1.vmdkmanifest.xml
Uploading the manifest file
Uploading 3341122560 bytes across 319 parts
0% |--------------------------------------------------| 100%
   |===========================

インポート中には、コマンドで指定したS3バケットに下記のようなファイルが生成されます。

sekiyama-win2008r2-disk1.vmdk.part0
sekiyama-win2008r2-disk1.vmdk.part1
sekiyama-win2008r2-disk1.vmdk.part2
...
sekiyama-win2008r2-disk1.vmdkmanifest.xml

ちなみに、***.vmdk.part* のファイルサイズはすべて10MBとなります。

コマンド実行が完了すると、下記のように出力されます。

Requesting volume size: 20 GB
TaskType        IMPORTINSTANCE  TaskId  import-i-fh3ourqy       ExpirationTime 2014-07-31T12:25:06Z    
Status  active  StatusMessage   Pending InstanceID i-1067b909
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   3341122560      VolumeSize      20
AvailabilityZone        ap-northeast-1c ApproximateBytesConverted       0       Status  active
StatusMessage   Pending : Downloaded 0
Creating new manifest at xxx-xxx-xxxxxxx-xx-sekiyama/22d474ba-d44f-4aed-830f-b72f2d49e459/sekiyama-win2008r2-disk1.vmdkmanifest.xml
Uploading the manifest file
Uploading 3341122560 bytes across 319 parts
0% |--------------------------------------------------| 100%
   |==================================================|
Done
Average speed was 3.914 MBps
The disk image for import-i-fh3ourqy has been uploaded to Amazon S3
where it is being converted into an EC2 instance.  You may monitor the
progress of this task by running ec2-describe-conversion-tasks.  When
the task is completed, you may use ec2-delete-disk-image to remove the
image from S3.

この時点では、S3へのファイルアップロードが完了しただけで、EC2インスタンスとしては利用可能な状態とはなっていません。
ec2-describe-conversion-tasks コマンドでインポートタスクの進捗状況を確認してみましょう。
ec2-import-instanceコマンド実行時に出力された Task ID を引数に、ec2-describe-conversion-tasks コマンドを実行してみます。

> ec2-describe-conversion-tasks import-i-fh3ourqy
TaskType        IMPORTINSTANCE  TaskId  import-i-fh3ourqy       
ExpirationTime 2014-07-31T12:25:06Z    Status  active  StatusMessage   Pending InstanceID i-1067b909
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   3341122560      VolumeSize      20      
AvailabilityZone        ap-northeast-1c ApproximateBytesConverted       3132314720      
Status  active  StatusMessage   Pending : Downloaded 3330636800

“Pending” ということで、準備中であることがわかります。
しばらく経ってから再度ec2-describe-conversion-tasks コマンドを実行してみます。

> ec2-describe-conversion-tasks import-i-fh3ourqy
TaskType        IMPORTINSTANCE  TaskId  import-i-fh3ourqy       
ExpirationTime  2014-07-31T12:25:06Z    Status  active  StatusMessage   Progress: 41% InstanceID i-1067b909
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   3341122560      VolumeId        vol-a93594af    VolumeSize      20
AvailabilityZone        ap-northeast-1c ApproximateBytesConverted       3341118784      Status  completed

“Progress: 41%” ということで、今まさにEC2インスタンスに変換されているところであることがわかります。
もうしばらく経ってから再度ec2-describe-conversion-tasks コマンドを実行してみます。

> ec2-describe-conversion-tasks import-i-fh3ourqy
TaskType        IMPORTINSTANCE  TaskId  import-i-fh3ourqy       
ExpirationTime 2014-07-31T12:25:06Z    Status  completed       InstanceID      i-1067b909
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   3341122560      VolumeId        vol-a93594af    VolumeSize      20      
AvailabilityZone        ap-northeast-1c ApproximateBytesConverted       3341118784      Status  completed

“completed”となり完了しました。

マネジメントコンソールを見ると、インポートされたインスタンス i-1067b909 が”stopped”状態で存在していることが確認できます。
vmimport_test

ちなみに、AMI ID欄を見ると、”Cannot load details for ami-97540996. You may not be permitted to view it.”となっていたりします。

では早速Startして、リモートデスクトップでつないでみます。

rdp

無事つながりました。

多少時間はかかりますが、コマンドを実行するだけでインポートできて意外と楽ちんです。

広告
  1. トラックバックはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。