mastodon 500 error disk full

今回はマストドン鯖を運用していて初めてのトラシューとなったので、ついでに記事にしました。
備忘録記事なので、内容はペーペーです。
この記事は Fediverse (4) Advent Calendar 2020 - Adventar 22日目の記事です。

事象

500 error f:id:HKsugao:20201222224859p:plain

原因

VPSのストレージ使用率が100%になっていたため。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           200M   29M  171M  15% /run
/dev/vda2        50G   47G  419M 100% /
tmpfs           997M  8.0K  997M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
/dev/loop0       98M   98M     0 100% /snap/core/10185
/dev/loop1       98M   98M     0 100% /snap/core/10444
tmpfs           200M     0  200M   0% /run/user/1000
tmpfs           200M     0  200M   0% /run/user/1001

最終的に解決した方法

VPSのディスク容量を増やす。

以下はその過程で行った内容です。

特にこれと言ってtootctlコマンドでの効果があったかというと、残念ながらさほど(3GB)ほどでした。
もっと別のコマンドなども試せばよかったのですが、3日ほどサーバを止めていたので、今回は深く探りませんでした。

実施内容

その1. redis キャッシュの削除

redis

 redis-cli
 config set stop-writes-on-bgsave-error no

tootctl

RAILS_ENV=production bundle exec bin/tootctl media remove

これを実施したところ100時間かかりそうだったorz
2日目の午後にのこり52時間というのをみて、一旦やめましたw
これで2GBくらい?空いた気がします。

あとredisのmaxmemoryを変更してもっと早くなるかと思いましたが、全くの無意味。
#違う違うそうじゃない とツッコミが飛んでくるんだろうなといった結果に。

参照元 qiita.com

その2. /var/log/配下を削除

わりとログが溜まってたし一気に削除と行きたいですが、念の為Gdriveに保存してから削除しました。
これで1GBくらいあいたかな?

その3. 不要なトゥートの削除

tootctl statuses removeを実施しました。
ちなみにこれを最初らへんに実施した際は、容量がパンパン過ぎて行えなかった。
以下エラー

$ RAILS_ENV=production bundle exec bin/tootctl statuses remove
Creating temporary database indices...
Beginning removal... This might take a while...
Removing temporary database indices to restore write performance...
bundler: failed to load command: bin/tootctl (bin/tootctl)
ActiveRecord::StatementInvalid: PG::DiskFull: ERROR:  could not extend file "base/16385/100487": wrote only 4096 of 8192 bytes at block 16586
HINT:  Check free disk space.

あとは以下記事を参考にソースを変更してみましたが、あまり効果は得られなかった。(なにか不足してることがあるかも)
MastodonのDBサイズが膨らんできたので不要っぽいレコードを削除した · GitHub

なので、順番的にはこれは最後行いました。 その時はすでにある程度redisキャッシュも消していたので、オプションの --skip-media-remove をつけて実行。
200Mくらい減った。

Sorekara do shitano

なんだわりと消えないなと悩んでいたら、ぐすくま氏から「ConoHaのメモリ2GBのプランは100GBに容量増えてるで」との連絡をうけました。
よっしゃということでサーバのスナップショットをとって、新しくたてたVPSへスナップショットから起動。
といった感じでした。
ちなみになんやかんやしてたら、バックアップ時は容量が49.37GBになってました。orz  
今まで行った意味 #とは

以下はConoHa環境でかかった時間の計測タイムです。

スナップショット取得時間 13分
イメージからサーバの構築 7分
DNSレコード変更から反映 2分 (ここはお名前.com)

といった感じで25分以内でサーバを元通りにし、容量を50GB→100GBにできました。
え?ConoHaはオプスタだから、cinderボリュームをリサイズすればできるんじゃね?わざわざサーバ本体変えなくていいんじゃね?って僕も思ってました。
それが見当たらなくて、提供されてない機能だったため、そのままサーバごと移行させてもらいました。

雑に総括

まぁそういった感じで久々に自分のサーバを触ると楽しいですね()
いや、無能ユーザの方々すまん!それと各サーバへもすまん!という反省していないスガオくんでしたとさ。
まあ無能丼だからさっ!
これからまた気が向いたら勉強していきます。引っ越しとかもろもろ終わったらね。
ではでは!