前言 {#heading-1}
当部署 DataEase 机器的磁盘空间不足时,有可能会引起一些预料之外的情况,比如曾有开源社区的用户遇到过:磁盘剩余容量少于 5G 时,doris-fe 容器总是莫名其妙就挂了,导致DataEase的部分功能使用异常。
部署 DataEase 的服务器,我们的官方建议是:
-
操作系统: CentOS 7.x
-
CPU/内存: 4核8G
-
磁盘空间: 200G
但是大部分的开源用户的数据体量并不是很大,那么就不需要给服务器分配这么多的磁盘空间,200G 只是我们建议的磁盘空间大小,测试的话 40G 的磁盘空间也可以使用。那么当磁盘空间不足时,我们应当如何清理磁盘空间呢?下面让我们一起排查一下服务器的磁盘空间占用情况,并进行清理。
操作步骤 {#heading-2}
1 df -h 命令查看磁盘状态 {#heading-3}
2 在服务器执行命令,查看磁盘资源的占用情况,看看是哪个目录占用了空间 {#heading-4}
# 切换到根目录下
cd /
# 查看根目录下,第一层文件的磁盘资源占用情况
du -h -x --max-depth=1
对结果进行排序展示
=========
du -h -x --max-depth=1\|sort -n
或者看看最大的消耗在哪里
============
`du -h -x --max-depth=1|grep [G]
`
# 也可以搜索深度做到第二层
du -h -x --max-depth=2|sort -n
或者切换到某个指定目录下,查看此目录下各个文件磁盘资源占用情况
===============================
`cd /opt
du -sm *|sort -n
`
3 排查 Docker 目录文件磁盘空间的占用情况 {#heading-5}
# 进入DataEase 默认docker的安装目录(默认目录为/var/lib/docker)
cd /var/lib/docker
查看当前目录的磁盘占用大小
=============
`du -sh
`
4 通过上面步骤我们可以找到占用磁盘较大的目录或文件,DataEase 无关的文件请自行判断一下是否可以进行清理,如果是 DataEase 相关的 Docker 镜像所占用的空间较大,可以参考下文进行清理 {#heading-6}
5 系统日志的清理 {#heading-7}
5.1 rsyslog 日志 {#heading-8}
作为传统的系统日志服务,把所有收集到的日志都记录到 /var/log/ 目录下的各个日志文件中。
此类日志默认保持1个月, 基本无需手工删除,常见的日志文件如下(对于过大文件可以随便删除):
5.2 systemd-journal 日志 {#heading-9}
一些 rsyslog 无法收集的日志也会被 journal 记录,存放路径:/var/log/journal
此类日志默认的保持策略一般情况下是固定大小,可以通过 journalctl 命令设置和改变 journal 日志文件大小:
1)只保留近一周的日志
journalctl --vacuum-time=1w
2)只保留500MB的日志
journalctl --vacuum-size=500M
3)直接删除 /var/log/journal/ 目录下的日志文件
rm -rf /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1
执行过程中可能产生的问题与分析解决
=================
执行 journalctl --vacuum-time=1w 命令时报错:Error was encountered while opening journal files: Input/output error
==========================================================================================================
问题分析:日志文件损坏
===========
解决方法:删除之前的日志,并重启 journalctl 服务
==============================
mv journal/f9d400c5e1e8c3a8209e990d887d4ac1 journal/f9d400c5e1e8c3a8209e990d887d4ac1_bk
systemctl restart systemd-journald.service
查看 /var/log/journal/ 日志目录如下:
============================
ll /var/log/journal/
drwxr-sr-x 2 root systemd-journal 4096 Jan 22 11:26 f9d400c5e1e8c3a8209e990d887d4ac1
====================================================================================
drwxr-sr-x+ 2 root systemd-journal 12288 Jan 14 15:37 f9d400c5e1e8c3a8209e990d887d4ac1_bk
=========================================================================================
然后,再执行 journalctl 限制日志的命令:
==========================
journalctl --vacuum-time=1w
===========================
Vacuuming done, freed 0B of archived journals on disk.
journalctl --vacuum-size=500M
=============================
`Vacuuming done, freed 0B of archived journals on disk.
`