阿里云服务器系统盘使用率过高如何解决?

阿里云服务器系统盘使用率过高是一个常见问题,可能导致系统变慢、服务异常甚至宕机。请按照以下步骤系统地排查和解决:

第一步:紧急情况处理(如果已影响服务)

  1. 立即清理临时文件
    sudo rm -rf /tmp/*
    sudo rm -rf /var/tmp/*
  2. 清理包管理器缓存(CentOS/RHEL):
    sudo yum clean all

    (Ubuntu/Debian):

    sudo apt-get clean
  3. 清空系统日志(谨慎操作,建议先备份):
    sudo truncate -s 0 /var/log/*.log
    # 或清理特定大日志文件
    sudo journalctl --vacuum-time=3d  # 清理3天前的系统日志

第二步:定位大文件/目录(根本原因分析)

  1. 快速查看磁盘使用概况
    df -h  # 查看各分区使用率
    du -sh /*  # 查看根目录下各文件夹大小
  2. 查找前10大文件/目录

    # 查找大目录
    sudo du -xh / | sort -rh | head -20
    
    # 查找大文件(>100MB)
    sudo find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null | awk '{ print $9 ": " $5 }'
  3. 常见占用大户检查
    • 日志文件/var/log/
    • 缓存文件/var/cache/
    • Docker资源/var/lib/docker/(如果使用Docker)
    • 应用数据:MySQL (/var/lib/mysql)、Nginx/Apache日志等

第三步:针对性清理方案

A. 系统日志清理

# 1. 使用logrotate管理日志(默认已配置,可调整)
sudo vi /etc/logrotate.conf  # 调整轮转策略

# 2. 手动清理旧日志(示例保留最近7天)
find /var/log -name "*.log" -type f -mtime +7 -delete

B. 应用日志/数据清理

  • Nginx/Apache:清理访问日志、错误日志
  • MySQL:清理binlog、慢查询日志
  • Docker
    docker system prune -a  # 清理无用镜像、容器、卷
  • Kubernetes:清理Evicted Pods、旧镜像

C. 内核转储文件清理

# 检查并清理core dump文件
find / -name "core.*" -exec rm -f {} ;

第四步:长期优化与预防

  1. 扩容系统盘(最彻底方案)

    • 在阿里云控制台创建快照备份
    • 通过「云盘扩容」功能在线扩容(需在控制台和系统内分别操作)
    • 扩容后执行 growpartresize2fs/xfs_growfs 扩展文件系统
  2. 设置监控告警

    • 在云监控控制台设置系统盘使用率告警(建议阈值80%)
    • 配置日志轮转策略,避免日志无限增长
  3. 数据迁移与分离

    • 将应用数据迁移到单独的数据盘(ESSD/高效云盘)
    • 修改应用配置,将日志、上传文件等写入数据盘
  4. 自动化清理脚本示例

    #!/bin/bash
    # 每周清理的脚本示例
    LOG_DIR="/var/log"
    find $LOG_DIR -name "*.log" -mtime +30 -delete
    docker system prune -f 2>/dev/null
    journalctl --vacuum-time=7d

第五步:特殊场景处理

  • Docker overlay2占用过大
    # 查看docker磁盘使用
    docker system df
    # 清理所有未使用资源
    docker system prune --volumes -a
  • MySQL binlog占用
    -- 设置binlog过期时间(示例7天)
    SET GLOBAL binlog_expire_logs_seconds=604800;
    PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

注意事项

  1. 操作前务必备份重要数据,特别是删除文件前
  2. 谨慎使用 rm -rf,建议先 ls 确认文件列表
  3. 对于生产环境,建议在维护窗口操作
  4. 清理后重启服务检查是否正常

如果以上操作后问题仍未解决,建议通过阿里云工单联系技术支持,他们可以协助分析具体占用原因并提供更专业的解决方案。

云服务器