记一次实验环境事故-磁盘被占满
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 默认存储路径
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Shadowyingyan