如何在不删除快照的情况下还原 LVM 快照?

fal*_*ets 9 backup lvm snapshot

重现步骤

  • 使用 lvm 创建卷的快照

lvcreate -L 200GB -s -n snapshotname /dev/hostname-vg/root

  • 对文件系统进行更改

  • 将文件系统恢复到创建快照时的状态

lvconvert --merge /dev/hsotname-vg/snapshottorestore

  • 重新启动(因为我正在恢复根卷)
  • 显示快照列表 lvs -a

期望的行为

原始快照仍然存在

实际行为

系统恢复到快照时,原始快照被删除

是否有替代方法lvconvert,或者我可以添加一个标志,以便不删除原始快照?

用例

  • 我拍摄了一个工作系统的快照
  • 我做出改变
  • 更改失败
  • 我恢复到工作系统
  • 我想以略有不同的方式重试更改,保留再次恢复到工作系统的可能性

使用lvconvert上面的命令,我需要记住在恢复后再次手动重新创建相同的快照。由于这是一个包含许多更改的大卷,因此我需要等待半小时才能制作快照。(您无法拍摄仍在合并的卷的快照)

卷立即恢复。所以我有一个可以立即使用的干净系统,但我不想在没有备份的情况下继续。所以我需要折腾半个小时,然后备份,然后进行更改。

Mar*_*rco 1

除非将其实现为 LVM 中的一项功能,否则无法保留快照。

当写入具有快照的逻辑卷时,它首先将当前块从源复制到快照中,并将该块标记为已更改。(来源

启动 lvconvert 合并后,它会停止将数据复制到快照(写入时复制)。如果继续这样做,它将将从快照合并的数据复制回快照本身。

当lvconvert合并完成后,它会要求删除此处的快照。这是因为快照仍然包含在覆盖来自源的数据时接收到的数据的副本。

将快照合并操作标记为“保留快照”将是一个新功能,这将在合并完成并删除完成后触发快照创建。

在您的情况下,您可能已经对创建具有特定名称的快照感到满意,然后使用 @reboot cronjob 来检查快照是否存在,如果不存在则创建一个。