加油
努力

轻量服务器系统盘占用过高如何处理?

轻量服务器系统盘占用过高是常见问题,尤其在长期运行或部署应用后容易出现。以下是详细的排查和处理方法:


一、检查当前磁盘使用情况

df -h

查看各分区的使用情况,确认系统盘(通常是 //dev/vda1)是否确实占用过高。


二、查找大文件或目录

使用 du 命令定位占用空间大的目录:

du -sh /* | sort -hr | head -10

这会列出根目录下占用空间最大的前10个目录。

进一步深入某个目录:

du -sh /var/* | sort -hr | head -5
du -sh /home/* | sort -hr | head -5
du -sh /root/* | sort -hr | head -5

三、常见高占用原因及处理方案

1. 日志文件过大(尤其是 /var/log

  • 查看日志大小:
    du -sh /var/log/*
  • 清理旧日志:
    # 删除特定日志(如 nginx、mysql、syslog 的旧日志)
    sudo truncate -s 0 /var/log/syslog
    sudo truncate -s 0 /var/log/auth.log
    sudo rm /var/log/*.log.*  # 删除压缩的旧日志
  • 使用 logrotate 配置自动轮转(推荐长期解决)。

2. 软件包缓存过多(Ubuntu/Debian)

sudo apt clean           # 清理下载的安装包
sudo apt autoremove      # 删除无用依赖

CentOS/RHEL:

sudo yum clean all       # 或 dnf clean all

3. 临时文件堆积/tmp/var/tmp

sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

⚠️ 注意:确保没有正在运行的服务依赖这些临时文件。

4. Web服务日志或缓存(如 Nginx、Apache)

  • 检查 Nginx 日志:
    du -sh /var/log/nginx/*
  • 清理访问日志:
    sudo truncate -s 0 /var/log/nginx/access.log
    sudo truncate -s 0 /var/log/nginx/error.log
  • 考虑关闭不必要的日志,或配置日志轮转。

5. 数据库日志或数据(如 MySQL/MariaDB)

  • 检查慢查询日志、错误日志是否过大。
  • 清理二进制日志(binlog):
    SHOW BINARY LOGS;
    RESET MASTER;  -- 小心使用,会删除所有 binlog
  • 或设置过期时间:
    SET GLOBAL expire_logs_days = 7;

6. Docker 容器/镜像堆积

如果你使用了 Docker:

docker system df            # 查看占用
docker system prune -a      # 清理无用镜像、容器、卷(谨慎操作)

7. 用户上传文件或备份文件

检查 /home/root、网站目录(如 /var/www/html)是否有大量上传文件、备份 .tar.gz.sql 文件等。

示例清理:

find /root -name "*.tar.gz" -type f -size +100M -exec ls -lh {} ;
# 确认后删除
rm /root/backup_old.sql

四、优化建议(防止再次占满)

  1. 定期清理脚本
    编写定时任务自动清理日志和缓存:

    crontab -e

    添加:

    0 3 * * 6 /usr/bin/apt clean && /usr/bin/apt autoremove -y
  2. 挂载独立数据盘
    如果经常存储数据(如网站、数据库、备份),建议:

    • 购买并挂载云硬盘作为数据盘。
    • /var/www/var/lib/mysql 等迁移到数据盘。
  3. 启用日志轮转
    确保 /etc/logrotate.conf 正常工作,避免日志无限增长。

  4. 监控磁盘使用
    安装监控工具如 ncduglances,或使用云厂商提供的监控服务。


五、紧急扩容方案(云服务商支持)

如果无法通过清理释放足够空间,可考虑:

  • 系统盘扩容(阿里云、腾讯云、华为云等支持在线扩容)
    1. 在控制台升级系统盘容量。
    2. 登录服务器执行扩容命令(如 growpart + resize2fsxfs_growfs)。

示例(ext4 文件系统):

sudo growpart /dev/vda 1
sudo resize2fs /dev/vda1

六、总结步骤

步骤 操作
1 df -h 查看占用
2 du -sh /* | sort -hr 找大目录
3 清理日志、缓存、临时文件
4 删除无用软件包和依赖
5 检查 Docker、数据库、网站备份
6 设置自动清理和监控
7 必要时扩容系统盘

如你提供具体系统(Ubuntu/CentOS)、用途(建站/数据库等),我可以给出更精准的清理建议。

云服务器