EBS ボリュームの状態がエラーになったときの対処方法

なにもしていないの EBS が壊れた
2023.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

EBS ボリュームの状態(Volume state)がエラーになっている EBS をはじめてお目にかかり対応方法が不明だった際に調べたまとめです。対策もあわせて紹介しております。

確認結果

  • ボリュームの状態(Volume state)がエラーの EBS は使用不可
  • データ復旧方法はスナップショットまたは AMI からの復元のみ
  • エラーになった EBS ボリュームの EBS 代金は請求されない
  • エラーになると AWS Health Dashboard にイベントとしてあがる

困っていた内容

数年前の作成した EBS ボリュームの状態(Volume state)がエラーで、ボリュームのステータス(Volume status)は OK 状態です。この場合どう対応したらよいのでしょうか?

本記事はボリュームの状態Volume state)がエラーについての内容です。マネージメントコンソールの日本語表記を以下の様になっています。

  • Volume state が「ボリュームの状態」と表示
  • Volume status が「ボリュームのステータス」と表示

原因・復旧方法

AWS 公式のトラブルシューティングガイドがございますので以下のリンクを参照ください。

原因

エラー状態は、EBS ボリュームに関連する基盤となるハードウェアに障害が発生したことを示します。ボリュームに関連付けられたデータは回復できず、Amazon EBS はボリュームが失われたものとして処理します。

ボリュームの状態がエラーの EBS ボリュームはすでに利用不可能です。

注: AWS は、状態がエラーのボリュームに対しては請求しません。

と、あるようにEBS 代は発生しておらず亡き者として扱われています。エラーとなった該当の EBS ボリューム自体はユーザーの任意のタイミングで削除できるくらいです。

検知方法

ボリュームがエラー状態になると、アカウントのパーソナルヘルスダッシュボードに通知が表示されます。

現在は AWS Health Dashboard に統合されているため、Helth Dashboard をご確認ください。今回のケースはエラーとなったのがだいぶ前だったようでダッシュボードからイベントを確認できませんでした。

復旧方法

エラー状態のボリュームを回復することはできませんが、失われたデータをバックアップから復元することはできます。

AMI、スナップショットからデータを復旧できます。仮にスナップショットがなければ S3 などの外部ストレージへデータを退避していない限り EBS の上のデータ復旧方法はありません。

スナップショットがある場合は EBS ボリュームの画面からスナップショット ID を確認できます。

バックアップは大切

EBS ボリュームの状態エラーに備えて定期的なバックアップ(AMI、スナップショット)を取得しておきましょう。基本的な EBS の知識不足の場合は以下の記事も参照ください。

AWS Backup でしたら EFS、S3 などの他の AWS サービスのバックアップも含め集中管理ができます。

他には DLM(Data Lifecycle Manager)や、弊社から提供している opswitch でも定期的なバックアップ取得ができます。ついでに EC2 や RDS を夜間停止にしたいといったご希望があれば一度 opswitch をチェックしてみてください。運用負荷軽減に繋がるなにかが見つかるかもしれません。

バックアップが取れていない EBS ボリュームの見つけ方

Trusted Advisor から簡単に確認できます。ですが、AWS アカウントのサポート契約種類に応じて Trusted Advisor 機能制限があります。AWS ビジネスサポートと AWS エンタープライズサポートの契約であればフル機能が利用可能です。

クラスメソッドメンバーズでご契約いただいている AWS アカウントはフル機能でご利用いただけます。気にせず Trusted Advisor のサービスを開いていただければ OK です。

スナップショット(バックアップ)が未取得または、最後のスナップショットから7日以上経過している EBS ボリューム一覧を表示してくれます。

また、検知結果の一覧はエクセルフォーマットで出力できます。大量に EBS ボリュームが存在している場合は Excel で開いて確認した方が見やすいかもしれません。

EBS ボリュームの状態がエラーになったときに通知したい

AWS Health Dashboard のイベントは EventBridge のルールでフックして通知処理を実装できます。EBS エラーのためだけというよりも AWS のリージョン障害などの大規模障害で自分の AWS アカウント上で影響、問題の通知目的にも活用をご検討ください。

おわりに

定期的なスナップショット取得忘れがないか Trusted Advisor で確認してみたらいかがでしょうか。Trusted Advisor で検知する他の項目も運用改善に役に立ちますので是非一度確認してみてください。個人的には未アタッチのまま放置されている EIP を検知してくれるのが好きです。