磁盘阵列系统的数据写入方法及磁盘阵列系统的制作方法

文档序号:6484345阅读:231来源:国知局
专利名称:磁盘阵列系统的数据写入方法及磁盘阵列系统的制作方法
技术领域
本发明涉及磁盘阵列技术领域,特别涉及磁盘阵列系统的数据写入方法。
背景技术
独立磁盘冗余阵列(Redundant Array of Independent Disks ),简称为"磁 盘阵列"。图l为磁盘阵列系统原理图,如图1所示,在上层应用系统和多 块磁盘之间增加了 一个RAID层,RAID层通过RAID控制器将多块磁盘组 成 一 个RAID阵列,对外提供存储空间、管理存储资源的工作都由RAID控 制器来完成。上层应用系统并不需要关心具体的物理磁盘,只需要根据RAID 层提供的地址空间发出操作请求即可,对物理存储资源的管理完全由RAID 层来完成。
RAID技术已广泛应用于数据存储的各种场合,其中常用的基本阵列类 型包括RAID0、 RAID1、 RAID3、 RAID5等,其中RAID5最为常用。RAID5 是一种由多块磁盘(不少于3块)组成的磁盘阵列,它以条带的方式向阵列 中的磁盘写数据,每个磁盘上都存放有其它磁盘的奇偶校验数据。这样,任 何一个磁盘损坏,都可以根据其它磁盘上的奇偶校验数据来重建损坏的数 据。
RAID系统在为上层应用系统提供服务之前,首先需要对它包含的物理 磁盘进行划分地址等一 系列工作,以最常用的RAID5系统来说,首先对物 理石兹盘分配地址、划分条带,地址的分配最小的粒度是分块(Strip),也称 为条带深度。图2为典型的条带方式磁盘阵列地址分配示意图,如图2所示, RAID系统对》兹盘1、 f兹盘2、 一磁盘3划分地址,以分块(strip)为单位,三分块磁盘中同一位置的分块组成一个条带(Stripe),每个分块上标记的阿 拉伯数字就是RAID系统为其分配的地址,称为阵列内地址,上层应用系统 根据RAID层提供的阵列内地址进行相应的数据读写请求。
RAID系统为了提高数据读写速度, 一般会在系统内设置緩存,其逻辑 位置位于RAID控制器与物理磁盘之间,RAID控制器接收到上层应用系统 的写入请求后,先将需写入的数据存放在緩存中,再把数据从緩存中刷入磁 盘。其中,上层应用系统发送的写入请求可以分为两种,即随机写和顺序写。
图3为顺序写情况下现有RAID系统的数据写入方法示意图,如图3所 示,緩存中保存有上层应用系统发出的需写入的数据A、 B、 C、 D、 E、 F, 这些数据所请求的地址空间是按照写入请求的先后顺序连续分布的,此时 RAID控制器将会按照緩存中保存的数据的顺序把这些数据连续的写入一个 连续的阵列内地址空间,即条带l、 2、 3中,这种写入方式就叫做顺序写。 其中,Pl、 P2、 P3为奇偶校验数据,是由同一条带中其它两个分块中的数 据通过异或运算(XOR)计算得出的,即P1是数据A、 B的校验数据,P2 是数据C、 D的校验数据,P3是数据E、 F的校验数据。如果是4块磁盘组 成的RAID5,那么将有3块磁盘用于保存实际数据,另一块磁盘用于保存其 它三块磁盘的校验数据,但在每个条带中,具体那一块磁盘用于保存校验数 据是随机的,更多磁盘的情况下依次类推,不再赘述。
图4为随机写情况下现有RAID系统的数据写入方法示意图,如图4所 示,緩存中保存的数据和每一个数据所请求的地址空间与图3中相同,但写 入请求的先后顺序不同,是随机的,图4中,这些数据是按照 A->E->C->B->F->D的顺序被请求和緩存的,那么此时緩存中的数据A、 B、 C、 D、 E、 F被写入磁盘时,也是按照A->E->C->B->F->D的地址顺序写入, 而不是连续的写入,这种写入方式就叫做随机写。
在现有的RAID5系统中,随机写比顺序写的性能差很多,除了因为物 理磁盘的随机寻道时间 一般较长外,更重要的原因是随机写比顺序写实际要 增加很多操作。在顺序写时,緩存可以緩存一整个条带的数据之后再全部写入磁盘,此时只需要2个写和1个异或运算的操作就可以完成一个条带的顺 序写。而在随机写情况下,将存在大量的小写(写一个分块或少量的分块,
写的分块数量少于阵列内》兹盘数量-l,如果》兹盘阵列由3块;兹盘组成,那么 写的分块少于2时,将采用小写算法写入),每写入一个分块,需要先读出 被写分块所属条带上,另两个分块上的原有数据和原校验数据,再把新数据 与这两个数据分别做校验,再写入新数据和新校验数据,总共需要2个读、 2个写、2个异或运算,相比顺序写,要多出两个读操作和1个异或运算, 写入效率将大大降低。
虽然现有的緩存技术可以优化写入时的数据组织方式,对緩存的写入请 求进行排序,尽量将一些地址空间相关联的数据放在一起写入磁盘,但是緩 存空间一般比较小,无法緩存足够多的随机写数据,在随机写请求较多的应 用场景下,例如数据库、邮件系统等,緩存的排序功能几乎起不到作用,甚 至还会起到反作用。另外,也不是所有磁盘阵列系统都会配置緩存,因此现 有磁盘阵列系统的随机写性能都比较低。

