磁盘空间满,如何处理?
作为运维人员,磁盘空间报警是最寻常遇到的情况,那么遇到空间如何处理呢?这里介绍一下处理办法及处理思路。
操作系统: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