KVMを利用してVMImportを行う方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

くどうです。
今回はKVMを利用したVM Importについて解説していきます。

VM Importのおさらい

VM Importはオンプレにある仮想マシンをAWSに移行する方法です。

移行できるOSは以下になります。

  • Windows(32 ビットと 64 ビット)
    • Microsoft Windows Server 2003(Standard、Datacenter、Enterprise)(Service Pack 1 適用済み)以降
    • Microsoft Windows Server 2003 R2(Standard、Datacenter、Enterprise)
    • Microsoft Windows Server 2008(Standard、Datacenter、Enterprise)
    • Microsoft Windows Server 2008 R2(Standard、Datacenter、Enterprise。
    • Microsoft Windows Server 2012(Standard、Datacenter)
  • Linux/Unix(64 ビット)
    • Red Hat Enterprise Linux(RHEL)5.1-6.5
    • CentOS 5.1-6.5
    • Ubuntu 12.04, 12.10, 13.04, 13.10
    • Debian 6.0.0-6.0.8, 7.0.0-7.2.0
    • カスタムKernelには対応していません

対応している仮想ディスクのイメージ形式は以下になります。

  • RAW 形式
  • Virtual Hard Disk(VHD)イメージ形式
  • ESX Virtual Machine Disk(VMDK)イメージ形式

さらに詳しい情報は下記のサイトよりご確認をお願いします。
インスタンスのインポートとエクスポート 前提条件

今回はKVMを利用してRAW形式のイメージをインポートを行っていきます。

あじぇんだ

  1. Ubuntuのインストール
  2. KVMのインストール
  3. ゲストOSのインストール
  4. VM Import
  5. 動作確認

環境

OS:Ubuntu Server 14.04 LTS
ハイパーバイザー:KVM
インポート形式:RAW形式

1.Ubuntuのインストール

ホストOSとなるOSは今回はUbuntuを利用します。
KVMがインストール可能であるOSなら、何でも問題ないでしょう。

最新のバージョンをダウンロードします。
http://www.ubuntu.com/download/server

今回、利用したイメージは
ubuntu-14.04-server-amd64.iso

次にCD/DVDなどに書き込みホストOSをインストールします。

KVMを利用するためにGUI操作が行えるようデスクトップ環境を整える必要があります。
(VNCなどを利用してリモートからの操作でもよいです)
Serverイメージを利用する場合、デスクトップ環境をインストールします。

sudo apt-get install ubuntu-desktop

ダウンロードサイズが非常に大きいです。
まてない人は最初からUbuntu Desktopをインストールしましょう。

2.KVMのインストール

次にKVMをインストールしていきいます。

sudo apt-get install kvm libvirt-bin bridge-utils virt-manager qemu-system

以上でインストール完了です。一度再起動します。

3.ゲストOSをインストール

Virtual Machine Managerを立ち上げます。
ここで想定しているOSは移行する環境を想定しています。ただし、VM Importに対応しているOSには注意が必要です。
Linuxの場合、カスタムKernelは対応していないことにも注意が必要です。

今回導入したOSイメージは
ubuntu-12.10-server-amd64.iso

KVMへのインストールは、通常のOSのインストールと変わらないため割愛します。
kvm-vmm

ただし、SSHのインストールとログインの確認だけは行ってください。
Linuxの場合、移行後にSSHでのログインが必須となります。
Windowsはリモートデスクトップによる接続になります。

4.VM Import

VM Importを行うためには Amazon EC2 API Tools インストールする必要があります。

apt-get install ec2-api-tools

事前にshellでも書いておきましょう。import.shと保存します。
KVMで作成したイメージはubuntu.imgになります。

#!/bin/bash
VM_NAME=/var/lib/libvirt/images/ubuntu.img
AWS_ACCESS_KEY=<アクセスキー>
AWS_SECRET_KEY=<シークレットキー>
S3_BUCKET_NAME=<バケット名>
S3_BUCKET_REGION=ap-northeast-1
EC2_INSTANCE=m3.xlarge
VM_FORMAT=RAW
ARCHITECTURE=x86_64
S3_OWNER_ACCESS_KEY=$AWS_ACCESS_KEY
S3_OWNER_SECRET_KEY=$AWS_SECRET_KEY
ec2-import-instance \
    $VM_NAME \
    -t $EC2_INSTANCE \
    -f $VM_FORMAT \
    -a $ARCHITECTURE \
    -b $S3_BUCKET_NAME \
    -o $S3_OWNER_ACCESS_KEY \
    -w $S3_OWNER_SECRET_KEY \
    -p Linux \
    --region $S3_BUCKET_REGION \
    --aws-access-key $AWS_ACCESS_KEY \
    --aws-secret-key $AWS_SECRET_KEY \
    --debug

では実行してみます。

. import.sh

import.sh実行結果(ec2-import-instance)
 import01

ec2-import-instanceによりS3に分割されアップロードされます。
その後、EC2インスタンスへ変換されます。
ec2-describe-conversion-tasks で変換途中の確認を行えます。

ec2-describe-conversion-tasks 実行結果
import02

インスタンスへ変換されるのを待ちます。
30分程度かかります。

完了後はStatusがcompletedになります。
import03

以上で、VM importは完了です。

 5.動作確認

インポートしたインスタンスは起動されていないため、AWSコンソールマネージャより起動します。
対象インスタンスIDはec2-describe-conversion-tasksにて確認が行えます。

インスタンスには、ElasticIPを付与する必要があります。
Linuxの場合、起動後SSHで接続します。
接続後は、キーペアによる認証に変更することをお勧めします。

ログインできたらVM Importによる移行は完了です。

あとは、ec2-delete-disk-image でごみ掃除をしましょう。

まとめ

KVMによるRAWイメージのVM Importを行いました。
Linuxの移行も簡単に行うことが可能です。

VM Importで社内移行を楽に!