我可以拍摄物理机器的快照并在每次机器启动时恢复到该阶段吗?
这可以用虚拟机完成,但我想在物理机上完成。
背景
我有一台旧笔记本电脑,它会随机关闭。磁盘没问题,内存也没问题,所以还有其他一些问题。我想用它来进行非常基本的冲浪+视频观看。我可以忍受随机断电,但启动它并打开相关应用程序需要很长时间。然而,如果每次都能简单地启动到同一个快照,那就没问题了。
鉴于您可以挂起到磁盘并且可以制作文件系统的快照,我认为这可能是可行的 - 也许有人已经这样做了。
想法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/sdb
and :
echo disk > /sys/power/state
我们可能应该使用 LVM,而不是 /dev/sd*:https://www.kernel.org/doc/Documentation/device-mapper/snapshot.txt