Bee*_*rey 7 linux kernel patch-management
上周,关于 Unix(或 Linux)机器是否需要重新启动的slashdot 文章有相当多的评论。不止一些评论者提到拥有运行时间长达数年的机器。
据我了解,Linux 机器需要经常重启才能应用内核补丁,尤其是与安全相关的补丁(例如ac1db1tch3z 漏洞利用)。在“yum update kernel”之后运行 uname -r 似乎表明旧内核在重新启动之前不会加载。
我的问题是,鉴于此,这些盒子如何实现多年的正常运行时间?我想到的一些可能的解决方案
这些解释中的任何一个是否合理,还是我的理解中缺少某些东西?有没有另一种方法可以最大限度地减少过去两年所需的两打左右的重新启动?
一种解决方案是使用 ksplice。
如果您使用 Ubuntu 或 CentOS 内核,您可以订阅 ksplice.com 服务,只需支付少量费用,他们就会为您提供可用于修补正在运行的内核的特殊内核映像。大多数更新不需要重新启动。非常易于使用和设置。
如果您特别熟练,您可以使用 ksplice 补丁构建您自己的启用内核,而无需订阅该服务,或用于非标准内核。
我有超过 1 年正常运行时间的服务器。不是最佳实践,因为从安全角度来看,服务器……其中一些服务器是数据库主服务器,我们无法承受停机时间。
我认为安全应该是首要问题,但现实世界也存在一些限制。如果你有豪华补丁,并在需要时重新启动它。不要担心正常运行时间,安全总比后悔好。
我建议在重大升级后始终重新启动服务器以确保它恢复正常,您不希望在意外重新启动后陷入困境。
我认为唯一需要重新启动 Linux 机器的时候就是更换内核。我有几台机器运行了两年多,但我根据“如果没有坏,就不要修理它”的原则来维护它们,这就是我实现正常运行时间的方法。当然,如果您的服务器面临外部威胁,您将需要定期应用安全修复程序,其中一些将需要新的内核。我不知道有什么方法可以在不重新启动机器的情况下可靠地完成此操作。这里可能有一些技巧,但很有可能会损害过程中的稳定性,并且您需要将计算机置于单用户模式。从技术上讲,您将实现正常运行时间,但在此期间机器将无法供最终用户使用,那么这有什么意义呢?
如果正常运行时间对您来说确实很重要,那么您可能会对某种形式的 HA/集群解决方案感兴趣,因为您可以重新启动集群的一个节点而不影响整个系统的可用性。否则只需重新启动即可。