EC2 をAMIから起動できない(/dev/mapper/vg_root-lv_root does not exist)

2月 11, 2020AmazonLinux_CentOS,AWS,EC2

概要

  • 今回の記事は、EC2インスタンスをAMIから起動できない事例の紹介です。
  • 原因が分かれば納得ですが、別環境で取得したAMIを再利用するなど、AMIの元となっているEC2 インスタンスの情報が不明な場合はハマります。
 

EC2インスタンスの起動障害

EC2インスタンス起動時のStatus Checks失敗

  • 別環境(別のAWSアカウント)から共有されているAMI を元にEC2インスタンス(type: c5.large)を起動しましたが、インスタンスのステータスチェック(1/2 checks)に失敗し、EC2インスタンスが起動できませんでした。
  • 現象は固定であり、再起動しても起動できません。
 

インスタンスのSystem Logを調査する

  • ステータスチェックに失敗したインスタンスを選択し、[Actions] → [Instance Settings] → [Get System Log]を選択します。
   
  • 通常、OSのログファイルはOS起動後でなければ確認できませんが、上記方法を使用することで、OSの起動が完了する前のコンソールログを調べることが可能です。
  • 今回は、以下のログが出力されており、ステータスチェックに失敗したエラーが確認できました。
   
  • 以下、エラーメッセージの抜粋です。「/dev/mapper/vg_root-lv_root does not exist」と出力されており、ブートディスクが見つからなかったことが分かります。
 

[  174.798610] dracut-initqueue[250]: Warning: dracut-initqueue timeout - starting timeout scripts
[  175.307222] dracut-initqueue[250]: Warning: dracut-initqueue timeout - starting timeout scripts
[  175.813909] dracut-initqueue[250]: Warning: dracut-iWarning: /dev/mapper/vg_root-lv_root does not exist
Warning: /dev/vg_root/lv_root does not exist
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after mounting them and attach it to a bug report.
   

EC2ステータスチェックに失敗した原因

  • 今回、ステータスチェックに失敗した原因は、旧世代(C4インスタンス)で取得したAMI であったため、現行世代(C5インスタンス)で起動した場合に、ブートディスクのドライバが異なっており、ブートディスクのデバイスが認識できなかったため、OSの起動に失敗しました。
  • 現行世代(C5インスタンス)は、NVMeを標準搭載するNitroベースのインスタンスのため、旧世代(C4インスタンス)でインストールされたOSイメージには、ドライバが組み込まれておりません。
  • 無事、EC2インスタンス(type: c4.large)を起動し直すことで、ステータスチェックに成功して、OSが起動できました。以下、コンソールより、EC2ステータスチェックが確認可能です。