ずっとやりたかったことが、ようやくできました!
下記のような、S3ベースのAMIイメージから、
http://blog.suz-lab.com/2010/01/suz-lab-centos-ami-542_19.html
EBSベースのAMIイメージを作成しました。
AMIイメージのManifestは下記の通りです。
811118151095/suz-lab_ebs_centos-core-5.4.4
("suz-lab"で検索したら見つかると思います)
ということで作り方ですが、下記サイトの情報を参考にしました。
http://coderslike.us/2009/12/07/amazon-ec2-boot-from-ebs-and-ami-conversion/
まず適当なインスタンスを立ち上げ、ログインし、
"ec2-api-tools"が利用できるように、環境変数の設定です。
# export EC2_HOME=/opt/ec2-api-tools
# export JAVA_HOME=/usr/java/default
次に、S3上のイメージファイル群"us-east-1.ami.suz-lab.com/ami-centos-core-5.4.3.img..."
を"/mnt"以下にダウンロードします。
# ec2-download-bundle \
-a AAAAAAAA \
-s SSSSSSSS \
-k /mnt/pk.pem \
-b us-east-1.ami.suz-lab.com \
-p ami-centos-core-5.4.3.img \
-d /mnt
そして、一つのイメージにします。
# ec2-unbundle \
-k /mnt/pk.pem \
-m /mnt/ami-centos-core-5.4.3.img.manifest.xml \
-s /mnt \
-d /mnt
すると、"/mnt/ami-centos-core-5.4.3.img"といったイメージファイルが作成されます。
ここで、管理コンソールやElasticfoxで10GのEBS作って、
作業しているインスタンスに"/dev/sdb1"でアタッチしておきます。
すると、インスタンス上で"/dev/sdb1"が現れるので、以下のようにAMIイメージをコピーします。
# dd if=/mnt/ami-centos-core-5.4.3.img of=/dev/sdb1
コピーが終わったら、次のようにマウントして中身が見れる常態にします。
# mkdir /vol
# mount /dev/sdb1 /vol
その状態で、"/vol/etc/fstab"を以下のように/mntの行を削除した形に修正します。
--------【fstab】--------
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda3 swap swap defaults 0 0
--------
修正が終わったら、次のようにのようにアンマウントして、
# umount /vol
管理コンソールやElasticfoxで"/dev/sdb1"をデタッチし、スナップショットを取り、
最終的には、EBSも削除します。
最後に、AMIイメージとして、スナップショットIDを登録します。
./ec2reg \
-K /mnt/pk.pem \
-C /mnt/cert.pem \
-s snap-e9a2e180 \
-a i386 \
-d suz-lab_ebs_centos-core-5.4.3 \
-n suz-lab_ebs_centos-core-5.4.3
以上で、S3ベースのAMIイメージからEBSベースのAMIイメージを作成することができました。
公開(public)したい場合は、管理コンソールにて、
右クリックの"Edit Permissions"で簡単にできます。
Enjoy!
--------
http://www.suz-lab.com
2 コメント:
カーネルパニックになり、
手動でイメージファイルを再生するのに
参考にさせてもらいました。
ありがとうございます。
お役にたてて嬉しいです。
コメントを投稿