8.5. 删除快照
当一个或多个快照不再需要时,您可以删除它们。删除快照后,您将无法把虚拟机恢复到这些快照所包括的时间点上。删除快照并不一定会获得更多的可用存储空间,而这些快照的数据也不一定会被实际删除。例如,您的虚拟机有 5 个快照,如果您删除了第 3 个快照,第 3 个快照中的数据可能仍然会存在在系统中,因为第 4 和第 5 个快照可能会需要这些数据。一般情况下,删除快照通常可以提高虚拟机的性能。
当选择了一个要被删除的快照时,QEMU 会创建一个和要被删除的快照大小相同的新逻辑卷。被删除的快照会和它随后的那个快照进行合并,而新建逻辑卷的大小会被扩充来保存快照合并的结果。如果被删除的快照和它随后的那个快照没有重叠的内容,这个新建逻辑卷的大小将和被合并的两个快照的大小总和相同。当合并完成后,随后的那个快照会被改名,并被标记为已被删除,而用来保存合并结果的逻辑卷会使用它的名字来替代这个快照。最终删除的结果是选择被删除的快照和它随后的那个快照都会标记为已被删除,而这两个快照的合并结果会作为一个快照来取代它们的位置。
例如,快照
Delete_snapshot
的大小是 200GB,它随后的那个快照(Next_snapshot
)的大小是 100GB。Delete_snapshot
被删除,一个新的逻辑卷(临时命名为 Snapshot_merge
)会被创建,它的初始大小是 200GB。然后,Snapshot_merge
的大小会被扩展到 300GB 来保存 Delete_snapshot
和 Next_snapshot
的合并结果。随后,Next_snapshot
会被改名为 Delete_me_too_snapshot
,而 Snapshot_merge
被重新命名为 Next_snapshot
。最后,Delete_snapshot
和 Delete_me_too_snapshot
都被删除。
图 8.4. 删除快照
从正在运行的虚拟机上删除快照的逻辑和从关闭的虚拟机上删除快照的逻辑有一点不同。实时快照删除会被作为一个异步的块任务处理,VDSM 会为虚拟机在恢复文件中维护一个操作记录,从而使此任务可以被跟踪,即使在进行操作期间 VDSM 被重启或虚拟机被关闭时任务也可以被跟踪。当操作开始后,正被删除的快照将不能被预览,或作为一个恢复点(即使删除操作失败或被中断)。活跃的层被合并到它的上一层的操作被分为两个阶段 -- 数据被从活跃层复制到它的上一层,磁盘写操作被镜像到活跃层和它的上一层。最后,当镜像中的数据被合并到它的上一层快照中,VDSM 把镜像链进行同步后,删除操作就被认为已经完成了。