插件窝 干货文章 宝塔面板No space left on device

宝塔面板No space left on device

清理 文件 磁盘 日志 811    来源:    2025-05-11

宝塔面板 "No space left on device" 错误解决方案

这个错误表示服务器磁盘空间已满,导致系统无法写入新数据。以下是详细的排查和解决方法:

1. 确认磁盘空间使用情况

df -h

查看各分区使用情况,特别是 / 根分区和 /www 分区(宝塔默认安装目录)。

2. 查找大文件或目录

# 查找大于100M的文件
find / -type f -size +100M -exec ls -lh {} \;

# 查找占用空间最大的目录
du -sh /* | sort -rh
du -sh /www/* | sort -rh

3. 常见空间占用原因及清理方法

3.1 网站日志文件

# 清理网站访问日志
rm -rf /www/wwwlogs/*.log
# 或使用空文件替代
echo "" > /www/wwwlogs/access.log

3.2 MySQL 二进制日志

# 进入MySQL
mysql -uroot -p
# 查看二进制日志
SHOW BINARY LOGS;
# 清理过期日志(保留最近3天)
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);

3.3 系统日志

# 清理系统日志
journalctl --vacuum-size=50M
rm -rf /var/log/*.gz

3.4 宝塔面板备份文件

# 检查备份目录
ls -lh /www/backup/
# 删除旧备份
rm -f /www/backup/old_backup.tar.gz

3.5 回收站文件

# 清空宝塔回收站
rm -rf /www/Recycle_bin/*

4. 自动清理脚本

可以创建定时任务自动清理:

#!/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

5. 预防措施

  1. 设置日志轮转:配置 logrotate 自动切割日志
  2. 定期清理:设置 cron 任务定期清理旧文件
  3. 监控空间:安装宝塔的磁盘空间监控插件
  4. 扩容磁盘:如果经常空间不足,考虑扩容云服务器磁盘

6. 特殊情况处理

如果发现磁盘空间显示已满但实际文件占用不大,可能是已删除文件仍被进程占用:

# 查找被删除但仍被占用的文件
lsof | grep deleted
# 然后重启相关进程或直接kill进程ID

希望以上方法能帮助您解决磁盘空间不足的问题。如仍有疑问,可以提供 df -hdu -sh /* 的具体输出,我可以帮您进一步分析。