云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

游戏服务器_微信文件存储路径_返现

小七 141 0

关于RAID-6恢复

RAID算法已经成为我特别着迷的东西,我最近读到一篇非常有趣的文章,描述了RAID重建的优化(由Xiang、Xu、Lui、Chang、Pan和Li撰写)。在为ZFS编写双奇偶校验和三重奇偶校验RAID算法之前,我花了相当多的时间来研究这个课题,并且从那以后一直很感兴趣。在描述重构优化之前,需要一些前导码。RAID算法可以分为两个部分:一维算法和多维算法(根据我自己的选择;我没有看到文献中讨论过这种区别)。一维RAID一维算法是使用单个RAID条带中的所有数据来计算所有parity。ZFS使用的RAID算法和大多数由Reed-Solomon编码派生的算法都属于这一类。对于给定的RAID条带的数据块集D,我们可以用一些函数p(D,n)来计算第n个奇偶校验块。例如,ZFS大致上使用以下公式    在这里,加法和乘法是在Galois域上定义的-解释的长度将远远超过它的兴趣或相关性,所以我将在这篇文章中省略它。值得注意的是,这种特殊的方法只适用于三个或更少的奇偶校验磁盘,但这也是一个完全不同的主题(尽管是一个有趣的主题)。在一维算法中重建丢失的块需要读取可用的数据,并执行一些计算;每个条带可以单独重建(因此,并行地)。多维RAID多维算法是多个逻辑RAID条带的一部分可能有助于奇偶校验计算。这方面的例子包括IBM的EVENODD和NetApp的稍微简化的行对角线奇偶校验(RDP)。这些最容易通过图表传达:偶数RDP公司对于EVENODD和RDP,计算第一个奇偶校验块只是对该RAID条带中的数据块进行异或运算。第二个奇偶校验块是通过一个简单的数据值异或来计算的。这两种技术都对RAID条带的宽度施加了限制。优化RAID重建以减少读取本文提出了一种基于RAID-6代码的故障磁盘恢复的混合方法:算法与性能评估,描述了多维RAID算法下的重构优化。关键之处在于,通过有效重叠的奇偶校验计算,聪明的重建算法可以使用更少的块,从而减少磁盘读取。如本文所述,通常当给定磁盘发生故障时,所有剩余的数据块和第一个奇偶校验磁盘的块都将用于重建:简单恢复然而,利用某些块可以被乘法使用的事实,可以读取更少的总块。在下面的重建中,带圆的块用于"行"重建,带正方形的块用于"对角线"重建优化的恢复注意,简单的方法需要读取36个块(没有从磁盘7读取),而本文描述的重建只需要读取27个块。这一点普遍适用:新的方法需要减少25%的块来执行相同的重建。文中还提出了一种磁盘读写平衡的方法。令人失望的结果不幸的是,针对较少的读取进行优化并不能显著提高整体恢复的性能。对于RDP来说,在最好的情况下,它的性能提高了大约12%,但通常接近7%。对于EVENODD,所有病例的改善都不到5%。为什么?天真的恢复算法将数据从正常的硬盘上流下来,执行一个简单的计算,并将良好的数据流到替换驱动器上。流媒体是硬盘的最佳选择–3.5英寸或2.5英寸、7200、10K或15K RPM;SATA、SAS或FC—它们都流得很好。可能会有一些I/O资源争用,但争用不是很严重,或者I/O模式中的"跳过"会中断正常的流式处理效率。flash的适用性然而,还有另一种介质,具有吞吐量和IOPS,可以在这种RAID重建方法非常有效的地方使用:闪存。使用ssd,可以看到吞吐量会使I/O系统的限制变得紧张;读取更少的数据可能是一个显著的改进,非连续的读取模式不会像使用hdd那样降低性能。对于所有闪存阵列来说,这种优化可能是同类产品中的一种;由于IOPS、计算和内存过剩,为慢速磁盘、慢速CPU和DRAM而设计的RAID算法可能需要废弃并重新考虑。