Discourse升级因25G droplet磁盘空间不足而失败

我有一个 25g 的液滴,Discourse 声称它足够大,但我无法升级到最新版本,因为我存储空间不足。我的论坛非常小,流量也很少。

我运行了 ./launcher cleanup 甚至删除了旧的备份,但仍然没有成功。

我该怎么办?

root@DO-Discourse:/var/discourse# ./launcher rebuild app
检测到 x86_64 架构。

警告:我们将开始下载 Discourse 基础镜像
此过程可能需要几分钟到一小时,具体取决于您的网络速度
请耐心等待

2.0.20220224-2005:正在从 discourse/base 拉取
5eb5b503b376:拉取完成
35b2f73fc27b:拉取完成
44526e3ec669:拉取完成
摘要:sha256:8a8bb9525882220196c0faa8ce95c62a7fb607fc203d4247b3d5985f3ca9c3d8
状态:已下载 discourse/base:2.0.20220224-2005 的更新镜像
docker.io/discourse/base:2.0.20220224-2005
您在 /var/lib/docker 所在的磁盘上剩余的可用空间不到 5GB。您需要更多空间才能继续
文件系统      大小  已用  可用  使用率  挂载点
/dev/vda1        25G   22G  3.0G   88%  /

您想尝试通过清理系统中的 docker 镜像和容器来恢复空间吗? (y/N)y
如果清理成功,您现在可以重试
root@DO-Discourse:/var/discourse#
root@DO-Discourse:/var/discourse# df -h
文件系统      大小  已用  可用  已用%  挂载点
udev            448M     0  448M    0%  /dev
tmpfs            99M  1.1M   98M    2%  /run
/dev/vda1        25G   18G  6.2G   75%  /
tmpfs           491M     0  491M    0%  /dev/shm
tmpfs           5.0M     0  5.0M    0%  /run/lock
tmpfs           491M     0  491M    0%  /sys/fs/cgroup
/dev/vda15      105M  9.2M   96M    9%  /boot/efi
overlay          25G   18G  6.2G   75%  /var/lib/docker/overlay2/d319d95263d87c2a75a4bc9a9f03a25ea7f6eb1f7bac687e7ae7d45522939dc0/merged
/dev/loop10      56M   56M     0  100%  /snap/core18/2284
/dev/loop7       44M   44M     0  100%  /snap/snapd/14978
/dev/loop5       62M   62M     0  100%  /snap/core20/1361
/dev/loop2       68M   68M     0  100%  /snap/lxd/22526
/dev/loop1       62M   62M     0  100%  /snap/core20/1376
/dev/loop3       44M   44M     0  100%  /snap/snapd/15177
/dev/loop4       56M   56M     0  100%  /snap/core18/2344
/dev/loop6       68M   68M     0  100%  /snap/lxd/22753
tmpfs            99M     0   99M    0%  /run/user/0
root@DO-Discourse:/var/discourse# 

您可以尝试运行 ./launcher cleanup,但如果这没有帮助,您将不得不为服务器添加更多磁盘。

1 个赞

您可以(但不应)
./launcher rebuild app --skip-prereqs

正如我之前所说,已经做过了,实际上是做了几次。
我读到过 discourse 理想情况下需要 20-30gb。我有 25gb,所以它需要更多是很奇怪的。要求是否已更改?

不确定您的意思。

我的意思是,在测试实例上短期使用,我试过了(我认为有 4.6GB 剩余空间还可以),但我不会在生产环境中使用它。

sudo apt autoremove --purge 也许?

1 个赞

另请检查您是否有大量备份。

1 个赞

存储要求取决于上传到您的 discourse 实例的媒体量。

1 个赞

我感到惊讶的是,当我随意玩弄时,我的 DO 沙盒网站的增长速度如此之快。
如果您现在遇到问题,您可能只需要删除足够的内容就可以让 Discourse 升级,但下次数据库会更大一些,您可能会有更多的媒体。
如果您确实有很多媒体,迁移到 S3 存储可以释放空间,否则调整 droplet 大小可能是您唯一的选择。

在 DO 上,AMD droplet 应该会好很多……我的基准测试不是这样(我在网上看到的 :face_with_raised_eyebrow:) - 这里

1 个赞

明白了。已使用的存储量显示在哪里?

明白了。我的数据库是 60MB,我删除了所有备份。

正如我之前所说,删除了所有备份。(不过我的数据库只有 60MB,所以这并没有带来什么实质性的改变)

1 个赞

root@DO-Discourse:/var/discourse# apt autoremove --purge
Reading package lists… Done
Building dependency tree
Reading state information… Done
0 upgraded, 0 newly installed, 0 to remove and 94 not upgraded.
root@DO-Discourse:/var/discourse#

您可以尝试清除 apt 缓存。

apt clean

您也可以尝试运行

du -h -s /* | sort -h -r

来找出空间被用在哪里。例如,如果大部分空间在 /usr 下,您可以重复使用

du -h -s /usr/* | sort -h -r

依此类推。如果运气好的话,这会找到一些可以清除的大东西,但显然不要在不了解是什么的情况下删除任何东西——也就是说,除非您确定可以安全删除,否则不要删除任何东西。

1 个赞

快速查看的话,你的 /admin 仪表板上有一个“上传量”:

1 个赞

我之前的命令是否提供了这些信息?

root@DO-Discourse:/var/discourse# cd ..
root@DO-Discourse:/var# cd ..
root@DO-Discourse:/# du -h --max-depth=1 -x
13G     ./var
301M    ./boot
5.4M    ./etc
116K    ./tmp
4.0K    ./srv
4.0K    ./home
28K     ./snap
4.0K    ./media
3.3G    ./usr
4.0K    ./mnt
901M    ./root
24K     ./opt
16K     ./lost+found
19G     .
root@DO-Discourse:/#