最有效、最稳妥的做法是为 /var/log 单独分一个分区。日志撑爆根目录会导致 SSH 登录失败、包管理器异常甚至系统僵死,独立分区可实现硬隔离,推荐 20–50GB,ext4 文件系统,配合 logrotate、journald 限容和使用率监控。

直接给 /var/log 单独分一个分区,是最有效、最稳妥的做法。日志撑爆根目录是生产环境中高频故障,靠后期清理或配额管理治标不治本。
/var/log 必须独立分区
Web服务器运行中,Nginx/Apache访问日志、系统 journal、邮件服务(如 Postfix/Dovecot)、数据库(MySQL/PostgreSQL)错误日志等都会持续写入 /var/log。一旦该目录所在文件系统填满,不仅服务停止写日志,更会导致 SSH 登录失败、包管理器无法运行、甚至系统完全僵死——因为很多关键操作依赖 /tmp 或 /var/run 下的临时文件,而它们和 / 共享同一文件系统。
独立分区能实现硬隔离:即使日志狂涨占满整个 /var/log 分区,根文件系统仍保有余量,系统基础功能不受影响。
推荐大小与文件系统
- 对于中小规模 Web+Mail+File 服务器(如你描述的 2×4TB RAID1),/var/log 建议分配 20–50GB。这个空间足够保存 3–6 个月的压缩归档日志(配合 logrotate)。
- 使用 ext4 文件系统即可,无需特殊选项;若启用日志自动轮转并定期压缩,可考虑加挂载选项
noatime减少元数据写入。 - 不要用 tmpfs 或 overlay —— 日志必须持久化,且需被 logrotate 等工具可靠读写。
配套必须做的三件事
-
启用并配置 logrotate:Debian 默认已安装。编辑
/etc/logrotate.d/rsyslog和自定义应用日志配置(如/etc/logrotate.d/nginx),确保包含rotate 12、monthly、compress、missingok和notifempty。 -
禁止日志写入根分区其他位置:检查
/var/log/journal(如果启用 systemd-journald),建议将其限制在 512MB 内:sudo mkdir -p /etc/systemd/journald.conf.decho -e "[Journal]\nSystemMaxUse=512M" | sudo tee /etc/systemd/journald.conf.d/limit.conf
然后重启:sudo systemctl restart systemd-journald。 -
监控分区使用率:用
df -h /var/log定期检查,或加入 Zabbix/Nagios 监控项,阈值设为 85% 触发告警。
为什么不用 /tmp 或 /home 隔离?
/tmp 生命周期短、内容不可靠,不适合存日志;/home 是用户空间,权限模型和用途完全不同。只有 /var/log 是语义明确、路径标准、工具链原生支持的日志专属位置。把它从根分区剥离,不是过度设计,而是运维底线。

















