将整个进程状态存储在磁盘上并稍后恢复? (在 Linux/Unix 上)

Posted

技术标签:

【中文标题】将整个进程状态存储在磁盘上并稍后恢复? (在 Linux/Unix 上)【英文标题】:Storing entire process state on disk and restoring it later? (On Linux/Unix) 【发布时间】:2011-08-07 13:13:00 【问题描述】:

我想知道:是否有系统调用、库、内核模块或命令行工具可以用来将正在运行的程序的完成状态存储在磁盘上?

也就是说:我想将一个进程当前正在使用的内存、页面布局、堆栈、寄存器、线程和文件描述符完全转储到硬盘驱动器上的一个文件中,并且以后能够无缝恢复它,就像一个模拟器“保存状态”或虚拟机“快照”。

如果可能的话,我还希望拥有程序状态的多个“备份副本”,这样如果程序由于某种原因死机,我可以恢复到之前的执行点。

这可能吗?

【问题讨论】:

'Hibernate' a process in linux的可能重复 有类似的质疑asked on unix.exchange 【参考方案1】:

类似this?您也可以查看checkpointing page on wikipedia。

【讨论】:

谢谢! :-) 这看起来真的很令人印象深刻。但它仍然被维护吗? cryoPID2 的最后一次提交似乎是从 2009 年开始的。:-( 不幸的是,该项目似乎至少是一个僵尸。看到这个答案(问题可能也是这个问题的副本):***.com/questions/2134771/… 您的链接(“this”)现在已失效。您可能希望链接到 code.google 之类的内容或其他内容。或sourceforge的链接。 有人可以通过回答类似的问题来提供帮助(适用于 Windows)***.com/questions/38263881/… 我在编译它时遇到了很多麻烦...有人有预编译的二进制文件吗?【参考方案2】:

您应该看看来自伯克利实验室的BLCR project。 这被几个 MPI 实现广泛用于提供 并行应用程序的检查点/重启功能。

【讨论】:

"目前还没有对 3.x 内核的任何支持。在支持之前,几乎没有必要修补配置脚本以正确定位 3.x 内核,这就是错误来自。” --hpcrdm.lbl.gov/pipermail/checkpoint/2012-June/000427.html 有什么建议吗?我真的很想让这个工作。【参考方案3】:

一个core dump基本上就是这个,所以是的,一定可以得到。

您真正想要的是一种将转储重新存储为正在运行的程序的方法。这可能更难。

【讨论】:

以上是关于将整个进程状态存储在磁盘上并稍后恢复? (在 Linux/Unix 上)的主要内容,如果未能解决你的问题,请参考以下文章

磁盘阵列

存储/恢复整个应用程序的快照/状态

php反序列化网站漏洞修复指南

Raid磁盘阵列数据恢复-数据库修复过程

我可以更改 PayPal 按钮上的事件侦听器以激活复活节彩蛋,然后稍后将其恢复为原始状态吗?

硬盘数据恢复+数据库数据修复过程