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

打印 上一主题 下一主题

主题 556|帖子 556|积分 1668

当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清算磁盘,可以根据下面步调依次清算:
1. 查抄磁盘利用情况

起首,利用 df 和 du 下令查抄磁盘利用情况,找出哪些目次占用了大量空间。
可以通过如下下令来查询
  1. df -h
复制代码
举例:
  1. ======================================检察磁盘利用情况,明显看到这个路径下磁盘利用100%/data1/server/server/officeauto/logs======================================[root ~]# df -h
  2. 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 下令查找占用大量空间的文件和目次。可以通过路径不断深入来查询,最终定位到可删除的文件:
  1. du -sh /* 2>/dev/null
复制代码
举例:
  1. ======================================这个下令会表现根目次下每个子目次的大小。你可以递归地查抄子目次,找到占用空间最多的文件和目次。======================================[root@test01 ~]# du -sh /* 2>/dev/null
  2. 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 镜像

  1. docker image prune -a
复制代码
(2)删除未利用的 Docker 容器

  1. docker container prune
复制代码
(3)删除未利用的 Docker 卷

  1. docker volume prune
复制代码
4. 清算 Kubernetes 日志和缓存

Kubernetes 的日志和缓存文件也大概占用大量空间。你可以清算这些文件。
(1)清算 Kubernetes 日志

  1. ======================================
  2. 生产环境慎操作,可以根据实际情况增加限定范围,如
  3. "*.log"改为"2023-*.log"来限定只删除23年日志
  4. ======================================
  5. find /var/log/containers/ -type f -name "*.log" -delete
复制代码
(2)清算 Kubernetes 缓存

  1. rm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/*
复制代码
5. 清算非重要文件

  1. ======================================
  2. 1.清理临时文件(慎操作)
  3. ======================================
  4. rm -rf ~/tmp/*
复制代码
  1. ======================================
  2. 2.清理下载文件(慎操作)
  3. ======================================
  4. rm -rf ~/Downloads/*
复制代码
  1. ======================================
  2. 3.压缩文件后进行删除
  3. ======================================
  4. sudo gzip /var/log/*.log
  5. rm -rf /var/log/*.log
复制代码
6.终极篇

可以整理一个cleanup.sh文件,后续直接执行sh cleanup.sh一步执行清算开释磁盘
  1. #!/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
  2. -fdocker container prune
  3. -fdocker volume prune
  4. -f# 清算 Kubernetes 日志和缓存find /var/log/containers/ -type f -name "*.log" -deleterm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/*
  5. # 清算暂时文件rm -rf /tmp/*# 清算用户缓存rm -rf /root/.cache/*# 查抄磁盘空间df -h
复制代码
将以上脚本生存为 cleanup.sh,赋予执行权限并运行:
  1. chmod +x cleanup.sh
  2. ./cleanup.sh
复制代码
通过这些步调可以开释一些磁盘空间,操纵过程需要慎重,必要情况下可以先做压缩、备份处理!
——编辑者:梦想的边缘

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表