上周,关于是否需要重启Unix(或
Linux)机器的
slashdot article还有一些评论.不止一些评论者提到机器的运行时间长达数年.
据我所知,linux盒子需要经常重启以应用内核补丁,特别是与安全相关的补丁(如ac1db1tch3z exploit).在’yum update kernel’之后运行uname -r似乎表明在重新启动之前不会加载旧内核.
我的问题是,这些盒子如何实现多年的正常运行时间呢?我想到了一些可能的解决方案
>这些机器不是生产和/或暴露给用户,因此安全补丁并不是一个问题.
>所有海报都使用现场补丁服务,如Ksplice
>可以通过重新加载模块而不是整个内核来应用内核安全修补程序.
> uname -r在内核补丁后反映出错误的信息,毕竟加载了更新的内核.
这些解释中的任何一个都是合理的,还是我的理解中缺少某些东西?还有另一种方法可以减少过去两年所需的二十多次重启吗?
解决方法
我认为唯一一次需要重启Linux机器就是更换内核.我有几台机器运行了超过2年,但我根据“如果它没有损坏,不要修复它”的原则维护它们,这就是我如何实现正常运行时间.当然,如果您的服务器暴露于外部威胁,您将需要定期应用安全修复程序,其中一些将需要新内核.没有重启机器,我不知道有任何办法可靠地做到这一点.这里可能会有一些技巧,但很有可能会破坏过程中的稳定性,您需要将机器带入单用户模式.您将在技术上实现正常运行时间,但在此期间最终用户无法使用该机器,那么重点是什么?
如果正常运行时间对您来说非常重要,那么当您可以重新启动集群的一个节点而不影响整个系统的可用性时,您可能会对某种形式的HA /集群解决方案感兴趣.否则只需重启.