Develop with pleasure!

福岡でCloudとかBlockchainとか。

Kernel panicになったEC2のインスタンスの復旧方法

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間の通信となり、時間短縮が可能。