当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清算磁盘,可以根据下面步调依次清算:
1. 查抄磁盘利用情况
起首,利用 df 和 du 下令查抄磁盘利用情况,找出哪些目次占用了大量空间。
可以通过如下下令来查询
举例:
- ======================================检察磁盘利用情况,明显看到这个路径下磁盘利用100%/data1/server/server/officeauto/logs======================================[root ~]# df -h
- Filesystem Size Used Avail Use% Mounted ondevtmpfs 16G 0 16G 0% /devtmpfs 16G 4.0K 16G 1% /dev/shmtmpfs 16G 1.7G 14G 11% /runtmpfs 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% /boot10.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 下令查找占用大量空间的文件和目次。可以通过路径不断深入来查询,最终定位到可删除的文件:
举例:
- ======================================这个下令会表现根目次下每个子目次的大小。你可以递归地查抄子目次,找到占用空间最多的文件和目次。======================================[root@test01 ~]# du -sh /* 2>/dev/null
- 0 /bin120M /boot119M /data0 /data14.0K /dev41M /etc177G /home0 /lib======================================可以看出路径/home占用比力大,可以继续深入排查======================================[root@test01 ~]# du -sh /home/* 2>/dev/null40K /home/apps21G /home/apps_bak135G /home/data122G /home/docker60K /home/everhomes....
复制代码 3. 清算 Docker 数据
Docker 的 overlay 文件系统也占用了大量空间。你可以清算未利用的 Docker 镜像、容器和卷。
(1)删除未利用的 Docker 镜像
(2)删除未利用的 Docker 容器
(3)删除未利用的 Docker 卷
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
- -fdocker container prune
- -fdocker volume prune
- -f# 清算 Kubernetes 日志和缓存find /var/log/containers/ -type f -name "*.log" -deleterm -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
复制代码 通过这些步调可以开释一些磁盘空间,操纵过程需要慎重,必要情况下可以先做压缩、备份处理!
——编辑者:梦想的边缘
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |