一种改进的RAID 后台初始化技术_第1页
一种改进的RAID 后台初始化技术_第2页
一种改进的RAID 后台初始化技术_第3页
一种改进的RAID 后台初始化技术_第4页
一种改进的RAID 后台初始化技术_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一种改进的RAID 后台初始化技术    摘 要: 新创建的RAID 系统必须要经过初始化才能使磁盘上的随机数据满足一定的校验关系,从而使RAID 系统具有数据恢复能力。本文分析了传统RAID 系统初始化方案的优缺点,提出了一种改进的后台初始化方案,试验证明该方案能够有效做到初始化与主机IO 读写的并行,并在初始化性能和主机IO 读写性能上较传统方案有较大的提高。关键词:RAID;磁盘阵列;后台初始化;数据一致性;校验初始化中图分类号:TP 文献标识码:A1引言RAID 是Redundant Array of Inexpensive Disk 的缩写意为

2、廉价冗余磁盘阵列。RAID 系统通过将数据拆分到多个磁盘,实现对多个磁盘的并行读写,大幅提高了数据读写性能。由于引入了条带化的数据冗余技术,RAID 系统还可以在一块或者多块磁盘损坏的情况下进行正常的读写,并且能够通过已有的数据重构出损坏磁盘上的数据。有效的提高了数据的安全性和可靠性。 以常见的RAID5 为例:RAID5 分条中的各个数据单元应满足关系式P=D1D2D3Dn 其中为异或运算,P 为校验单元,D1-n 为数据单元,我们将满足这个异或关系式称为满足数据一致性。当分条中某一个数据单元损坏后可以通过运算式Dn=PD1D2D3 重构出该数据单元的数据。由此可见只有数据一致性的RAID

3、系统才具有数据重构的能力。但是对于一个新创建的RAID 来说由于磁盘上数据的分布是随机的,这些数据并不满足数据一致性,无法提供数据重构等数据可靠性功能。所以RAID 系统在使用之前必须使各个磁盘上的数据满足数据一致性,这个过程称为RAID 系统的初始化。目前常用的初始化方式有写零初始化和校验初始化两种。写零初始化通过将整个分条写全0的方式来达到分条的数据一致性,校验初始式化通过对分条数据单元进行异或运算来的得到新的校验数据从而使分条满足数据一致性。然而这些初始化方法都无法做到初始化与主机IO 的并行,RAID 系统都必须等待初始化完成以后才能进行主机IO 的读写。由于初始化操作需要遍历所有分条

4、,需要消耗大量的时间。用户往往需要等待几个小时甚至几天的时间才能对新建立的RAID 系统进行读写。为了实现RAID 系统初始化和主机IO 读写能够并行进行,使得RAID 系统一旦建立便可以正常读写,业界提出了多种后台初始化方案。本文在综合分析这些方案的基础上提出了一个改进的后台初始化方案,较现有的方案在初始化性能和主机IO 性能上都有较大提高。2现有后台初始化方案的比较与分析现有的后台初始化方案大体可以分为基于写零方式的后台初始化方案和基于校验方式的后台初始化方案两种3。它们分别是在传统的写零初始化和校验初始化的基础上加入了支持主机IO 也初始化并行的机制演变而来。与传统的写零初始化和校验初始

5、化方案相比这些后台初始化方案能够解决初始化与主机IO 并行操作的问题,但是由于附加机制的引入使得在初始化性能和主机IO 性能上都有不同程度的损耗,此同时由于单一依赖于写零初始化或校验初始化使得这些方案不能很好的适应主机IO 与初始化并行时的不同的场景。-2-2.1 基于校验方式的后台初始化方案DeKoning,Humlicek 2等人提出了一种基于校验方式的后台初始化方案,该方案从第一个分条开始依次向后进行顺序的校验初始化。由于校验初始化具有不破坏已写入数据的优点,使得顺序初始化进程与主机IO 可以并行进行。对于主机IO 的处理,该方案提出在初始化过程中如果主机IO 写入的区域已经初始化则主机

6、IO 采用读改写(Read-Modify Write)的方式写入数据,其中读改写的写入方式为:1 读取校验数据2 读取分条中需要写入的那些数据单元的旧数据3 将校验数据,读出的旧数据 需要写入的新数据进行异或得到新的校验数据4 将需要写入的新数据和计算得到的新校验数据写入分条如果主机IO 需要写入的区域还未初始化则主机IO 采用重构写(Reconstruct Write)的方式写入数据,重构写的方式具体如下:1 读取分条中需要写入的数据以外的旧数据2 将需要写入的新数据,读出的旧数据进行异或得到新的校验数据3 写入新数据4 写入新的校验数据ND3 ND2 D1 NP异或运算ND:需要写入的新数

