helmi
(Helmi)
1
我们正在一个VPS设置上运行一个更大的Discourse安装,它基本上对我们来说效果很好。在CPU/内存性能方面,我们有足够的空间。但磁盘空间有点问题——不是在日常业务中,而是在升级Postgres时(例如,由于这个原因,13->15的升级仍然未完成),我们缺乏空间,而且无法轻易扩展。
我知道Postgres更新还有其他选择,但请把这看作是一个更一般的问题。
我们正在Hetzner上运行,在那里网络存储可以很容易地用于临时用途。
在我们的测试服务器上,我正在尝试使其以临时方式工作——首先是从实时站点恢复备份,稍后测试Postgres升级。到目前为止,我还没有成功。
我已经尝试过符号链接,但注意到它不起作用,并且也在这里的某个地方读到它不是推荐的方法。我也尝试过将/shared共享从/var/discourse/shared/standalone移动到/mnt/ext-storage/standalone,并将文件移动到那里——不幸的是,并非没有问题。我甚至无法完成构建。
是否有任何方法适用于这些情况?我知道驱动器性能比本地驱动器差很多,但我并不打算在它上面运行论坛。我只是想找到一种舒适的方式在某些场景中使用它。
pfaffman
(Jay Pfaffman)
2
如果您的目标是进行升级,最简单的方法是启动一个新的虚拟机并迁移到它。这样可以跳过升级数据库的需要,并且您可以在虚拟机上获得新的操作系统,而这很可能无论如何都需要进行。
遵循使用 rsync 将 Discourse 站点迁移到另一台 VPS 指南,不要复制数据库(但要复制上传文件、Let’s Encrypt 证书和 SSL 证书)。
如果您的备份在 s3 上,那么冻结旧的实例、进行备份并在新机器上恢复备份会非常简单。
如果 hetzner 有某种永久 IP 地址可以分配给不同的服务器,您甚至不需要更改 DNS。
您应该知道自己可以构建一个新服务器,这样万一有一天需要,您就能做到。这是一个完美的练习机会。
helmi
(Helmi)
3
实际上这不是一个选项。无论如何,它都不会耗尽日常所需的空间。而且我们目前使用的是 600GB 的硬盘空间,只使用了约 50%。没有更大的选项了——至少在 Hetzner 上没有。
这就是为什么我明确要求外部硬盘。
您是否运行过 ./launcher cleanup app?这是否没有释放足够的空间来就地执行升级?
1 个赞
helmi
(Helmi)
5
这在重建时应该重要吗?我能理解是简单的重启,但是重建呢?
pfaffman
(Jay Pfaffman)
6
我并不是建议换一个更大的驱动器,只是再买一台和那台一模一样的服务器。安装 Discourse,然后恢复你的数据库。
这是一个非常好的问题。
是的。每一次重建都会创建一个新的容器,而每一个容器都会占用空间。如果你从未执行过清理,你可能会腾出几十 GB 的空间。
1 个赞
对于数据库升级,您需要尽可能多的空间。所以是的。我认为这很重要。
Falco
(Falco)
8
{“translation”: "[quote="Helmi, post:1, topic:351878, username:helmi"]
有没有适用于这类情况的解决方法?
[/quote]
我们的更新指南中包含了针对您的具体使用场景的指南
我们为处于相同情况的用户增加了此选项。请确保在尝试之前备份到外部存储!"}
2 个赞
pfaffman
(Jay Pfaffman)
9
如果您使用的是虚拟机 (VM),那么迁移到新的虚拟机要容易得多,而且有很多好处。以下是其中几点:
- 零风险——如果出现问题,您仍然拥有旧服务器
- 零停机时间(旧服务器仅为只读状态)
- 您可以获得可能需要的操作系统升级
- 如果发生灾难,您可以验证自己知道如何启动新服务器
- 您无需重新索引和清理
1 个赞
helmi
(Helmi)
10
感谢各位的建议。
谢谢,这是我已知的另一个选项。不过还是感谢您指出来。
我没有怀疑这一点——但仍然很想探索在需要时添加额外存储以进行维护任务的选项。
2 个赞
pfaffman
(Jay Pfaffman)
11
将上传内容(例如 /var/discourse/shared/web_only)保存在网络存储上会很方便。您需要编辑 yml 文件以指向它,而不是使用符号链接(符号链接不起作用,因为容器无法访问符号链接指向的位置)。
然后,如果您迁移到新的虚拟机,只需重新挂载该网络存储即可,无需复制。
我不建议将数据库放在网络存储上,因为它速度较慢。
1 个赞
Ed_S
(Ed S)
12
我认为有必要详细分析一下你的使用情况。如果你的大部分使用量是上传,而数据库本身在升级过程中可能只需要 3 倍的空间,那么你的实际数据库大小可能并没有那么大。
你可以检查一下包含下载和不包含下载的备份的相对大小。
或者,使用命令行。这是我一个相当小的论坛的一些输出:
root@rc-debian-hel:~# free -m
total used free shared buff/cache available
Mem: 3813 1631 267 492 1915 1504
Swap: 4095 730 3365
root@rc-debian-hel:~# swapon
NAME TYPE SIZE USED PRIO
/var/local/swap/swapfile.1 file 1024M 730.2M -2
/var/local/swap/swapfile.3 file 1024M 136K -3
/var/local/swap/swapfile.0 file 1024M 0B -4
/var/local/swap/swapfile.2 file 1024M 0B -5
root@rc-debian-hel:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 382M 1.2M 381M 1% /run
/dev/sda1 38G 22G 14G 62% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 253M 6.3M 246M 3% /boot/efi
overlay 38G 22G 14G 62% /var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/merged
tmpfs 382M 0 382M 0% /run/user/0
仔细查看:
root@rc-debian-hel:~# du -kx / | sort -n | tail -33
767000 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share/pnpm
767004 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share
767020 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local
795804 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse
795808 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home
833836 /var/discourse/shared/standalone/postgres_data
884648 /var/discourse/shared/standalone/uploads/default/original
978000 /usr/lib/modules
991644 /var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/diff
991664 /var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766
1025164 /var/discourse/shared/standalone/uploads/default/optimized
1146528 /usr/lib/firmware
1350496 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff
1350512 /var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554
1909816 /var/discourse/shared/standalone/uploads/default
1919380 /var/discourse/shared/standalone/uploads
2471968 /usr/lib
2506940 /var/log/journal/82e4cf9bff9748d090b41e6d336353eb
2515140 /var/log/journal
2592200 /var/log
3029428 /usr
3839148 /var/discourse/shared/standalone/backups/default
3839152 /var/discourse/shared/standalone/backups
4194324 /var/local/swap
4194328 /var/local
5171844 /var/lib/docker/overlay2
5217052 /var/lib/docker
5455612 /var/lib
6682972 /var/discourse/shared/standalone
6682976 /var/discourse/shared
6685716 /var/discourse
19041368 /var
23037264 /
root@rc-debian-hel:~# du -kx /var/discourse/shared/ | sort -n | tail -33
42312 /var/discourse/shared/standalone/uploads/default/original/2X/f
42448 /var/discourse/shared/standalone/uploads/default/original/2X/1
42548 /var/discourse/shared/standalone/uploads/default/original/2X/6
43380 /var/discourse/shared/standalone/uploads/default/optimized/2X/2
44148 /var/discourse/shared/standalone/uploads/default/optimized/2X/5
44340 /var/discourse/shared/standalone/uploads/default/optimized/2X/1
45240 /var/discourse/shared/standalone/uploads/default/optimized/2X/e
46648 /var/discourse/shared/standalone/uploads/default/optimized/2X/c
49516 /var/discourse/shared/standalone/uploads/default/optimized/2X/8
49772 /var/discourse/shared/standalone/uploads/default/optimized/2X/9
49932 /var/discourse/shared/standalone/log/var-log/nginx
50788 /var/discourse/shared/standalone/uploads/default/optimized/2X/0
55428 /var/discourse/shared/standalone/uploads/default/optimized/2X/d
55844 /var/discourse/shared/standalone/uploads/default/optimized/2X/f
57548 /var/discourse/shared/standalone/uploads/default/optimized/2X/6
77280 /var/discourse/shared/standalone/log/var-log
81928 /var/discourse/shared/standalone/postgres_data/pg_wal
84064 /var/discourse/shared/standalone/log
294384 /var/discourse/shared/standalone/uploads/default/optimized/1X
325068 /var/discourse/shared/standalone/uploads/default/original/1X
559576 /var/discourse/shared/standalone/uploads/default/original/2X
724684 /var/discourse/shared/standalone/postgres_data/base/16384
730776 /var/discourse/shared/standalone/uploads/default/optimized/2X
749424 /var/discourse/shared/standalone/postgres_data/base
833836 /var/discourse/shared/standalone/postgres_data
884648 /var/discourse/shared/standalone/uploads/default/original
1025164 /var/discourse/shared/standalone/uploads/default/optimized
1909816 /var/discourse/shared/standalone/uploads/default
1919380 /var/discourse/shared/standalone/uploads
3839148 /var/discourse/shared/standalone/backups/default
3839152 /var/discourse/shared/standalone/backups
6682972 /var/discourse/shared/standalone
6682976 /var/discourse/shared/
2 个赞
helmi
(Helmi)
13
我一开始应该更精确一些,但没想到会收到如此广泛的反馈。
我们的上传和备份都在 S3 上。实时系统上的数据库大小现在约为 230GB。我认为压缩备份大约是 25GB。
4 个赞
Falco
(Falco)
14
哇,那确实是个大家伙!达到这个大小后,数据库操作通常确实会更麻烦一些。
2 个赞
pfaffman
(Jay Pfaffman)
17
我认为它应该会。我不清楚是什么触发了它。我认为多执行一次不会有坏处,而且可能会为您节省一些空间。如果就地进行升级,建议在升级后执行此操作。我曾见过它几次清理了相当大的空间。
如果您的数据库为 230GB,我肯定会将其恢复到新服务器上。读取和写入 230GB 的停机时间将非常可观。
1 个赞