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

**URL:** <https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062>\
**Category:** Self-hosting\
**Tags:** server-resources\
**Created:** [2022年三月27日 01:01 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062 "2022-03-27T01:01:06Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月27日 23:00 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/21 "2022-03-27T23:00:56Z")

</div>

> [@Simon\_Manning](#):
>
> `du -h -s /* | sort -h -r`

`18G /var`

```plaintext
du -h -s /var/* | sort -h -r
14G /var/lib
2.8G /var/log
933M /var/discourse

```

```plaintext
du -h -s /var/lib/* | sort -h -r
13G /var/lib/docker
744M /var/lib/snapd

```

```plaintext
root@DO-Discourse:/var/discourse# du -h -s /var/lib/docker/* | sort -h -r
13G /var/lib/docker/overlay2
16M /var/lib/docker/image

```

```plaintext
root@DO-Discourse:/var/discourse# du -h -s /var/lib/docker/overlay2/* | sort -h -r
8.7G /var/lib/docker/overlay2/d319d95263d87c2a75a4bc9a9f03a25ea7f6eb1f7bac687e7ae7d45522939dc0
2.8G /var/lib/docker/overlay2/79be56509f1588c272683332ef50abd54f0aeb06d0e2d13f8eea1bace3b3db46
873M /var/lib/docker/overlay2/5b148cbbcca894be512c7407568104cd7b2e3d48ab7b7d74c6c0f731806cdddc

```

继续深入还有意义吗？

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月27日 23:21 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/22 "2022-03-27T23:21:48Z")

</div>

删除了 2.8G 的日志，但只腾出了 4.9G 的空间。没有“测试”实例来尝试 `./launcher rebuild app --skip-prereqs`

还有其他建议吗？

现在无法在 25G 的 droplet 上运行 discourse 实例了吗？

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2022年三月28日 07:09 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/23 "2022-03-28T07:09:46Z")

</div>

请参阅 [Prune unused Docker objects | Docker Docs](https://docs.docker.com/config/pruning/) 的末尾。  
我认为您想清理所有内容并清理卷。

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月28日 07:51 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/24 "2022-03-28T07:51:05Z")

</div>

```plaintext
docker system prune --volumes
警告！这将删除：
  - 所有已停止的容器
  - 所有未被至少一个容器使用的网络
  - 所有未被至少一个容器使用的卷
  - 所有悬空镜像
  - 所有悬空构建缓存

您确定要继续吗？ [y/N] y
总共回收空间：0B
root@DO-Discourse:/# 

```

还有其他建议吗？

---

<div class="post-metadata">

**Author:** ![Benjamin\_D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benjamin_d/32/277831_2.png) [@Benjamin\_D](https://meta.discourse.org/u/Benjamin_D)\
**Post date:** [2022年三月28日 10:29 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/25 "2022-03-28T10:29:25Z")

</div>

你有什么要用的 Snap 吗？

---

<div class="post-metadata">

**Author:** ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)\
**Post date:** [2022年三月28日 13:07 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/26 "2022-03-28T13:07:12Z")

</div>

> [@AndyBr](#):
>
> 还要继续吗？

不一定，这足以说明你的容器占用了 Docker 的空间。清理后，我的数字与你的非常相似，这或许（但不一定）表明它只是使用了多少。

> [@AndyBr](#):
>
> 现在是否无法在 25G 的液滴上运行 Discourse 实例了？

我确实在 25GB 的 Linode 上遇到过问题，但那是在有 500MB+ 的备份时，删除两三个备份后，我有了足够的空间进行重建。我选择升级到 50GB 的下一级，因为它只会变得更加受限，而且我想每月进行一次计划性重建。

那是在切换到 Ember CLI 之前，那是否会让东西变得大很多？

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2022年三月28日 17:03 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/27 "2022-03-28T17:03:52Z")

</div>

那个 9GB 的覆盖层似乎是问题所在。但我检查了另一个实例，上面有一个类似大小的覆盖层。25GB 的实例一直都很有挑战性。我建议你下定决心，购买更多的 SSD。接下来你可以尝试看看是否可以移除操作系统级别的（日志、不需要的程序、`find` 的索引，也许吧？）。

另一个想法是启动一个新的 25GB 虚拟机并迁移到那里，希望之前填满旧实例的东西这次不会成为问题。

这些答案似乎都不太令人满意。在过去一两周里，我帮助管理的一两个实例上，我曾努力应对 25GB 的配置，但我认为你已经做了我所做的一切。

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月28日 21:51 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/28 "2022-03-28T21:51:31Z")

</div>