7、据 NP:计算的校验数据分条图2 重构写操作示意Fig2 Reconstruct Write diagram图1 RAID5 分条结构图Fig1 RAID5 stripe structure-3-当IO 写入的区域正在初始化则等待该区域初始化完成后主机IO 数据按读改写方式写入。该方案虽然实现了主机IO 与RAID 初始化操作的并行,但由于校验初始化需要读出分条中的数据单元进行异或计算校验数据,使得顺序初始化效率非常低。2.2 基于写零方式的后台初始化方案Hung Ching Hai1等人提出了一种基于写零方式的后台初始化方案。由于写零初始化可能破坏主机IO 已经写入的数据,该方案引入了初始化

8、分区表的概念,将整个RAID 空间分成若干个大小相等的分区,每个分区用分区表中的一项表示,初始化开始前分区表中每个分区为未初始化状态。该方案对各个分区依次进行顺序的写零初始化,每个分区初始化完成后需要更新分区表中对应项的状态为已初始化。顺序初始化进程在初始化每个分区前需要查询该分区对应的分区表项状态是否为已初始化,如果已经初始化则顺序初始化跳过该分区进行下一个分区的初始化。对于主机IO 在写入某个分区前也需要在初始化分区表中查询该分区是否已经初始化,如果该分区已经初始化则直接写入数据,如果没有初始化则首先采用写零的方式初始化该分区并更新分区表,然后再写入IO 数据。写零与校验初始化性能比较05

9、01001502002501 2 3 41 单盘顺序写 2 写零初始化 3 校验初始化MB/S图3 写零和校验初始化性能比较Fig3 Performance Comparison of two kinds of initialization对比以上两种方案,Hung Ching Hai 等人的方案由于采用了写零初始化,对于只有顺序初始化而主机IO 没有读写到的那些区域,初始化性能要明显高于DeKoning 等人的校验初始化方案。但对于主机IO 读写的区域,Hung Ching Hai 等人的方案必须先将这些区域写全零然后主机IO 才能采用写入数据,使得主机IO 的延时大大增加,严重降低了初始化

10、过程中主机IO 的性能。3一种改进的后台初始化方案3.1 基于写零方式的后台初始化方案综合现有后台初始化方案的优点并分析他们的不足,本文提出了一种改进的后台初始化方案。为了在RAID 创建后主机IO 可以立刻对该RAID 系统进行读写,本方案将RAID 初始化分为后台顺序初始化和主机IO 触发的初始化。将整个RAID 组空间以分条为初始化的最小分区,创建一张初始化位图Bitmap 与之对应。初始化位图的每一个Bit 对应一个分条,该Bit 为0 表示该分条还未被初始化,若为1 则表示该分条已经被初始化。顺序初始化进程从第一个分条开始依次初始化所有分条,顺序初始化采用性能最高的写零的方式进行初始

11、化,每初始化一个分条后顺序初始化进程将初始化位图中对应的Bit 置为1。由于顺序初始化进程采用分条写全零的方式进行初始化当与主机IO 并行时可能将已经写入主机IO 数据的分条写零,为了避免该情况的发生,顺序初始化进程在初始化每个分条前必须先查询初始-4-化位图中的对应Bit,用以判断该分条是否已经格式化,如果该Bit 为1 则跳过该分条继续下一个分条的初始化,如果该Bit 为0 则初始化该分条然后更新Bit 位为1。对于主机IO 触发的初始化,为了尽量减小初始化对主机IO 的影响,本方案采用校验初始化的方式初始化主机IO 需要写入的分条。主机IO 数据以重构写的方式写入分条,可以同时完成分条的

12、初始化和IO 数据的写入,可以最大限度的降低初始化对主机IO 写入的时延。当数据写入后更新初始化位图中对应的Bit 位为1 表示该分条已经初始化并写入数据,如果主机IO 所写入的分条已经初始化则直接写入主机数据。顺序初始化位图Bit=0分条写全零跳到下一个分条否是最后一个分条?END否设置位图相应Bit=1是图 4 顺序初始化进程流程示意Fig4 Flowchart of Sequential Initialization process-5-本方案中由于顺序初始化不承载主机IO 数据,所以直接采用速度和效率最快的写零初始化的方式将分条写入全零数据而无需读出原有数据并计算校验位,可以最大限度的

13、利用磁盘带宽,是目前最快的初始化方式。但对于主机IO 触发的初始化由于整个初始化过程最后需要写入主机IO 数据,如果依然采用写零发的初始化方式则主机IO 在写入前需要调用写零初始化将分条写零,然后才能以读改写的方式写入主机IO 数据,大大增加了主机IO 的时延。然而主机IO 初始化直接采用重构写的方式写入数据可以同时做到初始化分条和数据写入的目的,主机IO 初始化采用重构写的方式初始化比写零的初始化方式效率更高,能有效的降低主机IO 的时延。与此同时采用初始化位图的方式记录已经初始化和未初始化的分条,有效地避免了写零初始化对主机IO 写入数据的破坏。本方案综合了写零初始化和校验初始化在不同场景

