Недостаточно места на диске для обновления экземпляра Discourse

Здравствуйте,

У меня есть небольшой экземпляр Discourse на сервере с 25 ГБ дискового пространства. В настоящее время свободно только 3,4 ГБ, и я не уверен, почему. Это мешает мне выполнять обновления.

На этом экземпляре не запущено никаких других сервисов, кроме Discourse, и их никогда не было.

Пока что, чтобы освободить место, я:

  • удалил все найденные журналы как из Discourse, так и из /var/log/journal
  • удалил все резервные копии Discourse, кроме одной
  • очистил старые образы Docker
  • выполнил apt-get autoclean и apt-get autoremove
  • убедился, что у меня нет старых ядер

Я подумывал перенести данные PostgreSQL на внешний диск, но сейчас они занимают менее гигабайта, так что, думаю, это не поможет достаточно.

/dev/vda1 использует 20 ГБ пространства.

Есть ли что-то еще, что я могу сделать? Не является ли 25 ГБ недостаточным объемом дискового пространства для запуска Discourse?

Это зависит в основном от ваших загрузок, а также от резервных копий и PostgreSQL, если ваш сайт очень большой (что, судя по всему, не является проблемой). Каков объём ваших загрузок? Эта информация должна отображаться внизу панели администратора.

Это менее 50 МБ, это совсем не большой или старый экземпляр. Как я уже упоминал, я подумывал перенести его с основного диска, но не думаю, что это основная проблема.

Если ваши загрузки занимают ~25 МБ, а PostgreSQL — ~1 ГБ, я бы предположил, что Discourse создает резервные копии, которые вам не нужны. Проверьте настройки хранения резервных копий (Админ > Настройки > Резервные копии) и посмотрите текущие резервные копии (Админ > Резервные копии), удалив те, которые вам не нужны.

Я удалил оставшийся резервный файл после его копирования с диска. У меня всё ещё осталось только 3,5 ГБ.

Да, извините, я только что обновил свой пост с новыми инструкциями.

На этом сервере нет директории /shared/.

Вот что я получил от du -sh /var/discourse/*, всего 658 МБ:

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

Наибольшее место на файловой системе занимают /var/lib/containerd/io.containerd.content.v1.content (2,4 ГБ) и /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs (огромные 12 ГБ)

Извините, забыл упомянуть, что нужно находиться внутри контейнера. Файл, о котором вы говорили, относится к Docker. Вы можете проверить, чем он используется, с помощью команды docker system df, и при необходимости выполнить глобальную очистку с помощью docker system prune, но убедитесь, что Discourse запущен, когда вы это делаете.

Ах, это имеет смысл.

В контейнере единственный файл, размер которого превышает 1 ГБ, — это /var/www/discourse/vendor/bundle/ruby/, занимающий 2,1 ГБ.

Добавлю: если я очистит образ перед обновлением, чтобы он скачался заново, у меня хватает места. Но когда я пытаюсь выполнить обновление и он снова скачивается, место заканчивается. То есть новый образ занимает почти 5 ГБ.

Можете показать вывод этой команды Docker? Эта директория содержит все Ruby-гемы, и такой размер меня не пугает.