CentOS6.5を VM ImportでEC2にインポートする
CentOS6.5を EC2にインポートする手順のメモ。
( CentOS6.5 HVM AMI (SR-IOV対応) - aws memo の公開でやった手順のメモ)
準備
VirtualBoxをインストールしておく
CentOS6.5 minimal CD のisoファイルをダウンロードしておく
EC2 API Tools をセットアップしておく(参考)
手順
- VirtualBox上にCentOS VMを作成し、ディスクイメージを用意する
- VM Import用のS3 Bucketを作成する
- VM Import実行
- インポートしたEC2インスタンス(stop状態)をStartし内容を確認した後にAMIを作成する
- 作成したAMIからインスタンスを起動して動作確認
手順詳細
VirtualBoxでCentOS6.5をisoファイルから普通にOSインストールする(インストール手順は省略)
- Linux 2.6/3.x (64bit)
- メモリ 1024MB
- 仮想ハードドライブ: VDI (VirtualBox Disk Image)形式 8GB (可変サイズ)
インストール時に注意する点は以下の通り。
- eth0 が起動時に有効になり、DHCPになっていること
- iptablesで22番ポート(ssh)を開けて、リモートからssh接続できること
- GRUBでbootし、ファイルシステムがext3,ext4,xfs等になっていること
※こちらもチェック(Step 2: Prepare Your VM - Amazon Elastic Compute Cloud)
インストール後にVMにログインして確認・設定等を行い、VMをシャットダウンする
# /etc/sysconfig/network-scripts/ifup eth0 # ifconfig # vi /etc/sysconfig/network-scrpits/ifcfg-eth0
# cat /etc/sysconfig/network-scrpits/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp # chkconfig iptables off
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 6.7G 725M 5.6G 12% / tmpfs 7.3G 0 7.3G 0% /dev/shm /dev/xvda1 485M 32M 428M 7% /boot # cat /etc/fstab UUID=ed0a37a2-065d-42ed-8169-e67f73aae9d2 / ext4 defaults 1 1 UUID=ab3a3168-8adc-4419-98d9-17079234cd03 /boot ext4 defaults 1 2 UUID=55476664-15fb-470d-9905-d6585ae4470b swap swap defaults 0 0 # shutdown -h now
VM Import用に、RAWフォーマットのVMイメージファイルを作成する ( on Mac or Windows) 。
$ VBoxManage clonehd /path/to/CentOS6_5.vdi /path/to/CentOS6_5.raw --format RAW
次に、VM Importを行うために、S3にBucketを作成する(例: example-bucket )。この時、VM Import先のリージョンと同じリージョンにBucketを用意することに注意する。
次に、VM Importを行う( on Mac or Windows)
ec2-import-instance \ /path/to/CentOS6_5.raw \ -t m3.xlarge \ -f RAW \ -a x86_64 \ -p Linux \ --region us-west-2 \ --bucket example-bucket \ -o $AWS_ACCESS_KEY \ -w $AWS_SECRET_KEY Requesting volume size: 8 GB TaskType IMPORTINSTANCE TaskId import-i-fgeezt5f ExpirationTime 2014-04-15T01:55:43Z Status active StatusMessage Pending InstanceID i-0e256006 DISKIMAGE DiskImageFormat RAW DiskImageSize 8589934592 VolumeSize 8 AvailabilityZone us-west-2c ApproximateBytesConverted 0 Status active StatusMessage Pending : Downloaded 0 Creating new manifest at example-bucket/93b196ad-71c8-466e-8bdf-226ed25c9e17/CentOS.rawmanifest.xml Uploading the manifest file Uploading 8589934592 bytes across 820 parts 0% |--------------------------------------------------| 100% |===================================
といった表示になる。 上記の例だと、s3://example-bucket/93b196ad-71c8-466e-8bdf-226ed25c9e17/ に RAWファイルが10MB毎に分割されてUPされる。
ec2-import-instance コマンドを実行すると、conversion taskとして次の処理が行われる。
- インポート先のインスタンス作成( stop状態)
- VMイメージファイルを S3に分割アップロード ( 10分程度)
- 分割したイメージファイルを結合 (10分程度)
- EBSボリュームが自動で作成され、インポート先インスタンスにアタッチされる(10分程度)
定期的にec2-describe-conversion-tasks を実行して、進捗状況を確認する
ec2-describe-conversion-tasks --region us-west-2 TaskType IMPORTINSTANCE TaskId import-i-fgeezt5f ExpirationTime 2014-04-15T01:55:43Z Status active StatusMessage Pending InstanceID i-0e256006 DISKIMAGE DiskImageFormat RAW DiskImageSize 8589934592 VolumeSize 8 AvailabilityZone us-west-2c ApproximateBytesConverted 6731857920 Status active StatusMessage Progress: 75%
この状態で完了。
ec2-describe-conversion-tasks --region us-west-2 TaskType IMPORTINSTANCE TaskId import-i-fgeezt5f ExpirationTime 2014-04-15T01:55:43Z Status completed InstanceID i-0e256006 DISKIMAGE DiskImageFormat RAW DiskImageSize 8589934592 VolumeId vol-cb45eec7 VolumeSize 8 AvailabilityZone us-west-2c ApproximateBytesConverted 6731857920 Status completed
stop状態のインスタンスをstartさせ、sshログインする。
動作に問題なければ、適切な設定を施した上で Create Imageすると、HVM AMIが作成される。
うまく動作確認ができれば、S3上のファイルは不要なので削除する
ec2-delete-disk-image \ --task import-i-fgeezt5f \ --region us-west-2 \ -o $AWS_ACCESS_KEY \ -w $AWS_SECRET_KEY
参考
VM Import (仮想サーバーイメージのインポートとエクスポート機能)| アマゾン ウェブ サービス(AWS 日本語)
Prerequisites - Amazon Elastic Compute Cloud