热克隆活的 Linux 服务

che*_*ven 14 linux clone

我们需要在 Linux 服务还活着的时候对其进行热克隆,而不仅仅是因为我们无法重启之类的;这只是因为我们的特殊情况(是的,我已经阅读了这个答案,但它与我的Clone a working Linux server有点不同)。

我们有一个计算节点,可以说是一个 NLP 计算节点,它正在运行一些模型。当我们启动节点(当然还有服务)时,计算会非常慢,直到我们多次喂它为止。我们称之为热身。

不幸的是,预热工作需要我们等待很长时间(可能我们的计算在节点预热之前完成)。

那么问题来了,有没有稳定的方式热克隆Linux服务器,让节点保持最佳性能,以便我们在更短的时间内克隆并上线?

Mic*_*ton 28

也许你不能“热克隆”整个服务器(你可以,但前提是它是一个虚拟机),但你可以冻结和恢复单个进程,使用criu,用户空间中的检查点/恢复。

这允许您将程序的内部状态保存到磁盘并停止程序,然后从保存的文件将程序恢复到该状态。

为了支持您想要的操作,您可以将代表已保存程序的文件复制到另一台服务器,并在那里恢复它。

criu 需要一个具有各种功能的最新内核,因此较旧的 Linux 发行版可能无法运行。您可以criu check在特定机器上运行以确定是否存在 criu 的先决条件。


小智 12

这可能有点超出您当前环境的范围,但执行此操作的行业标准方法是虚拟化您的服务器。许多虚拟化主机(VMware、virtualbox 等)允许保存服务器状态的“快照”,然后可以将其克隆到新实例中。这些新实例将具有与原始实例完全相同的状态,直到正在运行的进程。当然,您需要确保您运行的软件在虚拟环境中仍能正确运行(想到 CUDA/GPU 计算)。

  • 当您“实时迁移”一台机器时,它需要暂停。当它暂停时,它的内存被 1:1 复制到集群中的另一台机器,在那里它是未暂停的——完好无损。这可能需要一些时间,具体取决于正在使用的内存量以及网络结构的速度。如果它调用的停机时间足以满足您的需要,您也许可以使用此方法。 (3认同)

Ato*_*X84 3

您提到的问题参考了一个链接,http://www.linuxfocus.org/English/March2005/article370.shtml,它描述了我想象的满足您请求的所有方式。

这些选项对于服务器上运行的内容来说并没有多大意义。您必须考虑到在克隆过程中可能更改的所有文件都可能是目标计算机上不一致的文件。在那篇文章中,您提供了他们谈论数据库的内容,并且像这样克隆数据库并不能保证数据完整性。

目前还不清楚你所说的“直到我们喂它几次”是什么意思。

但如果我很好地理解你的要求,你必须考虑到为了克隆一个系统,它需要时间来复制和计算资源。

要执行“ON/OF”或更准确地称为活动/备份环境,必须在集群中正确配置服务器。

如果这不是您期望的答案,我很抱歉,但您得到的选项就是这些。