优化syslog日志存储需三步:一是用logrotate自动压缩旧日志,节省70%~90%空间;二是将/var/log挂载至独立分区,避免挤占系统空间;三是调低rsyslog日志级别(如info→warning),从源头减少60%以上日志量。

优化 Syslog 日志存储,关键在控制体积和分散压力——压缩能大幅减小旧日志占用,分区存放则避免日志挤占系统关键空间。这两项操作不依赖额外软件,配置稳定、见效快。
用 logrotate 实现自动压缩
logrotate 是 Linux 发行版默认的日志管理工具,它能在轮转时自动压缩旧文件,无需手动干预。压缩后通常可节省 70%~90% 空间(取决于日志文本重复度)。
- 编辑服务专属配置,例如 /etc/logrotate.d/rsyslog 或 /etc/logrotate.d/syslog
- 确保包含 compress 和 delaycompress:前者启用 gzip 压缩,后者让最新一轮日志暂不压缩(避免频繁 I/O 影响性能)
- 典型配置段示例:
/var/log/messages {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
保存后可立即测试:sudo logrotate -f /etc/logrotate.conf,检查 /var/log/messages.1.gz 是否生成。
把日志挪到独立分区
默认日志存于 /var/log,而 /var 分区常与系统根分区共用,容易因日志膨胀导致系统告警甚至宕机。将日志单独挂载到大容量分区是最稳妥的隔离方式。
- 准备一块空闲磁盘或 LVM 逻辑卷,格式化为 ext4 或 xfs
- 挂载到临时路径(如 /mnt/logs),复制现有日志:
sudo cp -a /var/log/* /mnt/logs/ - 卸载并修改 /etc/fstab,添加一行:
/dev/sdb1 /var/log ext4 defaults 0 2(按实际设备名和文件系统调整) - 重启或执行
sudo mount -a挂载生效,确认df -h /var/log显示新分区
注意:rsyslog 服务无需重配,它只认路径;但需确保新分区权限正确(chown root:adm /var/log && chmod 755 /var/log)。
补充:压缩也可手动触发(应急用)
当磁盘空间突然吃紧,又来不及等下一次轮转时,可快速压缩已存在的旧日志:
- 压缩单个文件:
sudo gzip /var/log/secure.1→ 得到 secure.1.gz - 批量压缩 30 天前的普通日志:
sudo find /var/log -name "*.log" -mtime +30 -exec gzip {} \; - 若需保留原名访问,加软链:
sudo ln -sf /var/log/secure.1.gz /var/log/secure.1
操作后建议运行 sudo systemctl restart rsyslog 确保服务识别新状态。
别忽略日志级别这个源头
压缩和挪分区是“治标”,调低日志级别才是“治本”。比如将 /etc/rsyslog.conf 中默认的 *.info 改为 *.warning,可直接减少 60% 以上日志量。
- 重点调整项:
*.info;mail.none;authpriv.none;cron.none /var/log/messages→ 改为*.warning;mail.none;authpriv.none;cron.none /var/log/messages - 改完重启:
sudo systemctl restart rsyslog - 验证效果:观察
ls -lh /var/log/messages*文件增长速度是否明显放缓










