这个错误表示服务器磁盘空间已满,导致系统无法写入新数据。以下是详细的排查和解决方法:
df -h
查看各分区使用情况,特别是 /
根分区和 /www
分区(宝塔默认安装目录)。
# 查找大于100M的文件
find / -type f -size +100M -exec ls -lh {} \;
# 查找占用空间最大的目录
du -sh /* | sort -rh
du -sh /www/* | sort -rh
# 清理网站访问日志
rm -rf /www/wwwlogs/*.log
# 或使用空文件替代
echo "" > /www/wwwlogs/access.log
# 进入MySQL
mysql -uroot -p
# 查看二进制日志
SHOW BINARY LOGS;
# 清理过期日志(保留最近3天)
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);
# 清理系统日志
journalctl --vacuum-size=50M
rm -rf /var/log/*.gz
# 检查备份目录
ls -lh /www/backup/
# 删除旧备份
rm -f /www/backup/old_backup.tar.gz
# 清空宝塔回收站
rm -rf /www/Recycle_bin/*
可以创建定时任务自动清理:
#!/bin/bash
# 清理7天前的日志
find /www/wwwlogs/ -name "*.log" -mtime +7 -exec rm -f {} \;
# 清理30天前的备份
find /www/backup/ -name "*.tar.gz" -mtime +30 -exec rm -f {} \;
# 清理空目录
find /tmp/ -type d -empty -delete
如果发现磁盘空间显示已满但实际文件占用不大,可能是已删除文件仍被进程占用:
# 查找被删除但仍被占用的文件
lsof | grep deleted
# 然后重启相关进程或直接kill进程ID
希望以上方法能帮助您解决磁盘空间不足的问题。如仍有疑问,可以提供 df -h
和 du -sh /*
的具体输出,我可以帮您进一步分析。