纵向校验,分块
Gibson说,为了将性能下降的影响降到最低,某些RAID系统大幅调低了从磁盘故障中恢复的速度,这样就大幅增加了出现数据丢失的概率。
解决这个问题的其中一个解决方案早在上个世纪九十年代就被提出了,那就是校验分块。
Gibson解释说,它将RAID从一个控制器和一些磁盘的局部运算变成了利用所有控制器和磁盘的并行算法。
利用数十个到数百个独立磁盘阵列组成的资源池,校验分块方案可以将恢复的速度加快数十倍到数百倍。而且,它将每个磁盘的工作划分得如此之细以至于同步工作中的用户几乎不会感觉到他们的工作受到了恢复操作的干扰。
校验分块方案在RAID控制器产品中是非常少见的,但是Panasas的并行文件系统却提供了这种方案。有趣的是,谷歌文件系统中也使用了这种方案。
但是磁盘容量增长还存在另一个问题,那就是不可读取的扇区。所有的磁盘都是按照技术规范来生产的。 其中一项技术规范规定,不可读取的扇区不应经常出现,通常每读取10到100TB的数据出现不可读取扇区的个数不应该超过1个。然而,随着磁盘容量变得越来越大,恢复过程中需要读取的扇区越来越多,至少出现一次不可读取扇区的概率也就更大了。
Gibson说:"在普通阵列中,如果在磁盘恢复过程中有太多的扇区丢失,那么恢复就会失败,整个卷就会离线并可能会丢失。"
其中一种可行的解决方案是让冗余编码变得更强,以及更加对症。
例如,RAID 6可以处理同时出现的两个磁盘故障或者一个磁盘故障与一个不可读取磁盘扇区故障。同时出现两个磁盘故障的话,几乎肯定会出现不可读取磁盘扇区的故障。
解决这种磁盘故障的其中一种方案是在每个磁盘上增加一个编码层,这样不可读取扇区就可以在本地得到恢复,而不用使用RAID系统。
Gibson说,Panasas将这种方案称作纵向校验。利用纵向校验方案可以让RAID 5恢复一个出现故障的磁盘,哪怕同时出现不可读取扇区也可以进行恢复;纵向校验方案可以让RAID 6恢复两个出现故障的磁盘。
今后的磁盘容量将增长得更大,系统容量也将变得更大,将更加强调故障恢复的重要性。但是RAID完全可以应付这些问题。 RAID技术的未来在于针对具体故障实例更小心地编些代码,实现丢失数据重建过程中的并行和负载均衡。