发明内容
本发明实施例提供一种磁盘阵列系统的数据写入方法,能够提高RAID 系统的随机写性能。
本发明实施例提供一种磁盘阵列系统,能够提高RAID系统的随机写性
台匕 s匕。
为达到上述目的,本发明的技术方案具体是这样实现的 一种磁盘阵列系统的数据写入方法,该方法包括
预先建立用于保存虚拟地址与阵列内地址的对应关系的地址映射表;所 述虚拟地址提供给上层应用系统进行^t喿作请求,阵列内地址对应》兹盘阵列内 的实际物理地址空间;
接收到操作请求时,若操作请求为初次写入请求,则将该初次写入请求 所请求的虚拟地址转换为阵列内地址,并将所述虛拟地址与其转换后的阵列内地址的对应关系填入所述地址映射表中;在地址映射表中转换后的阵列内 地址根据接收初次写入请求的顺序呈连续排列;
按照地址映射表中所述连续排列的阵列内地址,将初次写入请求对应的 数据写入磁盘。
一种磁盘阵列系统,包括RAID控制器和磁盘,该系统还包括地址映射 模块;
所述地址映射模块,连接于RAID控制器和磁盘之间,用于预先建立用 于保存虚拟地址与阵列内地址的对应关系的地址映射表;所述虚拟地址提供 给上层应用系统进行操作请求,阵列内地址对应磁盘阵列内的实际物理地址 空间;
在RAID控制器接收到操作请求时,若操作请求为初次写入请求,则所 述地址映射模块将该初次写入请求所请求的虛拟地址转换为连续的阵列内 地址,并将转换后的虚拟地址与阵列内地址的对应关系填入所述地址映射表 中;转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列;
所述RAID控制器,用于按照地址映射表中所述连续排列的阵列内地 址,将所述初次写入请求对应的数据写入所述磁盘中。
由上述的技术方案可见,本发明的这种磁盘阵列系统的数据写入方法, 通过预先建立用于保存虛拟地址与阵列内地址的对应关系的地址映射表;所 述虛拟地址提供给上层应用系统进行请求,阵列内地址对应磁盘阵列内的实 际物理地址空间;接收到操作请求时,若操作请求为初次写入请求,则将多 个不连续的写入请求所请求的虛拟地址按照写入请求的先后顺序转换为连 续的阵列内地址,并将转换后的虚拟地址与阵列内地址的对应关系填入所述 地址映射表中;按照所述阵列内地址,将所述写入请求对应的数据写入磁盘 中,从而将随机写请求转换为顺序写操作,提高了磁盘阵列系统的随机写性 能。


