备份的重要性

September 4, 2007 11:11 pm UTC | In Tech

Google 年初出了一篇论文,Failure Trends in a Large Disk Drive Population,讲了硬盘故障的趋势和各类因素对之的影响。相信大家或多或少都听说过周围的人硬盘破掉哭天哭地的事情,甚至可能发生在自己身上。我前几天算了一下,我自己在过去的七年里用过大概 20 个硬盘,其中挂掉了三个硬盘。不知道是个人感觉还是确有其事,硬盘的平均寿命可能确实已经不如二十世纪了。

硬盘挂掉到底是个什么样的概率呢?按照现在一般厂家宣传的来看,我们就假设硬盘的平均寿命是 3 年。这个硬盘挂掉就跟重原子衰变一个规律,是指数规律,也就是说,时间 t 之后硬盘还没有挂掉的概率是 exp(-t/T),这里 T = 3 年。我们常常听人说,做事情要万无一失,这个意思是说出错的概率要小于 0.01%,现在我们宽容一点,硬盘数据也不是人命关天的事情,我们就说出错的概率小于 1% 就够满足了,那么这样的情况 t 是多少呢?t = -T * ln(0.99) = 11 天。也就是说,硬盘用了超过 11 天,就有大于 1% 的概率挂掉了。从这个计算我们可以看到,用硬盘指望硬盘不挂掉其实是很拼人品的。

有人说,既然硬盘会挂掉,那么我就建一个 raid 硬盘阵列就可以了,备份还是没什么必要的。raid1 可能是最常用的,高级一点可以用 raid5。自然,这是最基本的一个做法,即使一个硬盘挂掉也可以很快恢复数据。不过在硬盘物理层上还有文件系统,文件系统挂掉并不少见,而这种情况下 raid 的冗余数据是完全帮不上忙的。土人我亲眼见过 raid1 上 ntfs 文件系统崩溃,也见过 raid5 上 ext3 文件系统崩溃,从此大彻大悟再也不相信有了 raid 冗余模式就可以高枕无忧的屁话。

另外,在没有版本管理系统的情况下,有的时候写东西写错或者误操作往往会希望看看昨天这个文件是什么样子,这又是需要备份了。好了废话这么多,总之备份是放之四海而皆准的解决方案。如何备份?很多人不备份的原因就是太麻烦,首先,人最在乎的数据往往是每天都在变化的;其次,备份往往需要人去参与,比如刻盘;还有,如果没有好的软件,备份大量文件必然要耗费大量的机器时间。如果每天备份都要这么大张旗鼓,自然没人愿意备份了,所以实用的日常备份必定是自动进行的,而且需要程序快速准确判断出原始数据和备份的差异,只复制有差异的部分。

有了自动备份,那么多长时间备份一次?这个完全看具体情况。比如与盈利挂钩的办公环境,每天备份数据的要求并不过分。另外,备几份?有人说要多备几份,每次备份删除一份最早的;也有人备三份不同频率的,分别是每天、每周、每月备份。我这里只是把看到的罗列一下供参考。一般的数据备一份足够。

然后一点是,往哪里备份?一般来说往另一个硬盘备份就可以了,可以是自己这个机器,也可以是另一个机器通过网络备份。不过会不会备份和原始数据同时挂掉呢?有可能的,比方,火灾,或者雷电袭击了输电系统。如果有这种顾虑,一般推荐是进行异地备份,通过网络或者别的手段把数据同步到另一个物理位置的机器上。很多年前 Stanford 发生过一起火灾,把 Career Development Center 一个楼全烧没了,所有的学生求职数据库连同备份都烧没了。很认真地说一句,如果有特别重要的数据,应该考虑异地备份,最简单的方法可以是,每年刻一些盘放到别的地方去,也花不了多少时间。

废话了很多,貌似没有涉及备份的具体技术问题,留着且听下回分解吧。

ps,其实硬盘挂掉不是按指数规律来的,Google 那篇论文也提到这点,前面那个计算其实是忽悠人的…… 不过 11 天这个结果的数量级还是正确的。

Tags:

4 Comments »

RSS feed for comments on this post.

  1. bai!!!!!!!!

    Comment by kisstar — September 5, 2007 1:49 am UTC #

  2. 我收藏了你这篇文章,一直没有看呢~~

    Comment by ppip — February 4, 2008 3:39 am UTC #

  3. 你最后也没有讲到如何备份的策略啊,哈哈。

    不过那个被烧到的楼也太可怜了,大型数据库应该是必然要考虑异地备份的……

    Comment by ppip — February 4, 2008 4:30 am UTC #

  4. 留给你讲,哈哈哈……

    Comment by atppp — February 4, 2008 10:14 am UTC #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.