![如何在不休眠的情况下保存机器状态?](https://linux22.com/image/963512/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E4%BC%91%E7%9C%A0%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BF%9D%E5%AD%98%E6%9C%BA%E5%99%A8%E7%8A%B6%E6%80%81%EF%BC%9F.png)
我想知道是否有可能在不真正休眠的情况下捕获机器的状态?目标是创建一个“备份状态”,这样如果系统崩溃,可以直接启动会话,所有窗口都打开,浏览器中的所有选项卡都恢复等。
我认为这可能是不可行的——保存内存快照,然后更改硬盘上的数据,然后再次恢复快照会导致文件描述符损坏等。例如,一个进程在拍摄快照之前打开了一个文件,当恢复快照时,该文件不再存在。
但也许有一个巧妙的方法可以解决这个问题?
答案1
如果您愿意保持所有已安装的块文件系统完全不受影响(即,仅以只读模式安装,例如,即使没有任何更改也会修改 ext4 日志),并在冻结之前卸载其他文件系统(例如 NFS),那么可以。
您可以使用内核参数noresume
来resume=
指定是否要重新启动进入冻结状态。
顺序如下:
要进行快照,请暂停到磁盘,启动系统而不恢复(
noresume
)或另一个系统(例如 livecd),将交换分区复制到其他地方,然后使用正确的方式重新启动resume=
并使用您的系统。要返回冻结状态,请使用
noresume
另一个系统或从另一个系统重新启动,将交换分区复制回来,然后resume=
再次使用正确的系统重新启动。
不过我不推荐这样做。虚拟化提供了一种更安全、更经过测试的方法,可以以更少的警告实现您的结果。