[AWS] EBSブートについての覚え書き
エントリー[AWS] EC2マイクロインスタンスのベンチマークしてみたでも書いてましたが、EC2のマイクロインスタンスはEBSブートのAMIでしか使えません。今までinstance-storeのAMIしか使ったことが無かったので、イメージの保存〜リカバリーの勝手が分からずちょっと自分なりに調べてみたので覚え書きにする。
そもそもEC2って?
元々EC2ではEBSってのは無くて、instance-storeのみでサービスしてたらしいです。
AMIイメージから起動して使用する手順
- S3に保存されているAMIイメージを選択する
- クラウド上にイメージを展開する
- オンメモリでインスタンスが展開される。シャットダウンすると消える
起動しているインスタンスを永続化する手順
- インスタンスのイメージを作成する
- 作成したイメージをS3にアップロードして保存する
この辺の流れはシンガポールが追加されたAmazon EC2で遊んでみた[S3編]を参考にしてください。
S3はストレージサービスと言っても普通にマウントして使うようなやり方はできなくて、httpを使ってファイルを送受信するだけのシンプルなサービス(何せSimple Storage Service → S3ですからw)なので、インスタンスからマウントできるようなストレージサービスとしてEBS(Elastic Block Storage)ってのが提供されるようになったようです。
EBSについて
ではS3とは別のEBSって何かってことですが、EBSを使う流れは簡単にいうとこんな感じ
EBSの使い方
- サイズを指定してボリュームを作成する
- 作成したボリュームを起動中のインスタンスにアタッチする
- インスタンスでアタッチしたボリュームをマウントする
ココまではイイんだけど、じゃあEBSブートって何よ?ってのが疑問になったわけ。イメージ的にはシャットダウンしても消えないインスタンスが使えるようになるんだって思って、だいたい合ってました。
EBSブートのインスタンスが起動するまでの流れ
- EBSブート用のAMIから起動する
- 自動的にEBSボリュームが作成され、イメージが展開される
- EBSボリュームからインスタンスが起動する
- 終了するとstop状態でEBSボリュームが残る (設定でterminateにもできるので注意)
- terminateするとEBSボリュームが消える
インスタンスの状態にはrunningとterminateとstopってのがあって、terminateするとデータ全部消えちゃいます。EBSだとterminateしても消えないのかなって思ったけど残念ながら消えます><その代わりEBSにはstopって状態が存在して、stopにしておくとスナップショットをとって保存しておけます。また、stopならそこからもう一度起動することもできます。
スナップショットからAMIイメージを作成してリカバリーする方法
stopにしておけばデータは消えないのですが、同じインスタンスをもう1個立ち上げたいとか誰かにオレオレAMIを公開したいとかできないし、stopのままおいておくのもなんか気持ち悪いのでどうやってEBSブートAMIを作るのか調べました。
スナップショットはManagement Consoleからでも簡単にできるのですが、AMIイメージの作成はManagement Consoleからはできず、コマンドラインインターフェースを使う必要がありました。
実際の手順はこのページ「EC2においてEBS Snapshotでバックアップを取得しそれをリカバリする方法」がスゴくわかりやすかったです。
Root Device: /dev/sda1
Kernel ID: aki-xxxxxxxx
RAM Disk ID: ari-xxxxxxxx
コマンドはこんな感じ
#ec2-register -n イメージ名 -d ‘イメージの説明’ –root-device-name /dev/sda1 -b /dev/sda1=snap-xxxxxxxx -a i386 –kernel aki-xxxxxxxx –ramdisk ari-xxxxxxxx
*64bitの場合はi386をx86_64に
これでMy AMIにオレオレイメージが作成されましたのでいつでもインスタンスを立ち上げることができるようになりました。




