300 字
1 分钟

linux centos 磁盘异常占用满了排查和解决

2025-03-03
2026-07-29

linux centos 磁盘异常占用满了排查和解决#

4. 使用交互式工具ncdu(推荐)#

安装后扫描更直观(支持排除/home):

bash

sudo apt install ncdu # Debian/Ubuntusudo yum install ncdu # CentOS/RHEL

扫描命令:

bash

sudo ncdu --exclude /home /
  • 操作方式

    • 方向键导航,Enter进入子目录。
    • d​删除文件(谨慎使用),g显示大小百分比。

系统层#

  1. 首先查看磁盘使用情况:
# 查看磁盘分区使用情况
df -h
# 查看具体目录大小
du -sh /*
  1. 查找大文件:
# 查找大于100M的文件
find / -type f -size +100M -exec ls -lh {} \;
# 按大小排序显示前10个最大的文件
find / -type f -exec du -Sh {} + | sort -rh | head -n 10
  1. 检查日志文件:
# 查看/var/log目录大小
du -sh /var/log/*
# 清理旧日志
sudo find /var/log -type f -name "*.log.*" -delete
sudo find /var/log -type f -name "*.gz" -delete
# 清空大日志文件(不删除文件本身)
sudo truncate -s 0 /var/log/large_log_file.log
  1. 清理软件包缓存:
# 清理yum缓存
sudo yum clean all
# 删除旧的软件包
sudo package-cleanup --oldkernels --count=2
  1. 检查并清理临时文件:
# 查看/tmp目录大小
du -sh /tmp
# 清理临时文件
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
  1. 检查Docker(如果安装了):
# 查看Docker使用空间
docker system df
# 清理未使用的Docker资源
docker system prune -a
# 清理Docker日志
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
  1. 检查用户目录:
# 查看home目录下各用户空间占用
du -sh /home/*
# 查找用户目录下的大文件
find /home -type f -size +100M -exec ls -lh {} \;
  1. 清理系统旧文件:
# 清理旧的core文件
find / -name core -type f -delete
# 清理0字节文件
find / -size 0 -type f -delete
  1. 检查并清理邮件队列(如果有邮件服务):
# 查看邮件队列目录大小
du -sh /var/spool/mail/
du -sh /var/spool/postfix/
  1. 检查数据库文件(如果有):
# MySQL数据目录
du -sh /var/lib/mysql/*
# PostgreSQL数据目录
du -sh /var/lib/pgsql/*

清理后:

# 再次检查磁盘使用情况
df -h
# 如果还需要进一步分析
ncdu -x /

docker层#

  1. 首先查看 Docker 系统占用情况:
# 查看 Docker 磁盘使用详情
docker system df -v
# 查看具体目录占用
du -sh /var/lib/docker/*
  1. 清理未使用的 Docker 资源:
# 清理所有未使用的容器、网络、镜像(包括未被任何容器使用的镜像)和构建缓存
docker system prune -a --volumes
# 仅清理悬空镜像(dangling images)
docker image prune
# 清理未使用的数据卷
docker volume prune
# 清理未使用的网络
docker network prune
  1. 清理 Docker 日志文件:
# 查找大的日志文件
find /var/lib/docker/containers/ -type f -name "*.log" -exec ls -lh {} \;
# 清空所有容器的日志文件
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
# 或者使用循环清理
for i in $(docker ps -q); do echo "Cleaning logs for $i..."; truncate -s 0 $(docker inspect --format='{{.LogPath}}' $i); done
  1. 限制容器日志大小:
# 修改 Docker 守护进程配置
sudo vim /etc/docker/daemon.json
# 添加以下内容
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# 重启 Docker 服务
sudo systemctl restart docker
  1. 删除指定时间之前的资源:
# 删除24小时前已停止的容器
docker container prune --filter "until=24h"
# 删除24小时前的镜像
docker image prune -a --filter "until=24h"
  1. 手动删除特定资源:
# 停止所有运行的容器
docker stop $(docker ps -aq)
# 删除所有已停止的容器
docker rm $(docker ps -aq -f status=exited)
# 删除所有未使用的镜像
docker rmi $(docker images -q -f dangling=true)
  1. 清理构建缓存:
# 清理构建缓存
docker builder prune -a
# 或者指定时间
docker builder prune --filter until=24h
  1. 查看并删除大文件:
# 查找 Docker 目录下的大文件
find /var/lib/docker -type f -size +100M -exec ls -lh {} \;
# 检查overlay2目录(通常占用最大)
du -sh /var/lib/docker/overlay2/*
  1. 迁移 Docker 根目录(如果根分区空间不足):
# 停止 Docker 服务
sudo systemctl stop docker
# 创建新目录
sudo mkdir /data/docker
# 编辑 Docker 配置
sudo vim /etc/docker/daemon.json
{
"data-root": "/data/docker"
}
# 复制现有 Docker 目录
sudo rsync -avz /var/lib/docker/ /data/docker
# 重启 Docker 服务
sudo systemctl restart docker
  1. 设置自动清理:
# 创建定时清理脚本
cat > /etc/cron.daily/docker-cleanup << 'EOF'
#!/bin/bash
docker system prune -af --volumes
find /var/lib/docker/containers/ -type f -name "*.log" -exec truncate -s 0 {} \;
EOF
# 添加执行权限
chmod +x /etc/cron.daily/docker-cleanup
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

linux centos 磁盘异常占用满了排查和解决
https://www.motouguai.com/posts/linux-centos-ci-pan-yi-chang-zhan-yong-man-liao-pai-cha-he-jie-jue-zld0xz/
作者
Qiaoan
发布于
2025-03-03
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
supervisor 进程管理工具 (监听、启动、停止、重启一个或多个进程或自动重启)
DevOps 与运维 教程方向: 快速上手, 解决使用中遇到的一些问题使用环境: Centos7.2 安装:yum install supervisor 配置安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录 Supervisord.conf是一些默认配置,可自行参考一些配置文件教程修改 我们主要修改 /etc/superv
2
阿里云日志服务监控访问日志
DevOps 与运维 添加日志服务 网址 点击创建Project 名称填好,所属区域选择需要监控的服务器的所在区域 接下来会出现弹出窗: 点击创建,或不小心关掉 点击名称进入下列2图界面 创建Logstore 这些根据提示填写好就行了. 数据接入 点击确认会出现此框点击数据接入向导,如果没有在2图数据接入想到下面有个按钮点几下 选择你需要的 - 配置规则. 这里要注意的只有日志路
3
rtmp流媒体 nginx服务端搭建
DevOps 与运维 标签(空格分隔): 直播 mkdir nginx 切换到nginx目录,下载压缩包并解压到当前工作目录: wget http://nginx.org/download/nginx-1.12.1.tar.gz tar -zxvf nginx-1.12.1.tar.gz 安装依赖的的库: sudo apt-get install libssl-dev libpc
4
Docker配置开发环境常用命令_参数详解(1
DevOps 与运维 Docker配置开发环境常用命令_参数详解标签(空格分隔): docker 在下载image后我们需要一个可以运行项目的环境
5
Docker配置开发环境常用命令_参数详解(3
DevOps 与运维 文章不兼容, 已放到时光机