EC2起動時にKernel panic - Develop with pleasure!
で、EC2上で起動しようとしたOSがKernel panicになって起動できなくなった際の復旧方法。
手元に物理的にサーバがあれば、セーフモードなりで起動して修正できるが、EC2は仮想環境なのでそういった処置ができない。EC2の場合は以下のステップで復旧できる。
- S3から対象のAMIファイルをダウンロードする
ec2-download-bundle -b ${バケットのパス} -a ${アクセスキーID} -s ${シークレットキーID} -k ${秘密鍵} -d ${ダウンロード先のパス}
- ダウンロードしたAMIファイルを結合する
ec2-unbundle -m image.manifest.xml -k ${秘密鍵}
- 結合したAMIファイルをloopbackマウントする
mount -o loop image ${マウント先}
マウントすれば各ファイルにアクセスできるようになるので、問題箇所を修正して再度AMI化すればOK。
手元にマシンがあれば数分で終わるが、上記のような方法だと、S3からのダウンロード/アップロード、再AMI化などで2時間以上かかる…。
追記:
ローカル環境で行うからS3へのアップロード/ダウンロードに日本-アメリカ間の通信が発生してしまい時間がかかるので、ローカル環境ではなく、EC2上に新規にインスタンス立てて、そこで復旧作業を行えばEC2-S3間の通信となり、時間短縮が可能。