ディスク容量が不足しているため、Discourseインスタンスのアップデートができません

こんにちは

25GBのストレージを持つサーバーに、小規模なDiscourseインスタンスを運用しています。現在、空き容量は3.4GBしかなく、その理由が不明です。そのため、アップデートを実行することができません。

このインスタンスにはDiscourse以外のサービスは稼働しておらず、過去にもありませんでした。

これまでに、以下の作業を行い、容量を確保しようとしました:

  • Discourseおよび/var/log/journalから、見つかったすべてのログを削除しました
  • Discourseのバックアップは1つを残し、他をすべて削除しました
  • 古いDockerイメージをすべて削除しました
  • apt-get autocleanおよびapt-get autoremoveを実行しました
  • 古いカーネルが残っていないことを確認しました

PostgreSQLのデータを外部ドライブに移動することも検討しましたが、現在のデータサイズは1GB未満なので、それでは十分な容量が確保できるとは思いません。

/dev/vda1は20GBの容量を使用しています。

他にできることはありますか? Discourseを運用するには、25GBではもはや十分なディスク容量とは言えませんか?

主にアップロードファイルの量に依存しますが、バックアップやPostgreSQLも影響します(サイトが非常に大きい場合ですが、今回は問題ではないようです)。アップロードファイルの総容量はどのくらいですか?管理ダッシュボードの下部に表示されています。

50MB未満なので、これは決して大規模でも古いインスタンスではありません。前述の通り、メインドライブから移動させることも検討しましたが、これが主な問題ではないと思います。

アップロードファイルが約25MBで、PostgreSQLが約1GBの場合、Discourseが不要なバックアップを作成している可能性があります。バックアップの保持設定(管理者 > 設定 > バックアップ)を確認し、現在のバックアップ(管理者 > バックアップ)を確認して、不要なものを削除してください。

ディスクからコピーした後に残っていた最後のバックアップを削除しました。それでもまだ3.5GBしか残っていません。

はい、ごめんなさい。投稿を更新した手順で修正しました。

このサーバーには /shared/ ディレクトリがありません。

du -sh /var/discourse/* から取得した結果は以下の通りで、合計は 658M です:

4.0K    /var/discourse/LICENSE
12K     /var/discourse/README.md
4.0K    /var/discourse/bin
4.0K    /var/discourse/cids
8.0K    /var/discourse/containers
12K     /var/discourse/discourse-doctor
8.0K    /var/discourse/discourse-setup
368K    /var/discourse/image
8.0K    /var/discourse/install-discourse
28K     /var/discourse/launcher
32K     /var/discourse/samples
8.0K    /var/discourse/scripts
657M    /var/discourse/shared
180K    /var/discourse/templates

ファイルシステムで最もスペースを占めているのは、2.4 GB の /var/lib/containerd/io.containerd.content.v1.content と、驚くべき 12 GB の /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs です

すみません、コンテナ内にいる必要があることをお伝えし忘れていました。あなたが言及したファイルは Docker のものです。docker system df コマンドで何が使用しているかを確認し、必要に応じて docker system prune コマンドでグローバルなクリーンアップを実行できます。ただし、その操作を行う際は Discourse が稼働していることを確認してください。

ああ、それは理にかなっていますね。

コンテナ内で1GBを超えるのは /var/www/discourse/vendor/bundle/ruby/ の2.1GBだけです。

イメージの更新をプルした後にプリニング(不要なイメージの削除)を行えば、十分な空き容量が確保できます。しかし、更新を試みると再度イメージがプルされ、その結果空き容量が失われてしまいます。つまり、新しいイメージはほぼ5GBの容量を占めていることになります。

その Docker コマンドの出力を表示できますか?そのディレクトリは Ruby の gem がすべて格納されている場所ですが、そのサイズは私には異常に思えません。

実際には、すべての出力を表示してください。コンテナ内部を覗き回ることはお勧めしません。問題はシステムレベルにあるので、そこから調べ始めるべきです。そして、問題がありそうな場所だけを見るのではなく、全体像を見てください。

まず、再起動してください。クリーンなファイルシステムと新しいシステムの状態を確保したいからです。

次に、この以前のスレッドを参照して詳細なアドバイスを確認してください: