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

梦想的边缘 2024-08-08 12:37:01 阅读 61

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

1. 检查磁盘使用情况

首先,使用 <code>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"code>

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

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

——编辑者:梦想的边缘



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。