我想以无人监督的方式更新ubuntu框。如果更新失败,我将不得不飞到那里手动修复它:P所以我的问题是:
如果在内核或用户空间包更新过程中出现断电,系统是否会保持一致?
示例场景:
跟进: 如果dpkg无法实现这一目标,我的选择是什么?像docker这样的东西似乎无法解决这个问题,因为主机操作系统仍然需要更新。谢谢!
添加了: 什么是无人监督的方式:我有成千上万的这些箱子在不同的地方运行。有人可能在任何时候无意中拔掉电源插头。对于升级,我的服务器发送它们"升级到XXX版本"命令。他们自主执行命令。
答案 0 :(得分:1)
根据我的经验和Debian团队提供的文档,您应该能够依靠Debian自动更新稳定的系统。
检查https://www.debian.org/doc/manuals/debian-faq/ch-uptodate.en.html并进行评估。
如果能力被杀,那么你需要手动运行
dpkg --configure -a
我并不是说这是真的安全,但我说它足够安全。
您可以通过将一个非常小的系统作为许多LXC容器的主机来实现更安全的配置,这些容器包含您需要升级的大多数软件,从而降低了更新主机系统时系统崩溃的风险。
答案 1 :(得分:1)
你是什么意思"无监督的方式"?通常一个通过ssh登录,并在命令行上远程运行apt-get
或aptitude
。通常apt-get/aptitude
首先运行,下载必要的包。下载完成后,dpkg
运行,将这些软件包安装到系统中。如果在apt-get/aptitude
运行时出现系统故障,则没有问题;你只剩下一些部分下载的软件包,可以从你离开的地方继续。如果dpkg
正在运行时出现故障,则可能存在(也可能会出现)问题,但问题通常也可以使用dpkg
等dpkg --configure
进行修复。 dpkg
相当健壮。当然,从来没有任何保证。请记住,系统通常在升级期间保持运行状态,因此除非存在某些灾难性问题,例如删除重要的系统文件,否则系统通常会保持正常运行并且可以修复。甚至ssh连接通常在升级期间仍然存在。
注意:以较小的增量进行更新/升级可能会降低出现问题的可能性。但你的里程可能会有所不同。
更新:海报澄清了术语"无人监督"。这可能对我的回答没有任何影响,除了你想要确保你在所有机器上保存日志,这样如果出现问题,你就会知道出了什么问题。 Debian自动保存dpkg
和apt
的日志。这些是/var/log/dpkg.log
,/var/log/apt/history.log
和/var/log/apt/term.log
。在检查升级是否成功完成方面,term.log
可能是最相关的。