###問題発生の経緯
ec2インスタンスがメンテナンスのため再起動すると通知があった。
そのため、事前に影響を調査してインスタンスを停止・起動すると中身が別のものになってて動いていたサービスが動かなくなってしまった。
原因
起動時のデバイスの自動マウントはetc/fstabで設定できる。
設定内容はこんな感じ(一部省略)
LABEL=/ / ext3 defaults 1 1
このLABELというのはe2labelでデバイスをラベルにマッピングできる機能を使っている。
例えば以下のように設定したら/dev/sda1というデバイスをLABEL=/hogeという形で参照できる
e2label /dev/sda1 /hoge
問題の原因は停止・起動前に、別のデバイスへ/のラベルをe2labelで割り当ててしまってそのまま放置していたことだった。
EBSで別ボリュームをec2インスタンスにアタッチ → e2labelで別ボリュームにラベルを割り当てる → メンテナンス時に停止・再起動しサーバーの中身が別物になったように見える。
対応
mountコマンドでec2インスタンスにアタッチされていたボリュームをマウントし、中身を確認後、元々ルートにマウントされていたデバイスに再度e2labelで/のラベルを割り当て直した。
その後はec2インスタンスを停止・再起動して元に戻った。
反省点
今回の直接的な原因はe2labelでラベルを割り当て直してそのまま放置していたことである。
作業ログを残していれば原因がすぐ分かったし、作業内容を忘れていたのがまずかった。
後は不要なボリュームをec2にアタッチしていたまま放置していたのもよくなかった。
ここら辺の無駄なリソースはきちんと整理して置かないと後で、必要・不要の判断ができなくなってしまうし、今回のような問題につながってしまうこともある。