14、下的优点,弥补了单一使用一种初始化方式带来的不足,兼顾了顺序初始化和主机IO 的性能。3.2 初始化位图的置换算法本方案使用了精细到分条粒度的初始化位图,是为了能够支持主机IO 初始化时进行分条的重构写操作同时可以避免对分条进行操作时顺序写零初始化破坏主机IO 写入的数据。只有这样才能够将写零和校验两种初始化类型结合到一起,由此可以看出位图有着至关重要        的作用。与采用较大的初始化分区相比精细到分条的分区使得位图的大小有所增加。考虑到在初始化过程中一定时间段内可能只有一小部分空间被初始化,而内存中只需要

15、存放这部分空间对应的初始化位图即可,其余位图可以存放在磁盘中等到需要查询和设置时再读入内存。 由此我们借鉴了LRU 页面置换算法来管理我们的位图空间。首先我们将整张位图以4K 页面的形式存放在RAID 组成员磁盘的保留区域,在内存中我同样以4K 页面的形式来管理位图,系统开始时先从磁盘中读出一部分位图4K 页面到内存,在内存中维护一个位图4K 页面表,记录着每个4K 页面的内存地址,磁盘位置,以及未命中次数的计数值,该计数值用来记录该4K 页面未被命中的次数。每当一个位图4K 页面被初始化进程查询或设置一次,该页面的对应计数值清0。其余所有未被访问的4K 页面的计数值增加1,当顺序初主机IO位

16、图Bit=0直接写入IO数主机IO大写据否是读or写直接读取END读写更新位图对应Bit=1图5 主机IO 触发的初始化进程流程示意Fig5 Flowchart of IO Initialization process-6-始化或主机IO 初始化需要访问的位图不在内存中时,从磁盘中读出需要访问的那个位图4K页到内存中,并将未命中计数值最大的那一个页面写入磁盘对应位置,将其换出内存。使用该算法能够有效的减少位图对内存的开销。4实验及结果分析我们以4 盘的RAID5 为基准,对本文提出的方案进行测试,并与DeKoning 等人的传统校验后台初始化方案和Hung Ching Hai 等人的传统写零后

17、台初始化方案在顺序初始化性能和初始化过程中的主机IO 性能上进行比较。顺序初始化性能比较0501001502001 2 3 41 传统校验方式 2 传统写零方式 3 本方案MB/S图 6 顺序初始化性能比较Fig6 Performance Comparison of three kinds of Sequential initialization由图6 可以看到对于顺序格式化,传统的后台写零初始化性能最高,达到了150MB/S而传统的校验格式化性能最低只有80MB/S 左右,由于本方案的顺序初始化部分采用了写零方式,使得顺序初始化性能与传统的写零初始化基本相当,达到了145MB/S。与传统写零

18、方式差距分析主要可能是由于位图读写以及位图的置换算法带来的性能损耗。满分条顺序写主机IO性能比较050100150200250512 128 64 32 16分条深度 单位KBMB/S本方案传统写零后台初始化传统校验后台初始化图 7 主机IO 性能比较Fig7 Performance Comparison of three kinds of IO initialization初始化过程中的主机IO 性能是衡量后台初始化方案好坏的一个重要指标,本文对不同分条深度的LUN 进行主机顺序写操作,得到如图7 的性能统计结果。可以看到由于传统的写零后台初始化在初始化过程中主机IO 需要进行分条写全零再写

19、分条数据,相当于进行了两次写操作其主机IO 性能最差,而传统的校验后台初始化的主机IO 性能最高,几乎与正-7-常情况下的主机IO 性能相当。本方案对于主机IO 触发的初始化采用与而传统的校验后台初始化相同的重构写方式,使得本方案初始化过程中的主机IO 性能几乎和校验初始化相当,相比于写零初始化有很大的提高。5结论传统的后台初始化方案由于自身初始化方式的局限,无法做到初始化和主机IO 性能的兼备。与这些传统的后台初始化方案相比本文提出的改进方案吸取了传统的写零初始化和校验初始化的优点,能够很好的兼顾初始化性能和主机IO 性能,相对于传统方案有较大的性能提升。参考文献1 Hung Ching h

20、ai . Raid consistency initialization method P .United States Patent Application,20050076260,April 7, 2005 .2 Rodney A DeKoning, Donald R Humlicek, Robin Huber .Method for logical unit creation with immediateavailability in a raid storage environment P . United States Patent 6467023 Oct 15, 2002.3 谭志虎,谢长生,万继光. RAID 一致性初始化方法研究A. 小型 微型计算机系统, 2008,29(7):1204-12074 张静. RAID 技术工作原理分析及实现J. 科技信息, 2008,(32):33

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论