Linux-磁盘空间不足的清理步骤(详细版本)

2024-07-10 1857阅读

当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清理磁盘,可以根据下面步骤依次清理:

Linux-磁盘空间不足的清理步骤(详细版本)
(图片来源网络,侵删)

1. 检查磁盘使用情况

首先,使用 df 和 du 命令检查磁盘使用情况,找出哪些目录占用了大量空间。

可以通过如下命令来查询

df -h

举例:

======================================
查看磁盘使用情况,明显看到这个路径下磁盘使用100%
/data1/server/server/officeauto/logs
======================================
[root ~]# df -h
Filesystem                                             Size  Used Avail Use% Mounted on
devtmpfs 16G     0   16G   0% /dev
tmpfs    16G  4.0K   16G   1% /dev/shm
tmpfs    16G  1.7G   14G  11% /run
tmpfs    16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                 50G  5.4G   45G  11% /
/dev/sdb1                                              500G  167G  334G  34% /home
/dev/sda1                                             1014M  152M  863M  15% /boot
10.5.122.99:/data1/server/server/officeauto/logs     500G  495G  4G  100% /var/lib/kubelet/pods/99739912-b5d4-4bda-bc68-e3ca590fbad2/volumes/kubernetes.io~nfs/officeauto-logs
......

PS:直接进入该路径进行文件清理,该案例的文件是日志文件,可直接清理

/data1/server/server/officeauto/logs

2. 查找大文件和目录

使用 du -sh 命令查找占用大量空间的文件和目录。可以通过路径不断深入来查询,最终定位到可删除的文件:

du -sh /* 2>/dev/null

举例:

======================================
这个命令会显示根目录下每个子目录的大小。你可以递归地检查子目录,找到占用空间最多的文件和目录。
======================================
[root@test01 ~]# du -sh /* 2>/dev/null
0       /bin
120M    /boot
119M    /data
0       /data1
4.0K    /dev
41M     /etc
177G    /home
0       /lib
======================================
可以看出路径/home占用比较大,可以继续深入排查
======================================
[root@test01 ~]# du -sh /home/* 2>/dev/null
40K     /home/apps
21G     /home/apps_bak
135G    /home/data1
22G     /home/docker
60K     /home/everhomes
....

3. 清理 Docker 数据

Docker 的 overlay 文件系统也占用了大量空间。你可以清理未使用的 Docker 镜像、容器和卷。

(1)删除未使用的 Docker 镜像
docker image prune -a
(2)删除未使用的 Docker 容器
docker container prune
(3)删除未使用的 Docker 卷
docker volume prune

4. 清理 Kubernetes 日志和缓存

Kubernetes 的日志和缓存文件也可能占用大量空间。你可以清理这些文件。

(1)清理 Kubernetes 日志
======================================
生产环境慎操作,可以根据实际情况增加限定范围,如
"*.log"改为"2023-*.log"来限定只删除23年日志
======================================
find /var/log/containers/ -type f -name "*.log" -delete
(2)清理 Kubernetes 缓存
rm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/*

5. 清理非重要文件

======================================
1.清理临时文件(慎操作)
======================================
rm -rf ~/tmp/*
======================================
2.清理下载文件(慎操作)
======================================
rm -rf ~/Downloads/*
======================================
3.压缩文件后进行删除
======================================
sudo gzip /var/log/*.log
rm -rf /var/log/*.log

6.终极篇

可以整理一个cleanup.sh文件,后续直接执行sh cleanup.sh一步执行清理释放磁盘

#!/bin/bash
# 清理旧的日志文件
LOG_DIR="/data1/server/server/registry/logs"
find $LOG_DIR -type f -name "*.log" -mtime +30 -exec rm -f {} \;
# 清理 Docker 数据
docker image prune -a -f
docker container prune -f
docker volume prune -f
# 清理 Kubernetes 日志和缓存
find /var/log/containers/ -type f -name "*.log" -delete
rm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/*
# 清理临时文件
rm -rf /tmp/*
# 清理用户缓存
rm -rf /root/.cache/*
# 检查磁盘空间
df -h

将以上脚本保存为 cleanup.sh,赋予执行权限并运行:

chmod +x cleanup.sh
./cleanup.sh

通过这些步骤可以释放一些磁盘空间,操作过程需要慎重,必要情况下可以先做压缩、备份处理!

——编辑者:梦想的边缘

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]