インスタンスの容量の節約のアイデア


#1

インスタンスは少人数でも連合タイムラインからどんどん画像や動画が入ってきます。そうすると嫌でもサーバの容量を気にしなければならなくなります。
皆さんはこの問題をどうやって解決していますか?


#2

私が管理しているインスタンスではまだ実行していませんが、添付ファイルのキャッシュ削除を行うタスク(mastodon:media:remove_remote)を定期的に実行するという手段があります。
また、画像が比較的大量に送られてくるインスタンスに対して予めメディアファイルの拒否設定を行っているインスタンスも存在するようです。
なお、金銭的に問題がなければS3等のオブジェクトストレージに逃がすという手段もあります。


#3

うちのインスタンス(実質的にお一人様)では当初からすべての添付画像をS3に置くようにしています。
EC2以外を利用している場合はどうなるか知りませんが、EBSの容量を増やすよりも大幅にコストが低く、可用性にも優れているので。

半年間ほぼ mastodon:media:remove_remote タスクを走らせない方針で運用してきましたが20GBほど、月あたりのコストは(ほかのバケットも含んでですが)たったの$0.70程度しかかかっていません。ただ、v2.0から仕様変更で流れてくる画像が一気に増えたためストレージの使用量も大幅には増えてはいます。(むしろ使用量がこんなに不安定なので本体と同居させようとは全く思えないわけですが)

ところで.jpが初期にオブジェクトストレージに切り替えるためにリセットした経緯があるようにあとから変えるのもあまり現実的で無さそうですよね……小規模ならなんとかなるんでしょうか?


#4

メディアのキャッシュもそうですが、docker環境で運用していると不要なコンテナ等が溜まっていって容量を圧迫していきますね。
私はこれを知らず、容量不足に悩んだことが有ります。。。
以降は docker system prune をたまに実行してお掃除してます。

稼働済みインスタンスのキャッシュを外部へ持ってくのは mastodon/public/system (docker環境はwebコンテナ内)の中身をまるっとS3バケットなりへコピーするだけなので難しくはないですが、ファイル数が多くて面倒でしたね。
我が家では2週間ほど経ってから移行させ、以降は問題なく稼働してます。
また、サーバーの引っ越し等も外出ししていると大変楽でした。
アクティブが数名しか居ないのも手伝ってか、S3のコストも1ドル/月程度で済んでます。


#5

画像に関して言えば、アイマストドンのようにjpg変換を導入するという手もあります。ちょうど先程フサギコさんが公開された記事に、関連するPRやスライドのリンクが載っています。

これも含め、 media_attachment.rb で指定されている設定はリモートのメディアを保存する際にも適用されるので、妥協できるポイント等があればこのあたりの設定を調整するのは効果的だと思います。(ローカル投稿にも適用されてしまいますが)


#6

うちではpngをzopflipngを使って再圧縮しています。無劣化ですし、かなりの容量の削減もみこめます。
ただやるとなるとかなりのCPUリソースと時間を喰うのでそこがネックですね。


#7

調べた所、preview_cardsで大量に同一の画像があってそれが容量を圧迫していました。
バグですね。