磁盘空间满,如何处理?

作为运维人员,磁盘空间报警是最寻常遇到的情况,那么遇到空间如何处理呢?这里介绍一下处理办法及处理思路。

操作系统:centos系统 、Ubuntu

1 定位目录

收到空间报警信息,首先不用慌,运维人员最忌讳遇事不冷静。第一步通过命令df -PTh 查看具体哪个目录报警,例如:

[root@k8s-master01 /]# dd if=/dev/zero bs=2048 count=5000000 of=/root/10Gb.file  # 人为制造空间
500000+0 records in
500000+0 records out
1024000000 bytes (1.0 GB) copied, 5.06027 s, 202 MB/s

[root@k8s-master01 /]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.4G     0  1.4G   0% /dev
tmpfs                  1.4G     0  1.4G   0% /dev/shm
tmpfs                  1.4G  4.4M  1.4G   1% /run
tmpfs                  1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/mapper/vg00-root   18G   13G  5.5G  70% /  
/dev/sda1              197M  128M   70M  65% /boot

通过查看,发现是/ 目录报警 

2 查看目录空间内容占比

进入 / 目录查看 ,通过 命令 du -h --max-depth=1  查看第一层目录占比,确定目录大概占比情况

[root@k8s-master01 /]# du -h --max-depth=1
117M    ./boot
0       ./dev
du: cannot access ‘./proc/15581’: No such file or directory
du: cannot access ‘./proc/15596/task/15596/fd/3’: No such file or directory
du: cannot access ‘./proc/15596/task/15596/fdinfo/3’: No such file or directory
du: cannot access ‘./proc/15596/fd/4’: No such file or directory
du: cannot access ‘./proc/15596/fdinfo/4’: No such file or directory
0       ./proc
4.4M    ./run
0       ./sys
36M     ./etc
5.1G    ./root
4.5G    ./var
0       ./tmp
4.0G    ./usr
12K     ./home
0       ./media
0       ./mnt
56M     ./opt
0       ./srv
14G     .

 可以发现 /root /var /usr  三个目录占比最高 ,在正常情况下,这三个目录存放不同性质内容,目录规划可参考Linux 目录规划内容

进入 /root 目录,对立面内容做进一步筛选分析,可以发现占比文件不在目录中,而是以文件形式存在于服务器中,并通过 ls|xargs du -sh定位到 具体文件,判断是否是需要的,不是必须文件,可以删除从而释放空间

[root@k8s-master01 ~]# du -h --max-depth=1
0       ./.pki
4.0K    ./.ssh
3.2M    ./.kube
4.0K    ./.oracle_jre_usage
49M     ./metrics-server-0.3.6
4.0K    ./data
16K     ./.java
704K    ./metrics-server-0.5.0
24K     ./ingress-controller
5.1G    .
[root@k8s-master01 ~]# ls|xargs du -sh
3.7G    10Gb.file  # 测试机器空间不足,临时中断产生
977M    1Gb.file
8.7M    apache-maven-3.8.4-bi

3.crontab 任务产生日志造成的

在第2步中,针对一般性文件造成空间报警,通常已经足够用了,有时服务器设置了过多crontab定时脚本,而脚本本身有没有对脚本日志做限制,就会造成运行一段时间后,系统目录 /var  空间不足,进一步发现是/var/spool/clientmqueue/  ,解决方法是使用命令cd /var/spool/clientmqueue && ls|xargs rm -rf进行清理。但是在清理时,如果文件的数量特别多,那么执行ls|xargs rm -rf命令也会长时间无反应,不要着急,这是命令正在处理中的正常表现。如果想快速处理的话,可以直接删除目录 ,然后新建一个,再配置目录权限,或者 更改文件目录名再新建。

mkdir clientmqueue && chmod 770 clientmqueue && chown smmsp:smmsp -R /var/spool/clientmqueue

如果想一劳永逸的话,则要求所有定时脚本 后面追加>/dev/null2>&1

posted @ 2022-07-03 15:39  静言善思  阅读(514)  评论(2编辑  收藏  举报