论文部分内容阅读
随着互联网的快速发展,当前每天都将产生海量的数据。为了存储这些数据,独立磁盘冗余阵列(RAID)利用多个磁盘提升系统容量和读写性能。在大规模RAID系统中,由于磁盘数较多,磁盘故障是一种常态。因此,RAID系统通常会额外保存冗余数据,以保证数据可靠性。当发生磁盘故障时,需要将坏盘修复,以维持数据可用性。并且,修复过程应该尽可能更快,因为如果修复时间过长,将长时间影响用户访问,并且在修复期间,若更多的磁盘发生故障,有可能造成数据的永久丢失。然而,磁盘容量发展迅速,磁盘读写性能却发展缓慢,传统RAID系统要修复单个TB级容量的磁盘将耗费大量时间。为了极大地加快存储系统单盘修复速度,本文提出了一种新的RAID结构,叫做OI-RAID,它的本质是一种分组编码技术。OI-RAID是一种分层结构,包含了两层编码,即外层编码和内层编码。外层编码基于平衡不完全区组设计(BIBD)和一种偏移轮转策略,能利用大量磁盘的带宽并行修复单个坏盘:内层编码基于每条对角线,部署在每个磁盘组中。本文通过具体示例介绍了OI-RAID的构建方法。我们在两层编码都部署了RAID5码,通过实验验证并分析了OI-RAID的各方面性能。结果表明,OI-RAID能利用不超过350个磁盘,使加速比达到60,因此能在短时间内修复TB级容量的磁盘;OI-RAID在单盘修复过程中的数据读取总量远低于相同容错能力的MDS纠删码,节省了网络带宽和磁盘读写开销;OI-RAID能利用接近于理论最少的磁盘数获取极高的单盘修复性能,保持了较低的磁盘开销;OI-RAID的存储开销较低,介于0.2到0.6之间;OI-RAID的更新开销已达到最优。在实际的应用场景中,为了降低分组编码技术对存储系统磁盘数的限制,我们分别基于Steiner三连系和完全图构建了OI-RAID,并提出了两种虚拟磁盘技术。这些方法都额外耗费了更多的磁盘开销,以换取OI-RAID构建的灵活性,为OI-RAID的参数提供了更多选择。为了进一步提高OI-RAID的数据可靠性,我们在OI-RAID的两层编码中分别部署了容多错的MDS纠删码,其中,若两层编码都部署容3错的MDS纠删码,整个OI-RAID系统可容任意15个磁盘故障,极大地提高了数据可靠性。最后,我们还讨论了OI-RAID这种分组编码技术在数据中心中的应用,并提出了一种混合修复算法,降低了单盘修复的网络开销。