bash今天下午和出门去和朋友面基的时候,在咖啡店打开电脑准备在实验环境使用 dify 跑一个测试的时候发现,dify 链接不上后端的知识库,我后端的知识库使用的 Ragflow。当我看到报错的时候我还以为是网络原因,但是经过测试发现并不是网络问题,我尝试访问 Ragflow 的后台界面发现点击登录没有反应。我意识到是 RagFlow 容器出问题了,我赶紧登录上部署 RagFlow 的服务器,使用 docker ps 查看容器状态,果不其然容器出现了unhealthy状态。于是我进一步查看容器日志,发现 Redis 容器出现了问题。

同时,我在补全命令的时候还出现了-bash: cannot create temp file for here-document: No space left on device 的报错,无法补全任何内容。我看到 No space 的时候我心里咯噔一下,立刻用df -h查看磁盘剩余空间。好家伙,果然,根目录的可用空间直接只剩下了20K。

[root@kimoaisvr ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs              32G     0   32G   0% /dev
tmpfs                 32G     0   32G   0% /dev/shm
tmpfs                 32G  3.1G   29G  10% /run
tmpfs                 32G     0   32G   0% /sys/fs/cgroup
/dev/mapper/cl-root  168G  168G   20K 100% /
/dev/vda1           1014M  362M  653M  36% /boot
/dev/mapper/cl-home   24G  199M   24G   1% /home
overlay              168G  168G     0 100% /var/lib/docker/overlay2/20ecc60eab2b72d36aaaae28a4b9986a5fe1c9bf14fb088cee2f2e40219991c3/merged
overlay              168G  168G   20K 100% /var/lib/docker/overlay2/cada75b1f8f062b90452ee999669b653dbcab2cd82a7c286c7439435adffd5d7/merged
tmpfs                6.3G     0  6.3G   0% /run/user/0

我使用du命令对根目录下的文件夹进行占用大小的检查,发现/var目录占用最大。

[root@kimoaisvr /]# du -hs /* | sort -nr
323M    /boot
113G    /var
54G     /usr
28M     /etc
12K     /home
6.2G    /root
3.1G    /run
2.1G    /opt
0       /tmp
0       /sys
0       /srv
0       /sbin
0       /proc
0       /mnt
0       /media
0       /lib64
0       /lib
0       /dev
0       /bin

后面经过一层一层的检查,最终发现是docker 容器的占用过大。

[root@kimoaisvr docker]# du -hs * | sort -nr
438M    volumes
96K     buildkit
85G     containers
76K     network
22G     overlay2
16M     image
4.0K    engine-id
0       tmp
0       swarm
0       runtimes
0       plugins

于是将 Ragflow 容器关闭查看是否解决问题。

[root@kimoaisvr docker]# docker compose down
WARN[0000] The "HF_ENDPOINT" variable is not set. Defaulting to a blank string.
WARN[0000] The "MACOS" variable is not set. Defaulting to a blank string.
[+] Running 6/6
 ✔ Container ragflow-server  Removed                                                                                                                                          17.2s
 ✔ Container ragflow-minio   Removed                                                                                                                                           0.0s
 ✔ Container ragflow-redis   Removed                                                                                                                                           0.0s
 ✔ Container ragflow-es-01   Removed                                                                                                                                           3.3s
 ✔ Container ragflow-mysql   Removed                                                                                                                                           0.0s
 ✔ Network docker_ragflow    Removed                                                                                                                                           0.3s
[root@kimoaisvr docker]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs              32G     0   32G   0% /dev
tmpfs                 32G     0   32G   0% /dev/shm
tmpfs                 32G  3.1G   29G  10% /run
tmpfs                 32G     0   32G   0% /sys/fs/cgroup
/dev/mapper/cl-root  168G   84G   85G  50% /
/dev/vda1           1014M  362M  653M  36% /boot
/dev/mapper/cl-home   24G  199M   24G   1% /home
tmpfs                6.3G     0  6.3G   0% /run/user/0

发现可用空间回到了 85G,看来 RagFlow 的空间占用还是非常大的。后续解决方案考虑单独给他 500G 的磁盘进行存储。

不一定需要对根目录进行扩容,可以直接修改 Docker 的存储路径,参考这个文章:修改 Docker 默认存储路径