欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于多模块的RAID的设计与实现

时间:2015-08-28  作者:刘贝 胡鸣

【摘要】本文在多模块结构性能评估模型的基础上,设计了一个RAID的I/O请求处理性能的模拟测试软件,随机产生一组I/O请求,通过计算各级RAID的数据传输率,测试出其性能的高低。
论文关键词:RAID,多模块结构,模拟,数据传输率

磁盘阵列将多个磁盘进行组合,通过I/O并行性和数据冗余机制,提供高性能、高可靠度的数据存取服务,已成为构建大规模存储系统的基本组成部分。对阵列性能的评估,若是直接通过对硬盘性能的测试来评估的话,所耗费的时间和工作量是很大的。如果采用一个通用、可配置的评估测试模型,可以评价所有的磁盘阵列,那么就有利于设计和配置更适合给定存储应用类型的磁盘阵列。

本文给出一个基于多模块结构模型的磁盘阵列的设计与实现,支持RAID0、RAID1、RAID3、RAID5和RAID10等主流RAID技术[1]。首先,给出RAID多模块结构模型的模块划分、功能分配;然后,将各级RAID所涉及的内容进行具体分析;最后,采用MFC编程实现,并将各级RAID的I/O性能测试结果对比分析。

1磁盘阵列级别和多模块结构

RAID是有美国加州大学伯克利分校的D.A. Patterson教授1988年提出的,通过多个磁盘,多个独立的I/O请求可以并行地进行处理,只要他们所需的数据驻留在不同的磁盘中,这样可以提高系统的性能,通过增加冗余度来提高信息可靠性[2]。本文所涉及的RAID如下:

(1) RAID 0 :RAID 0是由一块以上的硬盘组成,每块硬盘被等分成容量相同的条带集,数据也被分割成条带,在同一时间内向多块磁盘写入。

(2) RAID 1 :RAID 1又被称为磁盘镜像,由两个以上偶数个硬盘组成,每一个磁盘都具有一个对应的镜像盘,对写入任何一个磁盘的数据都会被复制镜像盘中,同时系统可以从这一组镜像盘中的任何一个磁盘读取数据。

(3) RAID 3 :RAID3至少由三块以上硬盘组成,以其中一块特定的硬盘来存放数据的奇偶校验位(由真实数据通过一定的算法得出),真实数据则分段存储于其余硬盘中。

(4) RAID 5 :RAID5是在RAID 3的基础上进行了一些改进,同样也是由三块以上的硬盘组成,也是以数据的校验位来保证数据的安全,但它不是以特定硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。

(5) RAID 10 :RAID10也被称为镜象阵列条带由至少四块硬盘组成,像RAID0一样,数据被分割成条带,在同一时间内向多块磁盘写入;像RAID1一样,每个磁盘都有一个镜象磁盘。其目的是在保证数据安全的情况下,提高数据的读写性能。

同时,经过许多存储技术的分析,我们可以给出一个通用的、可配置、多模块结构模型。从存储结构的角度我们引出以下几个基本模块:主机模块H、阵列控制器模块C、带宽模块B、控制模块C'、磁盘模块D、转换模块T、无关模块X[3]。

/:用来表示模块的合并作用。例如,H/C'表示网络磁盘阵列中的客户主机兼有阵列控制器的部分功能。

2设计分析

该设计模拟实现了磁盘阵列的I/O请求性能测试。支持RAID0、RAID1、RAID3、RAID5、RAID10,涉及的模块有主机模块H、磁盘模块D以及控制模块C。主机模块H的主要功能是I/O请求生成;控制模块C的主要功能是集中了阵列技术的控制功能,涉及数据布局的冗余信息处理操作、逻辑磁盘请求的分解与合并;磁盘模块D的主要功能是磁盘调度和处理时间计算。而对于带宽模块B、控制模块C'、转换模块T、无关模块X的影响,这里未考虑。

首先,会根据用户输入的请求个数和请求类型,随机生成一组请求,这组请求的逻辑地址和请求大小都是随机产生。然后,根据用户输入的磁盘个数、阵列级别以及条状块大小,进行冗余信息处理并把请求分配到磁盘上,即地址映射。接下来,就是请求在磁盘上的调度,在此次设计中选择的是扫描算法SCAN。最后,就是根据用户选择的磁盘转速,由时间计算函数计算出磁盘阵列处理这组请求分别所用的总时间和该组请求的总数据大小,从而得出传输效率,到达模拟仿真的目标。该设计的核心部分就是控制模块C,集中了阵列技术的控制功能,数据布局的冗余信息处理操作、逻辑磁盘请求的分解与合并。

数据传输率

图1 RAID物理数据布局

由图1可知各级RAID技术的物理数据布局,下面,将对各级RAID进行分析;

RAID0:不同磁盘的相同偏移处的块组合成stripe,以stripe为单位,数据分成多块同时写入多个磁盘。优点是,并发写,并发读,威力巨大;缺点是,一损俱损,无备份。处理时间最长的那个磁盘所对应的时间为请求的处理时间。编程实现时,只需将逻辑请求分解或合并,只计算起始盘的时间,其它盘不考虑[4]。

RAID1:一个工作盘,其余的作为备份盘,仅增加读并发性。总体性能取决于所有盘中性能最差的。编程实现时,写请求处理时间取第一个磁盘的处理时间;读请求处理时间,每个盘的请求数取该组读请求的1/ndisk个,再计算第一个盘的处理时间。

RAID3:数据盘的每个对应位之间做异或运算,将结果写入校验盘的对应位置。连续读写时,为单盘的(ndisk-1)倍;随机读写时,无性能提升。不能并发。编程实现时,异或运算时间忽略不计,只计算起始盘的计算时间。

RAID5:将校验盘分为ndisk份,均分于各个磁盘中,实现了并发I/O。但写性能极差,写惩罚,新数据的校验数据=(老数据EOR新数据)EOR老校验数据。编程实现时,当为读请求时,只计算起始盘的时间;当为写请求时,要将读老数据时间计算在内[5]。

RAID 10 :在保证数据安全的情况下,提高数据的读写性能。将请求分为ndisk/2份,计算起始盘的处理时间。

3测试分析

按照上述设计思路,在VC++的环境下实现性能测试的模拟,运用MFC对建立好的模拟模块具体实现。测试了各级RAID的I/O请求的性能,为了使测试结果的可信性强,不但在对磁盘配置相应的性能参数要符合实际,磁盘调度算法也都选择了扫描算法SCAN。这样测试结果才有可比性,才能对磁盘阵列性能近一步的分析和了解。

一个盘面的磁道数设定为1964个,一个扇区的大小为512B,一个磁道的扇区数为72个。需要用户输入的参数:磁盘转速(设为5400rpm)、磁盘个数(设为4个)、阵列级别、条状大小、请求类型以及请求个数。这里,主要测试在指定相同参数的情况下,各级RAID的读写性能。

图2 各级RAID的读写性能测试

由图2可知,当条状块大小在比较小的范围内时,RAID 0的读写性能相对较高;但条状块过大,反而使RAID 0的性能降低。RAID3、RAID5和RAID10的读写性能相当,同时,因为RAID5的写惩罚,RAID5的读性能比其写性能好。RAID1的写性能最差,相当于单磁盘的性能;RAID1的读性能很好,是所有RAID级别中最好的。

4结论

这个设计只是关于I/O请求处理性能的测试,对冗余性、磁盘利用率、带宽和价格等因素并未考虑。

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于决策树的毕业生课程优化算法设计
下一篇论文:基于最大匹配的中文分词改进算法研究
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文