你知道RAID的初始化进程吗

你知道RAID的初始化进程吗?

RAID系统是用来对存储数据进行数据保护的有效手段。在RAID创建进程中常常会存在一个时间极长的系统初始化进程,为何RAID初始化进程中会存在这样的一个操作呢?这个操作对SSD会致使甚么方面的影响呢?存储老吴从技术研发的角度和大家一起对RAID初始化进程进行分析、研究。

传统RAID的基本组织结构如下图所示:

所有加入RAIDGroup的盘会依照LBA地址切分成一系列的切片,这些切片被称之为StripeUnit,不同盘中相同LBA地址所对应的StripeUnit会组织成一个条带(Stripe)。在一个条带中对所有数据进行编码,例如RAID6生成两个编码数据块P和Q,可以允许两个数据盘同时破坏。

所以,在RAID系统中,所有条带中的数据都需要满足编解码算法规则,即条带中的所有数据可以依照一定规则生成编码数据,并且该编码数据和条带中存储的编码数据相同。这种情况被称之为该条带中的数据是一致的。当一个磁盘产生故障时,可以通过存储在条带中的编码数据恢复丢失的数据块。

如果一个条带中的数据不一致,即条带中的数据计算得到的编码结果和存储的编码数据不相同,那末一旦一个磁盘产生故障,那末通过存储在条带中的编码数据将没法正确恢复丢失的数据块。所以,一个数据不一致的条带将会在故障产生时致使数据正确性问题。

在创建一个RAID系统时,RAIDGroup中的磁盘可能是新盘,也可能是一块已被使用过的数据盘,这些盘上的数据不会全是零。在这种情况下,采取这些盘构建的数据条带一定不能满足数据一致性的需求。即每一个条带中的数据依照一定规则计算得到的编码数据和条带中的编码数据是不符合的。这类数据不一致的条带将会对RAID数据正确性问题引入极大的风险。

正由于这个白癜风治疗缘由,在创建一个RAID的时候需要斟酌将系统中所有的条带进行初始化,以此来保证条带中数据的一致性。条带初始化通常可以采取两种方式来解决:

1,通过全盘写零的方式初始化RAID系统中的所有的条带。数据全零的条带,其校验数据也为零。因此,全零数据可以保证条带的一致性。

2,将所有条带进行校验计算,更新条带中的校验数据,以此到达条带数据的一致性。

当一个RAID系统被初始化完成后,所有条带中的数据将会变得一致,如下图所示:

RAID系统初始化进程是一个非常漫长的进程,其主要原因是需要对系统中所有白癜风治疗费用条带进行初始化。还需要斟酌和前端用户IO之间的性能平衡,所以,RAID系统初始化常常是一个后台履行的一个进程,会延续较长时间,并且对前端运用的性能造成影响。

对SSD而言,RAID系统初始化进程还会引入其他问题。在系统初始化进程中,无论是采取写零还是校验数据更新的方式,都需要向SSD盘写入数据,这个进程会致使无谓的数据写放大。用户数据还没有被写入的时候,通过初始化的方式就已在SSD内部建立了数据映照表。对SSD而言下降了使用寿命和性能。因此,一个针对SSD的RAID系统需要斟酌对系统初始化进程的优化,传统RAID是不会考虑到SSD这个特殊特性的。所以,传统RAID不能直接在SSD上进行部署,会对SSD本身的寿命和性能造成影响。

RAID系统采取数据条带化的方式对数据进行保护,但是在条带化数据保护的进程一样引入了一系列问题,系统初始化就是一个典型的条带一致性问题。一个优秀的RAID数据保护系统在设计的进程中都会解决掉这个问题,例如EMC的DataDomainRAID就不存在系统初始化进程,固然其需要和文件系统进行配合,并且在RAID条带数据散布上做了很多的优化。

如何在Linux上构建RAID10阵列Linux//m

Debian软RAID安装笔记-使用mdadm安装RAID1Linux//m

经常使用RAID技术介绍和示例演示(多图)Linux//m

Linux实现最经常使用的磁盘阵列--RAID5Linux//m

RAID0 1和RAID5的性能测试结果Linux//m

Linux入门教程:磁盘阵列(RAID)Linux//m

本文永久更新链接地址:Linux//m

0顶一下



转载请注明:http://www.jingdezhenzx.com/jdzzx/384.html

网站简介| 发布优势| 服务条款| 隐私保护| 广告合作| 网站地图| 版权申明

当前时间: