DigitalOceanのサーバーが死んでた話

久しぶりに自分のブログにアクセスしてみたところ、500エラーだった。
このブログのサーバーに使ってるDigialOceanのサーバーが知らないうちに死んでた。
普段から書かないものだからいつからこうなってたのGoogleAnalytics見てみると1月末日からだった。。。

まぁもうないとおもうけど備忘録ついでに久しぶりに書いておこうかと。

Apacheが死んでるんだろうと思ってsshでサーバーに入ってみた。
とりあえずApacheを再起動させようと再起動のコマンドの入力途中で補完しようとTabキーを押したら

cannot create temp file for here-document: Read-only file system

あれ?
ファイルシステムがリードオンリーだと?!
そんな馬鹿な。。。放置してただけでリードオンリーになるファイルシステムってなんじゃいな。
ディスクが壊れたのか?

うーん、サーバーのディスク修復なんてしたことないけどいろいろググってみた。

fsckコマンド使えばいけるらしい

fsck /dev/vda1

コマンド叩いて見るも、意味不明にUUIDが解決できないって怒られる。

そしてディスク修復できないままさらにググる。

どうやらディスクのUUIDが変わってしまったのか、マウントするディスクのUUIDが変わったのかのどちらかの模様。
ディスクのUUIDを調べる方法をさらにググる

tune2fs -l /dev/vda1 | grep UUID
Filesystem UUID: 18254707-08e8-494e-b456-************

自動マウントするディスクのUUID

cat /etc/fstab
UUID=815063a9-c956-44a6-ab11-************ / ext4 errors=remount-ro 0 1

UUID違う。。。
/etc/fstabが書き換えられれば復旧できるのだがそもそもReadOnlyである。

がんばってこの状態で書き換えられる方法をググる
再マウントして書き込み権限をつけてマウントすればいいらしいのでやってみる

mount / -o remount,rw
mount: can’t find UUID=815063a9-c956-44a6-ab11-************

見つからない。
ですよね。
今マウントされてるのはUUIDが18254707…のディスクなんだし出来るわけがない。

もうどうしようもないと諦めモードで最後の望みをかけてDigitalOceanのサポートに連絡。
英語なんてできないので、今までやってきたコマンドとその結果だけを貼り付けて送信。
返事を待ってみること1日で返事が来た。
返事の内容は

ファイルシステムに異常があるみたいだね。ごめんね。
次の方法でファイルシステムを修復してみてくれ

1.サーバーを落として管理画面のkernelからDO-recovery-static-fsckに変更
2.再起動して管理画面のコンソール経由でサーバーにアクセス
3.次のコマンドを実行 fsck /dev/vda1
4.いくつかエラーを修復するか聞いてくるから「はい」と答える
5.サーバーを落とす

追加でサポートが必要ならまた連絡してくれ

じゃあね

うーむ、根本的にディスクが壊れてるわけではないはずなんだが、やっぱりコマンドとその結果だけでは伝わらなかったか。。。
しかし、リカバリー用のイメージに変更することが出来るならなんとかなるかもしれないと思い、リカバリーモードにしてみる。
とりあえず問題のディスクを探してみる。
/dev/vda1はあったがどうやらリカバリーイメージ上にはマウントされていない模様。
適当なディレクトリにマウントしてみる。
etc/fstabがあったので編集するかとviしたらviなかった。。。
え?これどうしたらいいの?
どうやらリカバリーモードで使えるコマンドにはかなりの制限があった。
今あるコマンドだけでやりくりしないといけないということか

viがないだけでファイルは読み書きできるしsedで置換してファイルに書き込めばいけるはず。
ファイルを書き換え完了して、kernel戻してサーバーを再起動。

ブログにアクセスする前にターミナルからsshログイン。
適当なコマンドの途中でTabキー押してみる。
エラーが出なくなった!
これでブログにもアクセス出来るはずとブログにもアクセス。

無事表示された。

いやー、マジ終わったと思った。