如何避免使用linux停机?

分享于 

4分钟阅读

互联网

  繁體 雙語

问题:

Ubuntu经常更新软件需要重启( 它可以有副作用,比如停机时间)。

我看到Ubuntu有 https://www.ubuntu.com/livepatch 插件,它允许内核更新不需要重启,但这是付费服务。 还有 ksplice

是否存在升级/补丁从不需要重新引导的Linux发行版/进程?

( 我知道设置高可用性( 哈哈) 服务器并使用一次性服务器是最佳实践- 所以我不知道如何维护服务,但是在实际服务器上。)


回答 1:

对于你的问题,"是否存在升级/补丁从不需要重新引导的Linux发行版/进程",我不知道,我非常怀疑那里有什么是真正重新启动的。 in发表评论说,现场补丁不是一个out-of-the-box体验,现场补丁也不能达到重启的同样结果。

要说明这一点的奇闻: 最近我调查了一个问题,其中一个特定的实用程序已经在大量机器上启动了 segfaulting。 我尝试查看它用来查看最近升级过的共享库的共享库;ldd说它不是一个可以执行的程序。 我在gdb中尝试过它;在它到达第一条指令之前,它已经。

查看错误的时间,我发现最近应用了一个iframe补丁程序。 我退出了补丁,并且二进制没有,然后再添加它,然后再次启动 segfaulting。 在同等补丁的内核上重新引导可以正常工作。 它结果是一个 32位 支持的补丁,该修补程序没有正确应用。 他们在几个小时内发出了一个固定的补丁,并且在没有干预的情况下回到正常工作。

另一个例子:修补程序非常创新,决定实时修补程序在接收到修补程序之前重新启动。

我们在工作中运行大量的物理和虚拟服务器,并且有大量的iframe和规范的Livepatch系统。 它们都比许多它的他软件更可以靠,但是我仍然希望看到我们的服务设计为 on。


回答 2:

使服务高度可用和使单个机器可用之间有一个重要的区别。

在大多数情况下,目标是使服务高可用性,并且单个机器的可用性只是实现该目标的一种手段。 然而,通过提高单个机器的可用性,在达到目标的程度上有一个限制。

即使你可以取消所有的停机,因为需要更新软件,单个机器仍然不可以用 100%。 因这里,为了提高服务的可以用性,在单个机器的可以用性上,你必须设计更高级别的冗余。 你的问题最后一句话表明至少在原则上你知道这个。

如果设计一个服务比单个机器可以提供更多的可以用性,就不再能够实现单个机器的高可以用性。 因此,对于高可用服务,不需要避免重新引导。 相反,你可以遗丧单个机器的可以靠性,以节省可以靠性,从而获得更高的可以靠性。

一旦高级系统设计是可以靠的,在单个硬件组件失败的情况下,从成为一个风险的优势。

这是一个风险,因为现场修补的机器行为和引导最新内核版本的机器之间可以能有细微差别。 这可能会引入一个潜在的Bug,在机器下次重启时可能会导致中断。 这种风险被重新引导,以获得一个清晰的板块被看作是一种减轻一些停电的方法。

有一天你可能会遇到中断,因为你认为重启机器可能会有帮助。 但是当你重启时,你被潜在的Bug 击中,阻止机器回到期望状态。 实时修补并非唯一可能发生这种情况的方法,它可能会由于服务manually而发生,或者由于服务在启动过程中没有配置,或者配置过早,因为依赖关系不满意而启动。

出于这些原因,高度可以用的服务实际上更容易实现单个机器的重新引导。



相关文章