恢复到启动时的快照

恢复到启动时的快照

我可以拍摄物理机器的快照并在每次机器启动时恢复到该阶段吗?

这可以用虚拟机完成,但我想在物理机上完成。

背景

我有一台旧笔记本电脑,它会随机关闭。磁盘没问题,内存也没问题,所以还有其他一些问题。我想用它来进行非常基本的冲浪+视频观看。我可以忍受随机断电,但启动它并打开相关应用程序需要很长时间。然而,如果每次都能简单地启动到同一个快照,那就没问题了。

鉴于您可以挂起到磁盘并且可以制作文件系统的快照,我认为这可能是可行的 - 也许有人已经这样做了。

想法1

挂载到磁盘的系统处于完美的状态,可以实现此功能。因此,我们需要做的就是确保磁盘在下次启动之前恢复到此状态。

这可以通过首先启动一个最小的 GNU/Linux 系统来实现,该系统进行设置,然后在恢复的磁盘上执行新的内核启动。

想象一下这个设置:

  • /dev/sda - 最小启动系统
  • /dev/sdb - 具有暂停 RAM/CPU 映像 + 文件系统的交换空间
  • /dev/sdc - 覆盖设备

当系统在 /dev/sda 上启动时,/dev/sdc 将用作 /dev/sdb 之上的新覆盖设备,从而提供 /dev/overlay (类似于:https://raid.wiki.kernel.org/index.php/Recovering_a_damaging_RAID)。设置完成后,将使用kexec在 /dev/overlay 上引导来执行内核。

现在的问题是是否kexec接受覆盖设备作为启动设备。

想法2

启动时运行:

 swapon /dev/sda2
 swapoff /dev/sda1
 dd if=/dev/sda3 /dev/sda1
 (where /dev/sda3 is a copy of the suspend-to-disk image.)

并在 grub 中使用 /dev/sda1 作为挂起到磁盘设备。

将 /dev/sdb1 挂载到 /readonly,然后将 /dev/sdc 覆盖添加到 /dev/sdb 并将 /dev/overlay 挂载为 / 读写。

想法3

  • /dev/sda - /boot 与 initrd
  • /dev/sdb - 具有暂停 RAM/CPU 映像 + 文件系统的交换空间
  • /dev/sdc - 覆盖设备

在 initrd 设置 /dev/overlay 中。交换 /dev/overlay1,文件系统交换到 /dev/overlay2、/dev/overlay3。然后执行以下操作来读回暂停的图像:

echo /dev/overlay1 > /sys/power/resume

如果你想“记录”一个状态,合并/dev/overlay/dev/sdband :

echo disk > /sys/power/state

我们可能应该使用 LVM,而不是 /dev/sd*:https://www.kernel.org/doc/Documentation/device-mapper/snapshot.txt

相关内容