存储基础知识(二)回滚的原理

虽然用户开启快照,可在通过创建时间点来保护修改的数据,但要回到修改之前的状态就必须用到回滚。打个比方,我在t1时刻给画板上画了一棵树,t2时刻又画了一只猴子,t3时刻画的时候发现画错了,我不想要猴子和现在所画的东西,我想回到那棵树的时刻,就会用到回滚。

快照的回滚也是如此,用户创建多个时间点,每个时间点都可能保护着数据,但想回到某个时刻的数据状态,同样需要回滚。原理图如下所示:

在建时间点P1之前的数据为ABCD,P1时刻,将AB写为A'B',于是快照保护了被修改的数据AB,原数据变为A'B'CD;

在时间点P2时刻,用户又将C写为C',于是快照保护了P2 时刻被修改的数据C,原数据变为A'B'C'D

在时间点P3时刻,用户将之前修改过的A'写为A'',于是快照保护了被修改的数据A',原数据变为A''B'C'D

此时,用户想回到P1时间点之前的状态,也即回到数据为ABCD的状态,会从P1——>P2——>P3依次找被保护的数据,并进行比较组合。比如上图中,它找到A相关的数据有A和A',但由于A早于A',所以选择A,BC不用选择,首次出现,所以最终组合出来的数据为ABC,也就是说,从P1时刻之前到现在所有修改的数据为ABC,那么只需要把ABC写回当前时刻数据块,就会变得跟P1时刻一样。

      至于回滚为什么要新建时间点P4,很好理解,用户从当前回滚到时间点P1 之前时刻后,又想滚回来怎么办?你的数据已经从A''B'C'D写入ABC后变为ABCD,无法回到之前的数据状态,所以需要建时间点P4,用来保护你修改的数据,保证数据不丢

       

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值