> [@Benjamin\_D](#):
>
> 你是否需要 snap？

不确定。我是否需要它来进行仅 discourse 安装？如果不需要，我该如何删除它？

---

<div class="post-metadata">

**Author:** ![Benjamin\_D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benjamin_d/32/277831_2.png) [@Benjamin\_D](https://meta.discourse.org/u/Benjamin_D)\
**Post date:** [2022年三月28日 22:07 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/29 "2022-03-28T22:07:32Z")

</div>

> [@AndyBr](#):
>
> 我需要它用于仅 Discourse 的安装吗？

我不这么认为 🤔  
完整备份下载后，您可以运行 `snap list` 来检查安装了哪些 snap，如果没有，则运行 `sudo apt purge snapd`

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月29日 03:29 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/30 "2022-03-29T03:29:52Z")

</div>

```plaintext
root@DO-Discourse:/var/discourse# snap list
Name Version Rev Tracking Publisher Notes
core18 20220309 2344 latest/stable canonical✓ base
core20 20220304 1376 latest/stable canonical✓ base
lxd 4.0.9-8e2046b 22753 4.0/stable/… canonical✓ -
snapd 2.54.4 15177 latest/stable canonical✓ snapd
root@DO-Discourse:/var/discourse# 

```

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月29日 03:44 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/31 "2022-03-29T03:44:30Z")

</div>

> [@pfaffman](#):
>
> 那个9GB的叠加层似乎是问题所在

那些叠加层是什么？可以删除它们吗？

---

<div class="post-metadata">

**Author:** ![Benjamin\_D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benjamin_d/32/277831_2.png) [@Benjamin\_D](https://meta.discourse.org/u/Benjamin_D)\
**Post date:** [2022年三月30日 15:12 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/32 "2022-03-30T15:12:22Z")

</div>

您好 Andy，抱歉延迟回复。  
此时请注意，在不了解您的宿主系统的情况下，很容易误导您，所以请备份/快照/等等……（甚至可以备份，启动一个新实例并测试恢复过程，这对我来说是一次很好的练习）  
假设您不需要 lxd（`lxc list` 应该会显示已安装的容器），请执行 `snap remove lxd`（然后是 core18 和 20）。

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2022年三月30日 15:14 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/33 "2022-03-30T15:14:07Z")

</div>

可以分享一下 `docker images` 和 `docker ps -a` 的输出吗？

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月30日 16:14 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/34 "2022-03-30T16:14:53Z")

</div>

感谢您的帮助。是的，我对 Linux 知之甚少，所以我完全赞赏备份的建议。我有一个自动快照，并且在我像现在这样胡搞时会手动进行一次。

完全不知道 `lxd` 是什么。我不需要在这个 droplet 上运行 discourse/docker 之外的任何东西，因为它只是一个 discourse droplet。

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月30日 16:17 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/35 "2022-03-30T16:17:26Z")

</div>

> [@Falco](#):
>
> Can you share the output of `docker images` and `docker ps -a` ?

```plaintext
root@DO-Discourse:/var/discourse# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local_discourse/app latest 3dac608caa92 4 months ago 3.17GB
root@DO-Discourse:/var/discourse#

```

```plaintext
root@DO-Discourse:/var/discourse# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9abaf4517b7e local_discourse/app “/sbin/boot” 4 months ago Up 4 months 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
root@DO-Discourse:/var/discourse#

```

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2022年三月30日 16:36 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/36 "2022-03-30T16:36:51Z")

</div>

考虑到

> [@AndyBr](#):
>
> ```plaintext
> root@DO-Discourse:/var/discourse# docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> local_discourse/app latest 3dac608caa92 4 months ago 3.17GB
> 
> ```

和

> [@AndyBr](#):
>
> ```plaintext
> root@DO-Discourse:/var/discourse# du -h -s /var/lib/docker/overlay2/* | sort -h -r
> 8.7G /var/lib/docker/overlay2/d319d95263d87c2a75a4bc9a9f03a25ea7f6eb1f7bac687e7ae7d45522939dc0
> 2.8G /var/lib/docker/overlay2/79be56509f1588c272683332ef50abd54f0aeb06d0e2d13f8eea1bace3b3db46
> 873M /var/lib/docker/overlay2/5b148cbbcca894be512c7407568104cd7b2e3d48ab7b7d74c6c0f731806cdddc
> 
> ```

我认为你的 overlay2 文件夹上有一些悬空层。

请参阅此 StackOverflow 回答以获取指导：

> <https://stackoverflow.com/questions/46672001/is-it-safe-to-clean-docker-overlay2/70527862#70527862>

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月30日 17:00 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/37 "2022-03-30T17:00:00Z")

</div>

谢谢。  
这对我来说有点难，我只是做一个快照然后删除它们看看会发生什么，这样安全吗？

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2022年三月30日 17:35 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/38 "2022-03-30T17:35:30Z")

</div>

我认为可以安全地删除所有这些图片。如果你需要它们，重建时它们会被替换。

拍个快照倒是个不错的主意。

我会这样做：启动一个新实例；这是最安全的方法，而且可能比拍快照更快，但如果你觉得不知道如何做不有趣或没有指导意义，你的想法也很好。

---

<div class="post-metadata">

**Author:** ![AndyBr](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@AndyBr](https://meta.discourse.org/u/AndyBr)\
**Post date:** [2022年三月30日 19:31 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/39 "2022-03-30T19:31:21Z")

</div>

删除了其中一张图片，问题解决了！

感谢大家的帮助。

---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)\
**Post date:** [2022年四月29日 19:31 UTC](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062/40 "2022-04-29T19:31:52Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

[上一頁](https://meta.discourse.org/t/discourse-upgrade-fails-due-to-insufficient-disk-space-on-25g-droplet/222062.md?page=1)
