这些文章已经写了好几年了,可能已经过时了。在MSN space和QQzone几经辗转之后,我想也许这些技术文章还是放在搞技术的博客中更能帮助人。于是做了一个艰难的决定,把这些文章一篇篇搬过来!绝对是原创的。
最近一段时间又重新接触了RAID,这次是关于RAID5 Write Hole的问题。这里把我对这个问题的理解描述一下。
Write Hole是RAID5的一个重大缺陷,这个问题在我以前的日志中已经提到过,但是只是作为解释代码的引子,而没有强调它的重要性。要了解这个问题,首先要对RAID5的rcw和rmw有一定了解。我以前的文章(RAID-5(五)rmw与rcw )已经解释过这些动作。为了方便说明,假设有一个5个盘的RAID5(为什么是5个盘?因为rmw)。
我们知道在RAID5的一个IN_SYNC的stripe中,必须满足D1+D2+D3+D4+P=0,这样任何一个数据Dx才能由其他数据和P计算出来。但是在Power failure的情况下会使得D1+D2+D3+D4+P!=0。为什么呢?假设这样一种情况:我们要写D1',那么新的P