Espace disque trop plein pour mettre à jour l'instance Discourse

Bonjour,

J’héberge une petite instance Discourse sur un serveur disposant de 25 Go d’espace disque. Actuellement, il ne me reste que 3,4 Go libres, et je ne sais pas pourquoi. Cela m’empêche d’effectuer les mises à jour.

Aucun autre service ne tourne sur cette instance, et ce n’a jamais été le cas.

Jusqu’à présent, pour libérer de l’espace, j’ai :

  • supprimé tous les journaux que j’ai pu trouver, tant ceux de Discourse que ceux de /var/log/journal
  • supprimé tous mes sauvegardes Discourse sauf une
  • nettoyé toutes les anciennes images Docker
  • exécuté apt-get autoclean et apt-get autoremove
  • vérifié qu’aucun ancien noyau n’était présent

J’ai envisagé de déplacer mes données PostgreSQL sur un disque externe, mais elles ne font pas encore un Go, donc je ne pense pas que cela suffise à résoudre le problème.

/dev/vda1 utilise 20 Go d’espace.

Y a-t-il autre chose que je puisse faire ? 25 Go ne sont-ils plus suffisants pour faire tourner Discourse ?

Cela dépend principalement de vos téléchargements, mais aussi des sauvegardes et de PostgreSQL si votre site est très volumineux (ce qui ne semble pas être le problème ici). Quelle est la taille de vos téléchargements ? Le tableau de bord administrateur devrait l’indiquer en bas de page.

Cela fait moins de 50 Mo, ce n’est donc pas une instance volumineuse ou ancienne. Comme je l’ai mentionné, j’ai envisagé de la déplacer hors du disque principal, mais je ne pense pas que ce soit le problème majeur ici.

Si vos uploads font ~25 Mo et que votre Postgres fait ~1 Go, je suspecterais que Discourse effectue des sauvegardes dont vous n’avez pas besoin. Je vérifierais vos paramètres de rétention des sauvegardes (Admin > Paramètres > Sauvegardes) et regarderais vos sauvegardes actuelles (Admin > Sauvegardes) pour supprimer celles dont vous n’avez pas besoin.

J’ai supprimé la seule sauvegarde restante après l’avoir copiée hors du disque. Il ne me reste toujours que 3,5 Go.

Oui, désolé, je viens de mettre à jour mon message avec des instructions actualisées.

Ce serveur ne possède pas de répertoire /shared/.

Voici ce que j’ai obtenu avec du -sh /var/discourse/*, soit 658 Mo au total :

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

Les plus gros consommateurs d’espace sur le système de fichiers sont /var/lib/containerd/io.containerd.content.v1.content avec 2,4 Go et /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs avec pas moins de 12 Go.

Désolé, j’ai oublié de préciser que vous deviez être à l’intérieur du conteneur. Le fichier que vous avez mentionné provient de Docker. Vous pouvez vérifier ce qui l’utilise avec docker system df et effectuer un nettoyage global avec docker system prune si nécessaire, en vous assurant simplement que Discourse est en cours d’exécution lorsque vous le faites.

Ah, ça a du sens.

Dans le conteneur, la seule chose qui dépasse 1 Go est /var/www/discourse/vendor/bundle/ruby/ avec 2,1 Go.

Je précise que si je nettoie l’image avant la mise à jour, j’ai assez d’espace, mais quand j’essaie de mettre à jour et qu’elle est à nouveau téléchargée, je me retrouve à court. Donc l’image mise à jour occupe presque 5 Go.

Pouvez-vous afficher la sortie de cette commande Docker ? Ce répertoire contient tous les gems Ruby, et cette taille ne me semble pas alarmante.

En effet, veuillez afficher toutes vos sorties. Je ne vous recommande pas de fouiller à l’intérieur du conteneur — votre problème est au niveau système, et c’est là qu’il faut commencer à chercher. Et ne regardez pas là où vous pensez qu’il pourrait y avoir un problème, mais examinez l’ensemble de la situation.

D’abord, redémarrez. Vous voulez un système de fichiers propre et un système frais.

Ensuite, consultez ce fil de discussion précédent pour des conseils détaillés :

[quote=“Ed_S, post:3, topic:404122”]
Veuillez publier des détails sur ce qui s’est passé
[/quote]}

Avez-vous exécuté

./launcher cleanup

Ou autrement épuré Docker ?

Il est difficile de s’en sortir avec 25 Go, sauf pour les plus petits forums.

Mon forum est un petit forum (en fait, c’est presque que moi) et j’utilise un VPS de 40 Go juste pour être tranquille et ne pas avoir à craindre que les mises à jour me causent des maux de tête.

C’est le seul de mes trois VPS qui n’utilise pas 20 Go : les deux autres sont un serveur HTTP avec un backend MySQL et PHP, et un serveur RTMP. Celui qui exécute Discourse héberge aussi docker-mailserver, mais j’ai désactivé la digestion des e-mails et DMS a une empreinte mémoire minuscule.

Cela résoudra probablement votre problème.

Pour libérer un peu d’espace, j’utilise ces commandes, cela peut aider lors de la reconstruction

sudo apt -y autoremove && apt -y autoclean
sudo apt clean
sudo journalctl --vacuum-time=1s

1 et 2 nettoient Ubuntu
3 nettoie certains journaux, cela libère généralement environ 3 Go

Cela figurait dans le message initial, mais il est évidemment préférable d’exécuter la commande Discourse

Merci pour vos réponses ! Désolé pour ma disparition, la vie m’a rattrapé et je n’ai pas eu le temps de faire plus de dépannage hier.

En résumé, j’ai remarqué combien il y avait de fils de discussion sur ce problème exact et j’ai estimé que même si je le résolvais cette fois, il se reproduirait, alors j’ai déplacé mon instance sur un serveur légèrement plus grand avec 35 Go d’espace.

Pour toute personne cherchant de l’aide ici pour ce problème exact qui ne souhaite pas mettre à niveau :

./launcher cleanup était quelque chose que j’avais déjà essayé, cela n’a pas libéré suffisamment d’espace. J’avais également déjà exécuté

sudo apt -y autoremove && apt -y autoclean
sudo apt clean
sudo journalctl --vacuum-time=1s

Et encore une fois, ce n’était pas suffisant. Il y avait beaucoup (pour une machine de 25 Go) de journaux dans journalctl, alors vérifiez absolument si c’est le cas pour vous, mais pour moi, cela n’a pas aidé assez.