azhdrake
(Azhdrake)
1
你好,
我在一台拥有 25GB 空间的服务器上运行着一个小型 Discourse 实例。目前只剩下 3.4GB 的可用空间,我不确定原因。这导致我无法进行更新。
除了 Discourse 之外,该实例上没有运行其他服务,以前也没有过。
为了释放空间,我目前已经做了以下操作:
- 删除了所有能找到的日志,包括 Discourse 日志和
/var/log/journal 中的日志
- 删除了除一个之外的所有 Discourse 备份
- 清理了所有旧的 Docker 镜像
- 运行了 apt-get autoclean 和 apt-get autoremove
- 确保没有遗留旧内核
我曾考虑将 PostgreSQL 数据移动到外部驱动器,但目前它不到 1GB,所以我认为这样做帮助不大。
/dev/vda1 正在占用 20GB 的空间。
我还能做些什么吗?25GB 的磁盘空间现在是否已不足以运行 Discourse?
这主要取决于你的上传文件,但如果你的站点非常大(听起来这似乎不是问题所在),备份和 PostgreSQL 数据库也会占用空间。你的上传文件有多大?管理面板底部应该会显示相关信息。
azhdrake
(Azhdrake)
3
它不到 50MB,这完全不是一个大型或老旧的实例。正如我提到的,我考虑过将其移出主驱动器,但我认为这不是这里的主要问题。
如果您的上传文件约为 25MB,而 PostgreSQL 数据库约为 1GB,我怀疑 Discourse 正在创建您不需要的备份。请检查您的备份保留设置(管理员 > 设置 > 备份),查看当前的备份(管理员 > 备份),并删除任何不需要的备份。
算了。要是我记得您之前已经清理过就好了。
您可以检查常见位置中占用空间的情况:
du -sh /shared/*
du -sh /var/www/discourse/*
du -sh /var/www/discourse/public/*
azhdrake
(Azhdrake)
5
我复制了仅存的备份并将其从磁盘上移除后,将其删除。我现在只剩下 3.5 GB 的空间。
是的,抱歉,我刚刚更新了帖子,并附上了更新后的说明。
azhdrake
(Azhdrake)
7
此服务器没有 /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
文件系统中占用空间最大的是 /var/lib/containerd/io.containerd.content.v1.content,占用 2.4 GB,以及 /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs,占用惊人的 12 GB
抱歉,忘了提你需要在容器内操作。你提到的那个文件来自 Docker。你可以用 docker system df 查看它被什么占用,如果有需要,可以用 docker system prune 进行全局清理,但请确保操作时 Discourse 正在运行。
azhdrake
(Azhdrake)
9
啊,这就说得通了。
在容器中,唯一超过 1GB 的文件是 /var/www/discourse/vendor/bundle/ruby/,大小为 2.1GB。
我补充一下:如果我在更新拉取之前清理镜像,空间就足够了;但当我尝试更新并再次拉取时,空间又不够了。所以新镜像几乎占用了 5GB 的空间。
你能展示一下那个 Docker 命令的输出吗?那个目录包含了所有的 Ruby gems,这个大小在我看来并不令人担忧。
Ed_S
(Ed S)
11
确实,请展示所有输出。我不建议你在容器内部四处查看——你的问题出在系统层面,应该从那里开始排查。不要只盯着你认为可能存在问题的地方,而要纵观全局。
首先,重启系统。你需要一个干净的文件系统和一个全新的系统状态。
接下来,参考这个之前的帖子以获取详细建议: