什么叫备份

每隔一段不长的时间,就会看到网上有人抱怨:

因为外接存储设备的质量问题,我丢失了大量数据!

有时候这种抱怨还会成为一个大新闻。但是,劣质的存储设备只应该消耗额外的金钱和时间,绝对不应该消灭你的数据。如果你对自己说,这次劣质的设备让我得到了教训,要用好的设备来备份,那你不懂什么叫「备份」。

Restorability

首先,备份绝不只是定期把数据写到另一个存储器上。备份的目标是未来一旦发生灾难可以恢复数据。所以备份的第一指标是 restorability。如果你用一个 script 每天定期把数据 dump 到另一个 storage 上,然后就甩手什么都不管了,这不叫备份,这叫 dump to cold storage。有多少人的数据都好几天读不出来了,还浑然不知。一个基本的备份过程要求:

  1. 把数据写到备份 storage 上。
  2. 检查写入的数据是否能成功读出。

当然,在合理的成本约束下第二步不可能把所有备入的数据再全部读出,只能是随机抽检。对于个人用户来说,随机抽一两个文件打开即可。后面会定量分析这么做的结果。假设你的设备每月失败率是 5%。那么有了第二步,你的数据丢失率才是 5%。否则,假如你一年后才想起来 restore 数据,那么你看到的失败率会是 1 – (1 – 5%)12 = 46%。也就是说,一半可能你的数据已经丢了。两年后数据丢失几率上升为 70%。

Redundancy

单靠关注 restorability 这个概念本身,还不是健全的备份机制。因为发现备入的数据无法读出时,除非运气特别好(此次失败只影响了刚刚写入的数据),否则在同一个 storage 上的历史数据很可能丢失。

这样就要涉及 redundancy。把上面的备份过程扩展为:

  1. 把数据写到备份 storage A 上。
  2. 检查写入 A 数据是否能成功读出。
  3. 把数据写到备份 storage B 上。
  4. 检查写入 B 数据是否能成功读出。

这样备份的初始成本扩大了一倍 —— 因为必须购买双倍容量的 storage。好处是即使在第 2 步或者第 4 步发现读出失败也并不会丢失数据。这里做一下分析。假设一个设备在两次备份之间的失败率是 5%。那么在上面的流程中,真正丢失数据的几率是 (5%)2 = 0.25%。失败率下降为原来的 1/20!现在假设你不小心买了两张烂盘,失败率高达 20%,那么丢失数据的概率为 4%。可以看到,虽然 storage 的质量下降了很多,但是数据丢失的概率比只用一张 95% 可靠度的 storage 还要更低!

现在我们进一步扩展上面的过程:

  1. 把数据写到备份 storage A 上。
  2. 检查写入的数据是否能成功读出。
  3. 把数据写到备份 storage B 上。
  4. 检查写入的数据是否能成功读出。
  5. 等待备份周期的一半,检查 A 和 B 的读出。

上面假设我们用的两张烂盘在备份周期失效的概率为 20%。那么这里在第 5 步它们的失败概率为 10%。数据丢失的概率降为 1%!而如果用备份周期失败率 5% 的盘,失败率降为 (5% / 2)2 = 0.0625%。

但是这个流程有一个要点,每次发现设备失败的时候,必须立刻购买新的设备补上,否则整个备份机制的可靠度立刻退化为单张盘的可靠度。

抽查力度

前面提到检查 restorability 的过程出于成本考虑只能部分抽检。假设有 20% 的几率检查。拿可靠度 80% 的设备来说,查不出实际问题的概率为 10% x 20% = 2%。这时系统退化为单盘可靠度(而用户不知道)。实际增加的数据丢失概率为 20% x 2% = 0.4%。整个流程的失败率为 1.4%。而如果是可靠度 95% 的盘,整个流程失败率为 0.0625% + 2.5% x 20% x 5% = 0.0875%。

备份可靠度

整体而言,一个备份流程的可靠度受到这些因素影响:

  • 单个设备可靠度。
  • 冗余设备的数量。
  • 更换失败设备的速度。(本文还没分析过这个元素,读者可以当作练习。)
  • 检查 restorability 的频度。
  • 检查 restorability 的力度。

个人用户若选择自行备份数据,就要了解隐含的时间和器材成本。至少要准备双份冗余。至少在每次备份时抽检 restorability。尽量保证抽检有 80% 以上的可靠度。如果单月失败率 5% 的设备每 1.5 年可能期望失败一次,0.25% 意味着 33 年期望失败一次。而如果做到每半个备份周期多检查一次读出,0.0875% 就意味着 95 年可能期望失败一次。

但事情的另一面是持续投入,80% 可靠度的设备,平均五个月要更换一个 storage。95% 平均一年半要更换一个设备。容量越大的设备,可靠度必然更低。所以,当你看到单个 1T 硬盘价格的时候,不要再以为那是你备份 1T 数据的成本,整个备份机制成本至少是它的数倍以上。

一条回应 to “什么叫备份”

  1. lhb5883 Says:

    对,所以做备份的时候一定要搞Hash,这样才能知道是否有数据损坏,不知道有什么自动化的软件来弄这个。目前我还是用HashTools来手动做这个。

留下评论