重现步骤
- 使用 lvm 创建卷的快照
lvcreate -L 200GB -s -n snapshotname /dev/hostname-vg/root
更改文件系统
将文件系统恢复到创建快照时的状态
lvconvert --merge /dev/hsotname-vg/snapshottorestore
- 重新启动(因为我正在恢复根卷)
- 显示快照列表
lvs -a
期望的行为
原始快照仍然存在
实际行为
系统恢复到快照时,原始快照已被删除
问题
是否有替代方案lvconvert
,或者我可以添加标志,以便不删除原始快照?
用例
- 我对正在运行的系统进行快照
- 我做出改变
- 改变失败
- 我恢复到工作系统
- 我想以稍微不同的方式重试更改,保留再次恢复到正常工作系统的可能性
使用lvconvert
上述命令,我需要记住在恢复后再次手动重新创建相同的快照。由于这是一个很大的卷,有很多变化,所以我需要等待半个小时才能制作快照。(您无法拍摄仍在合并的卷的快照)
该卷立即恢复。所以我有一个干净的系统可以立即使用,但我不想在没有备份的情况下继续。所以我需要花半个小时,然后备份,然后进行更改。
答案1
除非您将此功能作为 LVM 中的一项功能实现,否则您无法保留快照。
当写入具有快照的逻辑卷时,它首先将当前块从原点复制到快照中,并将该块标记为已更改。(来源)
lvconvert 合并启动后,它会停止将数据复制到快照(写时复制)。如果继续这样做,它会将从快照合并的数据复制回快照本身。
当 lvconvert 合并完成后,它会要求删除快照这里。这是因为快照仍然包含在覆盖源数据时收到的数据的副本。
将快照合并操作标记为“保留快照”将是一个新功能,这将在合并完成并删除后触发快照创建。
就您而言,您可能已经对创建具有特定名称的快照感到满意,然后有一个@reboot cronjob 检查快照是否存在,如果不存在则创建一个。