IT #快照

快照概览

我发现生活中看似最简单的事物,往往最复杂。“快照”(Snapshot)在我看来就是典型例子。作为IT管理人员,我们运用快照时从不迟疑,但真正明白它的定义与运作原理的人却寥寥无几。以下为您梳理关于快照的几个核心要点。

一、什么是快照?

快照本质是 “差异记录”。创建快照之初,其文件大小为0 —— 因为此时尚无任何数据变更需要捕捉。原始数据会被锁定:仅允许读取,无法修改;所有后续变更都会写入快照文件——正因为原始数据始终完好保存在原地,我们才能通过快照恢复到创建前的状态。

二、虚拟机(VM)快照的用途?

它是一个短期恢复点,或者叫“检查点”。与可存储数月、数年甚至数十年的 “备份(Backup)” 形成鲜明对比。

三、为何虚拟机快照文件会变大?

原因在于原始数据的变更会持续产生:虚拟机内的文件被编辑、删除,或有新文件创建。快照存在时间越长,虚拟机磁盘的变更量通常越多。需注意:快照捕捉的是 “虚拟机磁盘原始状态” 与 “当前状态” 的差异,差异越大,快照文件体积自然越大。

四、多快照与快照树是什么?

当存在多个快照时,捕捉的差异对象会变为 “最新活动数据(未锁定、非不可变的数据集)” 与 “当前状态”。具体来说:第一个快照记录 “虚拟机磁盘初始状态” 与 “首次创建快照时的当前状态” 的差异;后续快照则依次记录 “新的当前状态” 与 “上一个最新快照” 的差异。因此,每个新快照都会生成一个独立的恢复点,这些快照串联起来就形成了 “快照树”,结构如下:

(示意图)  
虚拟机(VM)  
|_快照 1(Snapshot_1)  
    |_快照 2(Snapshot_2)  
        |_快照 3(Snapshot 3)

此时,快照3对应的磁盘是快照2对应磁盘的子磁盘(Child Disk),快照2对应的是快照3的父磁盘(Parent Disk)。

五、快照树能否无限延长?

理论上可行,但强烈不推荐。快照并非直接存储数据,而是记录元数据(metadata)—— 包括 “哪些数据块发生变更” 以及 “可用哪些唯一数据块替代”,这些信息均保存在快照文件中。

若快照树较长(或较深),且最新快照正在记录变更,追溯某个数据块的引用时,可能需要检查多个快照,甚至遍历整个快照树。这种追溯会显著增加读写延迟,同时给计算资源带来额外负载。

因此,建议保持快照树简短、确保快照时效性;若需长期备份,应选用专为长期备份设计的功能模块(或备份软件)

出处:https://next.nutanix.com/how-it-works-22/snapshots-so-simple-and-yet-so-complicated-faq-38007