数日前から、mysqlの特定のテーブルにアクセスできなくなる不具合が、断続的に発生するようになりました。ls
コマンドなどを打つと Input/output error
が出力されるので、ディスクの不具合が疑われる状況です。fsckのコマンドも中断してしまうような感じ。
$ sudo e2fsck -n /dev/vdb1
Illegal block #1035 (741355576) in inode 6684681. IGNORED.
Illegal double indirect block (197984768) in inode 6684681. IGNORED.
Illegal double indirect block (808202284) in inode 6684681. IGNORED.
Error while iterating over blocks in inode 6684681: Illegal doubly indirect block found
e2fsck: aborted
今回、/dev/vda2
でも Filesystem still has errors
と警告が出ましたが、こちらは無害そうなのでスルーしています。
復旧手順
以下の手順でCDブートしたLinuxからfsckを実行することで、ファイルシステム自体は正常な状態に戻すことが出来ました。
mysqlデータベースの一部ファイルが欠損して、復元ができなかった箇所がありました。
教訓
ハードウェア障害だろうと思って、サポートに連絡したら冷たく突き放された回答が…。
トラブル対応に伴う原因究明や改善手順のご案内などは承っておりません。ご了承ください。
上記の「復旧手順」も同回答の中で案内されているので、実際には的確なアドバイスを貰った格好になるのですが、「クラウド=メンテナンスフリー」と捉えると痛い目に遭うよ、という事例を身をもって体験しました。オンプレミス(物理サーバ)同様に障害への備えも必要になってきます。
同じような事例に遭遇している記事も見つかりました。
http://d.hatena.ne.jp/ranekov/20111222/1324480989
http://d.hatena.ne.jp/nnasaki/20111220/1324391155
この辺り、AWSやGCPはどう振る舞うのか気になるところです。