Linux磁盘空间异常爆满的排查和处理

Linux磁盘空间异常爆满的排查和处理

我采用了笨方法:在根目录下,通过du -hs命令,列出各目录所占空间大小

1
2
3
sudo su
cd /
du -sh *

然后看哪个文件夹占用空间最大,再进入目录继续执行 du -sh * ,这样一步一步的追踪,通过这样的方式最终找到占用空间最大的文件。

通过追溯,我发现有两个文件占用空间特别大,分别是这两个文件:

1
2
/var/log/kern.log
/var/log/syslog

我可以通过删除临时解决空间占用的问题,不过最根本的是解决问题产生的原因。由于我运行PCIE相关的程序,导致空间异常爆满,为了先临时解决问题是,我可以先删除这两个文件,然后再重启,发现空间异常爆满的问题解决了。

1
2
3
4
5
6
7
8
rm /var/log/kern.log
rm /var/log/syslog
reboot
# 或
echo "" > /var/log/kern.log
echo "" > /var/log/syslog
service syslog restart
journalctl --vacuum-size=50M

您需要成为根用户:输入sudo su,密码,然后输入上面的命令

这里有一个更安全的方法,允许您在回收磁盘空间的同时保留日志文件,同时也可以阻止日志文件再次这样做

  1. 安全地清除日志:在查看(或备份)日志以确定系统问题后,通过键入 > /var/log/syslog (包括 >)清除它们。您可能需要成为根用户,在这种情况下输入 sudo su 、您的密码,然后输入上面的命令)。

然后重新启动 syslog 服务( systemctl restart syslogservice syslog restart)。 然后,可以使用 logrotate 强制日志在达到一定大小时自动旋转和删除。在本例中,您可以使用 sudo vim /etc/logrotate.d/rsyslog 编辑配置并添加一行: maxsize 1G

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/var/log/syslog
{
  rotate 7
  daily
  maxsize 1G # add this line
  missingok
  notifempty
  delaycompress
  compress
  postrotate
  /usr/lib/rsyslog/rsyslog-rotate
  endscript
}
  • 这将迫使您的syslog“旋转”(即,创建一个新的日志文件并将前一个日志文件存档),或者在该文件成为1GB之后(以第一位为准)。请注意,rotate 7意味着您的系统将只保留7次总的syslog备份,因此它只能占用7GB的空间。
  • 注意:您可以更改maxsize、rotate N和其他设置以自定义日志–使用命令man logrotate查看更多信息。
  1. 您可能需要在文件的第二部分中添加相同的设置,它控制其他日志文件的行为(例如,kern.log用于内核事件,auth.log用于身份验证事件,等等)。此设置将使每个其他日志文件总共只占用4GB:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/var/log/kern.log
{
  rotate 7
  daily
  maxsize 1G # add this line
  missingok
  notifempty
  delaycompress
  compress
  postrotate
  /usr/lib/rsyslog/rsyslog-rotate
  endscript
}

该配置紧挨着上一条配置。

这将允许您的系统在不填充磁盘的情况下继续记录事件。

Licensed under CC BY-NC-SA 4.0
最后更新于 Jul 11, 2025 15:03 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计