例如,如果我在vmware / vbox中创build快照,并且在删除5GB文件后不久,快照增量文件将随着删除的文件内容增加5GB,以便通过恢复快照来恢复它。
如果稍后不是恢复快照,我select删除快照,以便将增量文件与基础磁盘合并。 据我所知,它将通过重放/合并创build/修改事务从快照带来的基础磁盘同步。
5GB文件驻留在快照中的逻辑是什么? 合并过程中不会在基础磁盘上重新创build。 它如何知道在合并期间跳过这个文件? 它只是寻找inode存在?
感谢fLo
你已经完全落后了:
如果您恢复到您的快照,则其中的任何内容都会重播(反向),并合并到拍摄快照的卷中。 这使得该卷与快照相同,并且快照被销毁。
如果删除快照,则什么都不合并; 快照被简单地销毁,并且已经拥有文件系统当前状态的卷保持不变。
我不能一直对vBox说话,但以下情况适用于VMware。
从具有活动快照的虚拟机中删除文件时,增量磁盘不会按已删除文件的大小增加。
我可以证实这一点,因为在对Michael的回答发表评论之后,我去了我的vSphere 5.5系统上进行testing。
考试
结果
增量磁盘只有大约1GB的大小。
说明
当您考虑这个问题时,这是非常有意义的,因为增量磁盘是基于块的,而不是基于文件的。 如果同一个磁盘块在快照处于活动状态时碰巧被重写了10次,那么增量不会跟踪所有更改,只是该块的当前状态。
读取的IO模式通过在当前分支的最近快照(也就是增量磁盘)中查找所请求的块开始,然后在分支到达基础磁盘之前一直工作,直到find它为止。
通常,删除一个文件不会导致消耗块被清零,而是会更新让文件系统find块的指针被删除。 这可能有例外,但是让我们保持一般。
现在,当你删除快照时,你有效地说我喜欢这些块,并希望使它们“永久” 。 这样做会从有问题的快照中获取块并将其应用到父级。
另一方面回到快照就是说, 我不喜欢这些块,希望他们从来没有发生过 。 这样做会更改VM的磁盘指针以使用父项,忽略delta的内容并保留它们。
另外,还原!=删除。 您可以在不删除的情况下还原,并且可以根据需要多次恢复为快照。
最后一点与VMDK中的块有关。
如果您使用的是精简configuration磁盘,那么在操作系统请求写入磁盘之前,VMDK中实际上不存在任何块。 在那个时候,他们被清零,然后交给操作系统。 据推测,读取一个从未使用过的块只会导致hypervisor只返回零。
当你开始并随着时间的推移而增长时,这有利于使用更less的空间。 但是, VMDK永远不会缩小 。 好吧,无论如何,从虚拟pipe理员不是没有太多的努力。
Alaright,我在这里已经走了很久了,我确信我可以更好地措辞和组织这个答案,但我认为这是全部。