在我的树莓派上,我真的不需要 crons 和 pam 日志记录,并且我想要更少的 I/O 来延长 SD 卡的寿命。
我已经用第二行删除了 cron cron.none
,我目前正在测试authpriv.none
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none,cron.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
基本上,我想要记录的只是致命错误、硬件信息、内核/dmesg 和失败的登录
我还能改进什么?
答案1
这不是您正在寻找的答案,因为我将尝试劝阻您(这实际上是唯一合理的答案)。
在我的树莓派上,我真的不需要 crons 和 pam 日志记录,并且我想要更少的 I/O 来延长 SD 卡的寿命。
如果您认为 cron 确实进行了过多的日志记录,那么您应该考虑 cron 正在做什么以及频率如何,并进行调整。重点是,如果你不太关心它在做什么,那么它为什么要这样做呢?
WRT SD卡,日志记录还不够重要,值得担心。就像:完全无关紧要,你在浪费时间去思考它。 SD卡使用磨损均衡帮助保护自己:它们不会受到碎片的影响(即碎片与性能无关),并且当您写入磁盘时,数据会写入卡中最少使用的部分,无论在哪里。这超越了分区边界,因此如果您在 16GB 卡上有 2GB 分区,则该分区不限于 2GB 宽的物理地址块:它是一个动态 2GB,其物理地址将是一个不连续、不断变化的列表涵盖整张卡。
如果您的系统每天写入 1 MB 的日志(您可以通过将所有内容的副本发送到一个文件来检查这一点,这通常是这样/var/log/syslog
),并且您有一张 4 GB 的卡,则需要 4000 天才能完成这样的周期写入整张卡就一次。 SD 卡的实际寿命可能长达100,000 次写入周期[但请参阅评论]。因此,所有日志记录都会使卡磨损 4000 * 100000 / 365 =
〜100万年
您现在明白为什么减少 25%、50%、甚至 99% 的日志记录了吗?完全不相关?即使该卡的写入周期寿命极差(例如 100 次),您仍然会得到世纪注销它。为了更深入地测试演示这一原理,看这里。
基本上,我想要记录的只是致命错误、硬件信息、内核/dmesg 和失败的登录
除非您启用“调试”级别日志记录,否则到目前为止,在日志中写入最多的事情是当出现真正错误时,并且通常情况下,除非您完全禁用日志记录,否则这些日志记录将具有高优先级。例如,我怀疑在正常情况下,您的 pi 使用默认的 raspbian 配置每天写入 1 MB 的日志,即使是 24/7。让我们四舍五入到此为止。现在,假设有缺陷的内核模块在无人值守的系统上每秒 50 次向系统日志写入相同的 100 字节“紧急”恐慌消息,持续一周:100 * 50 * 60 * 60 * 24 * 7 = ~ 30 MB。考虑到上述卡的使用寿命,以及以下事实:您可能想收到消息。
顺便说一句,记录这种混乱的情况是非常不寻常的。日志记录很好。日志是你的朋友。如果您想修改 rsyslog 配置,您的时间最好花在添加更多而不是更少上。
答案2
虽然你特别提到了 rsyslogd (自从你提出这个问题以来已经过去了 3 年多),我觉得这里应该提到另一个选项:busybox-syslogd
。它可以(并且在 raspbian 中默认情况下)将日志消息存储在内存中,以便由 检索logread
,而无需将任何内容写入磁盘。这是只读安装磁盘的完美解决方案!