PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Linux服务器磁盘满错误解决办法

Yazdır

如何解决Linux服务器上的磁盘已满错误?

查找大文件、安全清理日志和释放服务器空间的指南。

Linux 服务器上最常见的问题之一是磁盘完全满了。当磁盘已满时,网站无法写入文件,数据库服务可能停止工作,游戏服务器可能不记录日志,某些服务可能根本无法启动。

此错误通常通过以下症状来识别:

  • 上传文件到服务器失败
  • 数据库服务关闭或错误
  • 面板上出现“设备上没有剩余空间”错误
  • 游戏服务器因无法登录而关闭。
  • 网站出现 500 错误或空白页
重要: 在磁盘已满错误的情况下删除随机文件是危险的。如果删除了错误的系统文件,服务可能会被损坏。首先需要确定哪个文件夹占用了空间。

1. 检查磁盘使用情况

首先,检查服务器上哪个磁盘分区已满。

df -h

这里特别是 使用% 面积被考虑。如果某个部分达到90%或以上,则意味着风险已经开始。如果 100% 已满,服务将无法写入文件。

2.找到占用空间最多的文件夹

当磁盘已满时,问题通常是日志、备份或缓存文件累积在单个文件夹中。从根目录开始检查大文件夹。

du -h --max-depth=1 / 2>/dev/null | sort -h

此命令显示主目录占用了多少空间。通常会检查以下目录:

  • /var/日志 - 系统和服务日志
  • /主页 - 用户和网站文件
  • /备份 - 旧的备份文件
  • /tmp - 临时文件
  • /var/lib/mysql - MySQL/MariaDB 数据库文件

3. 列出大文件

有时,单个日志文件可能会增长到 10 GB 或更多。要查找大文件,可以使用以下命令:

find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null

此命令列出超过 500 MB 的文件。仔细检查生成的文件。尤其是 .log, .旧, .gz, .bak 并应检查旧的备份文件。

安全方法: 如果您不知道该文件是什么,请勿删除它。首先查看文件路径及其连接的服务。

4. 日志文件的安全清理

直接删除正在运行的服务的日志文件有时不会给出预期的结果。因为服务可以继续保持文件打开。因此,清理大型日志文件时最安全的方法是清空该文件。

truncate -s 0 /var/log/dosya_adi.log

示例:

truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/messages
truncate -s 0 /var/log/nginx/error.log

5. 包缓存清理

在基于 Ubuntu 和 Debian 的系统上,包缓存文件可能会随着时间的推移而占用磁盘空间。

apt clean
apt autoremove -y

在 CentOS、AlmaLinux 或 Rocky Linux 系统上:

yum clean all
dnf clean all

6.检查旧备份

在托管和游戏服务器上占用最多空间的文件通常是旧备份。特别是如果有自动备份系统,可能每天都会进行新的备份,而旧的备份可能不会被删除。

find /backup -type f -mtime +7 -name "*.tar.gz" -ls

此命令列出 7 天之前的备份。确认后删除:

find /backup -type f -mtime +7 -name "*.tar.gz" -delete
注意: 在使用delete命令之前,一定要使用listing命令检查哪些文件将被删除。

7. 使用 Logrotate 设置防止重新加载

即使磁盘被清理干净,如果不纠正原因,几天后同样的问题还会再次出现。为此,必须检查 logrotate 配置。

nano /etc/logrotate.conf

简单 logrotate 逻辑示例:

/var/log/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

此设置每天返回日志文件,保留 7 天并压缩旧日志。

常见错误

  • 删除系统文件而不知道它是哪个文件
  • 删除运行日志文件并且不重新启动服务
  • 无限期保留旧备份
  • 根本不检查 logrotate 设置
  • 在磁盘 100% 已满之前不要进行干预

常见问题解答

为什么当磁盘已满时服务器会报错?
因为服务无法写入日志、缓存、临时文件或数据库。当写入操作失败时,服务可能会关闭。

删除或清空日志文件是否更好?
而不是完全删除正在运行的服务中的日志文件 截断 使用清空它更安全。

我清理了磁盘,但空间没有释放,为什么?
已删除的文件可能仍由正在运行的服务保持打开状态。可能需要重新启动相关服务。

性能和安全建议

  • 定期监控磁盘使用情况。
  • 将备份存储在单独的磁盘或远程备份区域上。
  • 不要在不使用 logrotate 的情况下让服务长时间运行。
  • 当磁盘达到85%水平时,请采取预防措施。
  • 不要让调试日志在游戏服务器上持续打开。

本文是专门为PvPServer准备的。

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner