Date: 2013/4/10 Cate: 未分類 Tags:

EC2でUS Eastのregionをつかってたのですが、日本からアクセスするといかんせん遅いので、ちょっと値は張るけどTokyoのほうにかえてみよう、と思ったのでメモ。

AWS Management Consoleからできる

最近AWSのコンソールからできるようになったみたいです。便利ですね。

Snapshotの作成

まずはEC2のコンソールに行き、左側からSnapshotsにいきます。
Snapshots
そしてRegionを移動したいインスタンスのSnapshot(なければつくる)を右クリック→Copy Snapshotを選択。
Copy Snapshot
ダイアログが出てくるので、Destination regionに移動したい先のregionを選択してコピーする。これで好きなregionにsnapshotがコピーされます。
destination region
ここでひとつ注意!
あとで使うので、このときKernel IDをメモっておきましょう!
Kernel ID

移動した先のRegionでインスタンスを立ち上げる

コンソールの右上から、さっき選択したコピー先のRegionに移動します。
select region
Regionを移動したら、左のSnapshotsに行くと先ほどコピーしたSnapshotがあることを確認します。それを選択して、Create Imageします。

Create Image

Yes,OK

そうするとAMIsにSnapshotから作成したAMIが作られるので、最後にそれを選択して、LaunchすればOK!
Launch

ハマりがちポイント!

このままLaunchしたときに、StatusはrunningになるけどStatus Checkでエラーがでるということで2時間くらいハマりました。

 ec2 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block 

こんなエラーですね。
これは、Launchするときに Kernel ID をちゃんと指定しないといけないからでした。
Kernel ID
ここを、さっきメモったやつにするわけですね。
ですが、 さっきメモったやつここに無い! というのでハマりました。ちくしょう。 どうやらregionが違うとここのKernel IDも変わるようで、コピー前のregionでのKernel IDに対応するKernel Imageをメモって、コピー先のregionでそのKernel Imageに対応するKernel IDをセットする、ということをしないといけないようです。
対応するKernel IDの探し方ですが、このサイトをみるといいかんじのものが書いてありました。

 ec2-describe-images --owner amazon --region ap-northeast-1 | grep "amazon\/pv-grub-hd0" | awk '{ print $1, $2, $3, $5, $7 }' 

とやると

 IMAGE aki-3e99283f amazon/pv-grub-hd00_1.03-i386.gz available i386 
IMAGE aki-40992841 amazon/pv-grub-hd00_1.03-x86_64.gz available x86_64 
IMAGE aki-42992843 amazon/pv-grub-hd0_1.03-i386.gz available i386 
IMAGE aki-44992845 amazon/pv-grub-hd0_1.03-x86_64.gz available x86_64 

という風に表示されます。 aki-hogehoge
というのがKernelIDで、これはap-northeast-1 regionにおけるKernel IDとKernel Imageの対応みたいなかんじですね。
なので、僕の場合はus-east-1からap-northeast-1へ移動させたので、

 ec2-describe-images --owner amazon --region us-east-1 | grep "amazon\/pv-grub-hd0" | awk '{ print $1, $2, $3, $5, $7 }' 

 
IMAGE aki-b2aa75db amazon/pv-grub-hd00_1.03-i386.gz available i386
IMAGE aki-b4aa75dd amazon/pv-grub-hd00_1.03-x86_64.gz available x86_64
IMAGE aki-b6aa75df amazon/pv-grub-hd0_1.03-i386.gz available i386
IMAGE aki-88aa75e1 amazon/pv-grub-hd0_1.03-x86_64.gz available x86_64

という対応をみて、移動しようとしていたインスタンスのKernel IDはaki-88aa75e1だったので、amazon/pv-grub-hd0_1.03-x86_64.gz available x86_64なのだなと。ほんでさっきのap-northeast-1においては

 ec2-describe-images --owner amazon --region ap-northeast-1 | grep "amazon\/pv-grub-hd0" | awk '{ print $1, $2, $3, $5, $7 }' 
 
IMAGE aki-3e99283f amazon/pv-grub-hd00_1.03-i386.gz available i386
IMAGE aki-40992841 amazon/pv-grub-hd00_1.03-x86_64.gz available x86_64
IMAGE aki-42992843 amazon/pv-grub-hd0_1.03-i386.gz available i386
IMAGE aki-44992845 amazon/pv-grub-hd0_1.03-x86_64.gz available x86_64

からamazon/pv-grub-hd0_1.03-x86_64.gz available x86_64に対応するKernel IDはaki-44992845だな、ということでKernel IDをaki-44992845に指定してLaunchしたらうまくいきました。

まとめ

Kernel IDをちゃんと指定しないとだめだよ、ということですな。

追記

SnapshotからAMIをつくって、ということをせずに、AMIをそのままコピーしてやればもっとすんなりいけました。
Oh…

Leave a Reply