VPS磁盘空间不足排查与清理


磁盘空间用完会导致各种问题:数据库崩溃、网站500错误、无法SSH登录、日志无法写入等。搬瓦工入门方案通常只有20GB SSD,需要注意空间管理。本文介绍如何排查磁盘占用并释放空间。

一、查看磁盘使用情况

# 查看各分区使用率
df -h

# 输出示例:
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/vda1        20G   18G  1.1G  95% /

如果Use%超过90%,就需要立即清理。超过95%可能已经影响到正常服务运行。

二、定位大文件和目录

2.1 查看各目录占用

# 查看根目录下各文件夹大小
du -sh /* 2>/dev/null | sort -rh | head -20

# 逐层深入,找到占用最大的目录
du -sh /var/* | sort -rh | head -10
du -sh /var/log/* | sort -rh | head -10

2.2 查找大文件

# 查找超过100MB的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

# 查找超过50MB的文件并按大小排序
find / -type f -size +50M -printf '%s %p\n' 2>/dev/null | sort -rn | head -20

三、清理日志文件

日志是磁盘满的最常见原因。

# 查看日志目录大小
du -sh /var/log/

# 清理systemd日志(保留最近7天)
journalctl --vacuum-time=7d
journalctl --vacuum-size=100M

# 清空大日志文件(不要删除,用truncate清空)
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/nginx/access.log
truncate -s 0 /var/log/nginx/error.log

# 删除旧的gz压缩日志
rm -f /var/log/*.gz
rm -f /var/log/nginx/*.gz

3.1 配置日志轮转

防止日志无限增长,配置logrotate:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
    endscript
}

四、清理软件包缓存

# Debian/Ubuntu
apt clean                    # 清理apt缓存
apt autoremove -y            # 删除不再需要的依赖包
dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge  # 清理残留配置

# CentOS/AlmaLinux
yum clean all
dnf autoremove -y

五、清理Docker占用

Docker是磁盘杀手,镜像、容器和卷都会占用大量空间。

# 查看Docker占用的磁盘空间
docker system df

# 一键清理所有未使用的资源
docker system prune -a --volumes

# 分别清理
docker container prune     # 删除已停止的容器
docker image prune -a      # 删除未使用的镜像
docker volume prune        # 删除未使用的卷
docker builder prune       # 清理构建缓存

六、清理其他常见占用

# 清理tmp目录
rm -rf /tmp/*

# 清理旧内核(Ubuntu)
dpkg -l 'linux-image-*' | grep '^ii'
apt autoremove --purge -y

# 清理用户目录下的缓存
rm -rf /root/.cache/*
rm -rf /root/.npm/_cacache/*

# 查找并删除core dump文件
find / -name "core.*" -type f -delete 2>/dev/null

七、处理已删除但未释放的文件

有时文件已删除但进程仍在使用,空间不会释放:

# 查找被进程占用的已删除文件
lsof +L1

# 重启占用进程释放空间
systemctl restart nginx
systemctl restart mysql
systemctl restart php8.2-fpm

八、预防措施

Tip: 如果磁盘确实不够用,可以考虑升级到更大存储的方案。更多教程请查看新手教程
关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工 BandwagonHost 的优惠信息、使用教程和方案对比,方便中文用户选购和使用。

新手必读
搬瓦工优惠码

当前最大折扣优惠码:

NODESEEK2026(优惠 6.77%)

在购买方案时填入优惠码即可自动抵扣。详见 优惠码使用教程