图1为》兹盘阵列系统原理图2为典型的条带方式磁盘阵列地址分配示意图3为顺序写情况下现有RAID系统的数据写入方法示意图4为随机写情况下现有RAID系统的数据写入方法示意图5为本发明实施例的磁盘阵列系统数据写入方法示意图6为本发明实施例的磁盘阵列系统数据写入方法总体流程图7为本发明较佳实施例的磁盘阵列系统数据写入方法流程图8为本发明实施例的磁盘阵列系统结构示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明进一步详细说明。
本发明主要是在RAID系统中添加一张动态的地址映射表,表项的内容 为RAID阵列中分配的实际的阵列内地址与提供给上层应用系统的虚拟地址 的对应关系;通过将上层应用系统下发的随机写请求中的虚拟地址转换为顺 序的阵列内地址,将随机写操作转换为了顺序写,从而提高了RAID系统的 随机写性能。
是提供一个虚拟地址,对于上层应用系统来说,虛拟地址和阵列内地址是相 同的,其发出的操作请求与现有技术相同,只不过对于RAID系统来说,上 层应用系统请求的虚拟地址需要与实际的阵列内地址进行对应后才能进行 操作。本发明中,RAID系统在接收到上层应用系统下发的基于虛拟地址的 操作请求时,若操作请求为初次写入请求(对还没有写入数据的分块进行的 写操作请求),则将该初次写入请求所请求的虚拟地址转换为阵列内地址, 并将转换后的虚拟地址与阵列内地址的对应关系填入所述地址映射表中;其
中多个转换后的阵列内地址将根据接收初次写入请求的顺序呈连续排列,即不论初次写请求中请求的虚拟地址是否是连续的,都会按照操作请求的顺 序,将虛拟地址转换为连续排列的阵列内地址,并记录在地址映射表中,之 后按照地址映射表中记录的所述阵列内地址,将初次写入请求对应的数据写 入磁盘中。不管初次写请求是不是随机写,由于在实际对磁盘进行初次写入 时,都是顺序写入的,因此可以提高随机写性能。
上述地址映射表可以存放在RAID控制器中,地址的粒度可以以strip 为单位(这是RAID5系统划分地址的基本单位,如果是其他RIAD系统, 可以根据具体的地址划分单位确定),地址映射表的具体格式任意,例如表 1所示,其中虚拟地址区域的编号固定,依次递增,而阵列内地址区域初始 为空白,待每个写操作请求虚拟地址时,再依次填入具体对应的阵列内地址。
虚拟地址阵列内;也址
123
23
356
47
515...-,'
表一,地址映射表
图5为本发明实施例的磁盘阵列系统数据写入方法示意图,如图5所示, 虛线框中的小方块是上层应用系统发送的写入请求,小方块上的数字表示请 求的虚拟地址,写入请求的顺序是地址块3->地址块6->地址块71->地址块 11->地址块18->地址块23,是随#几写入请求,写入请求发出的先后顺序以 圓圈中的数字表示;写入请求的虛拟地址先经过地址映射表转换为实际的连 续的阵列内地址,即4巴原来虛拟的地址块3 ->地址块6->地址块71 ->地址块 11->地址块18->地址块23,转换成阵列内的地址块1->地址块2->地址块3-> 地址块4-〉地址块5->地址块6,并顺序的写入緩存当中,緩存会按照现有技 术的方式将緩存的数据写入磁盘中。当然,如果没有緩存,可以直接将数据按照阵列内地址写入》兹盘。
具体地,接收上层应用系统的写入请求之前,首先要在创建一张地址映 射表,表区域的虛拟地址编号顺序排列,且每个虚拟地址后对应一个实际阵 列内地址,此时的实际地址区域暂时没有记录。
RAID接收到数据写入的请求后,如图5中请求的顺序为地址块3->地 址块6->地址块71->地址块11->地址块18->地址块23,是随才几写请求。
此时RAID控制器首先按照数据块写入的顺序找到虚拟地址对应表项,
的写入顺序,比如第一步为请求数据块3,请求到了 RAID控制器后,控制 器查找映射表虚拟地址为3的条目,由于是第一个写请求,所以直接在后面 的阵列内地址上写入1,后面来的写数据依此类推。
之后,RAID在映射表中写入阵列内地址的同时,RAID 4巴数据按照映 射后的地址写入緩存,即4巴原来地址块3->地址块6->地址块71-〉地址块11-> 地址块18-〉;t也址块23,转换成地址块1->地址块2->地址块3-〉i也址块4-〉 地址块5->地址块6,顺序的写入緩存当中。
緩存中接收到l-6块的数据以后,再按照整个条带的方式将数据顺序写 入物理《兹盘中。
此后地址映射表中已生成的条目就不再变更了 ,若此时有读操作或修改 操作等非初次写操作(读取已写有数据的地址块,或对已写有数据的地址块 进行修改)发过来,RAID系统首先将会查找表项,若虚拟地址对应的阵列 内地址已经生成,则按照实际的阵列内地址进行相应的操作,例如修改或者 读操作,在本发明中,非初次写操作与现有技术相同,这里不再赘述。
图6为本发明实施例的磁盘阵列系统数据写入方法总体流程图,如图6 所示,该流程包括如下步骤
步骤601,预先建立用于保存虛拟地址与阵列内地址的对应关系的地址 映射表。
其中所述虚拟地址提供给上层应用系统进行请求,阵列内地址对应磁盘阵列内的实际物理地址空间。
步骤602,接收到操作请求时,若操作请求为初次写入请求,则将该初
次写入请求所请求的虚拟地址转换为阵列内地址,并将虚拟地址与其转换后 的阵列内地址的对应关系填入所述地址映射表中。
其中,转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列。 当然,若操作请求为非初次写入请求,按照所述地址映射表中虚拟地址与阵 列内地址的对应关系,对所述请求对应的阵列内地址进行相应的操作。其中, 非初次写入请求包括读请求或修改请求等,例如,如果是读操作,则从读请 求中请求的虛拟地址对应的阵列内地址中读取数据,若是修改请求,即写请 求中请求的虚拟地址对应的阵列内地址中已写入数据,则按照阵列内地址进
行复写操作。
步骤603,按照地址映射表中所述连续排列的阵列内地址,将初次写入 请求对应的数据写入;兹盘。
如果磁盘阵列中包括緩存,则本步骤中将数据写入磁盘时,可以按照所 述阵列内地址,先将所述数据写入緩存中,再从缓存中将数据写入磁盘。如 果没有緩存,则可以直接写入磁盘中。
图7为本发明较佳实施例的磁盘阵列系统数据写入方法流程图,如图7 所示,该流程包括以下步骤
步骤701,接收上层应用系统的操作请求。
操作请求包括读/写请求,当然,具体读/写请求还可能有多种,本发明 实施例中可以只区分读/写请求。 步骤702,查找地址映射表。
RAID控制器在接收到操作请求后,将查询地址映射表。
步骤7(B,判断接收到的操作请求是否为初次的写请求,若是,则执行
步骤704,否则执行步骤706。
初次写请求的判断依据是地址映射表中的虚拟地址所对应的阵列内地
址是否已分配,如为空,即请求的地址中还未写入过数据,则说明是初次写
11请求,如已填入数据,即请求的地址块已写入过数据,则不是初次写请求。
步骤704,进行地址转换。
按照写请求的先后顺序,将写入请求的虛拟地址转换为连续的阵列内地 址并填入地址映射表中,不管写入请求本身是连续的还是随机的,都需执行 这个转换过程。
步骤705,按照转换后的阵列内地址,将写入请求对应的数据写入緩存。
数据写入緩存后,緩存再将数据写入磁盘,緩存将数据写入磁盘的方法 可以参考现有成熟技术,这里不再赘述。
步骤706,按照地址映射表的阵列内地址执行相应操作。
本发明还提供了一种可以实现上述方法的磁盘阵列系统,图8为本发明 实施例的》兹盘阵列系统结构示意图;如图8所示,该^兹盘阵列系统包括RAID 控制器801 、 一磁盘802和地址映射模块803;
在RAID系统中,至少包括2块以上的磁盘,图8中为方便说明,仅以 一个磁盘4既括表示。
其中,所述地址映射模块803,连接于RAID控制器801和磁盘802之 间,用于预先建立用于保存虛拟地址与阵列内地址的对应关系的地址映射 表;其中,所述虛拟地址提供给上层应用系统进行请求,阵列内地址对应磁 盘阵列内的实际物理地址空间。
在RAID控制器801接收到操作请求时,若操作请求为初次写入请求, 则所述地址映射模块803将该初次写入请求所请求的虚拟地址转换为连续
地址映射表中;转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列。
所述RAID控制器801,用于按照地址映射表中所述连续排列的阵列内 地址,将所述初次写入请求对应的数据写入所述磁盘802中。
较佳地,磁盘阵列系统中还可以进一步包括连接于所述址映射模块803 和所述磁盘802之间的緩存器804;所述RAID控制器801按照所述阵列内地址,先将所述数据写入緩存器 804中;
所述緩存器804再将所述数据写入磁盘801中。
较佳地,所述RAID控制器801接收到操作请求时,若操作请求为非初 次写入请求,则RAID控制器801按照所述地址映射表中虚拟地址与阵列内 地址的对应关系,对所述读请求或修改请求对应的阵列内地址进行相应的操作。
较佳地,所述磁盘阵列系统可以是RAIDO、 RAID1、 RAID3或RAID5 或者其他任意RAID系统。
较佳地,所述緩存器为FLASH或RAM或其他任意緩存器。
上述实施例虽然是以3块磁盘组成的RAID5系统为例,但是本发明并 不仅限于RAID5系统,由于本发明将随机写操作转换为了顺序写,而顺序 写相比随机写,可以减少随才几寻道的时间,因此可以提升所有RAID系统中 的随机写性能。在其他RAID系统中,阵列内地址划分和读写机制不同,但 这与本发明具体实施并不相关,在所有RAID系统中,本发明实施的方式都 是相似的,这里不再赘述。
由上述的实施例可见,本发明的磁盘阵列系统的数据写入方法,通过预 先建立用于保存虛拟地址与阵列内地址的对应关系的地址映射表;所述虛拟 地址提供给上层应用系统进行请求,阵列内地址对应磁盘阵列内的实际物理 地址空间;接收到操作请求时,若操作请求为初次写入请求,则将多个不连 续的写入请求所请求的虛拟地址按照写入请求的先后顺序转换为连续的阵 列内地址,并将转换后的虚拟地址与阵列内地址的对应关系填入所述地址映 射表中;按照所述阵列内地址,将所述写入请求对应的数据写入磁盘中,从 而将随机写请求转换为顺序写操作,提高了磁盘阵列系统的随机写性能。
所应理解的是,以上所述仅为本发明的较佳实施方式而已,并不用于限 定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等 同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种磁盘阵列系统的数据写入方法,其特征在于,该方法包括预先建立用于保存虚拟地址与阵列内地址的对应关系的地址映射表;所述虚拟地址提供给上层应用系统进行操作请求,阵列内地址对应磁盘阵列内的实际物理地址空间;接收到操作请求时,若操作请求为初次写入请求,则将该初次写入请求所请求的虚拟地址转换为阵列内地址,并将所述虚拟地址与其转换后的阵列内地址的对应关系填入所述地址映射表中;在地址映射表中转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列;按照地址映射表中所述连续排列的阵列内地址,将初次写入请求对应的数据写入磁盘。
2、 如权利要求1所述的磁盘阵列系统的数据写入方法,其特征在于,所述 将初次写入请求对应的数据写入^f兹盘,包括按照所述阵列内地址,将所述数 据写入緩存,再从緩存中将所述数据写入磁盘。
3、 如权利要求1所述的》兹盘阵列系统的数据写入方法,其特征在于,所述 接收到搡作请求时,若操作请求为非初次写入请求,则按照所述地址映射表中 虚拟地址与阵列内地址的对应关系,对所述非初次写入请求对应的阵列内地址 进行相应的操作。
4、 如权利要求3所述的磁盘阵列系统的数据写入方法,其特征在于,所述 非初次写入请求包括读请求或修改请求。
5、 如权利要求1~4中任一项权利要求所述的磁盘阵列系统的数据写入方 法,其特征在于,所述磁盘阵列系统包括RAID0、 RAID1、 RAID3或RAID5。
6、 一种磁盘阵列系统,包括RAID控制器和磁盘,其特征在于,该系统还 包括地址映射模块;所述地址映射模块,连接于RAID控制器和磁盘之间,用于预先建立用于 保存虚拟地址与阵列内地址的对应关系的地址映射表;所述虛拟地址提供给上层应用系统进行操作请求,阵列内地址对应石兹盘阵列内的实际物理地址空间; 在RAID控制器接收到操作请求时,若操作请求为初次写入请求,则所述地址映射模块将该初次写入请求所请求的虚拟地址转换为连续的阵列内地址,并将转换后的虚拟地址与阵列内地址的对应关系填入所述地址映射表中;转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列;所述RAID控制器,用于按照地址映射表中所述连续排列的阵列内地址,将所述初次写入请求对应的数据写入所述^兹盘中。
7、 如权利要求6所述的磁盘阵列系统,其特征在于,所述系统进一步包括 连接于所述址映射模块和磁盘之间的緩存器;所述RAID控制器将所述数据写入緩存器中; 所述緩存器将所述数据写入磁盘中。
8、 如权利要求6所述的磁盘阵列系统,其特征在于,所述RAID控制器接 收到操作请求时,若操作请求为非初次写入请求,则所述RAID控制器按照所 述地址映射表中虛拟地址与阵列内地址的对应关系,对所述请求对应的阵列内 地址进行相应的操作。
9、 如权利要求8所述的磁盘阵列系统,其特征在于,所述磁盘阵列系统包 括RAID0、 RAID1、 RAID3或RAID5。
10、 如权利要求8所述的磁盘阵列系统,其特征在于,所述緩存器为FLASH 或RAM。
全文摘要
本发明公开了一种磁盘阵列系统的数据写入方法及磁盘阵列系统,该方法包括预先建立用于保存虚拟地址与阵列内地址的对应关系的地址映射表;所述虚拟地址提供给上层应用系统进行操作请求,阵列内地址对应磁盘阵列内的实际物理地址空间;接收到操作请求时,若操作请求为初次写入请求,则将该初次写入请求所请求的虚拟地址转换为阵列内地址,并将虚拟地址与转换后的阵列内地址的对应关系填入所述地址映射表中;转换后的阵列内地址根据接收初次写入请求的顺序呈连续排列;按照地址映射表中所述连续排列的阵列内地址,将初次写入请求对应的数据写入磁盘。该方法和系统将随机写转换为了顺序写,从而提高了磁盘阵列系统的随机写性能。
文档编号G06F3/06GK101539842SQ200910083068
公开日2009年9月23日 申请日期2009年4月27日 优先权日2009年4月27日
发明者余剑声, 迪 周, 飞 夏 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1