[发明专利]一种提高磁盘阵列性能的方法及装置在审
申请号: | 201310638469.3 | 申请日: | 2013-12-02 |
公开(公告)号: | CN104679442A | 公开(公告)日: | 2015-06-03 |
发明(设计)人: | 李贵宁 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F17/30 |
代理公司: | 北京元本知识产权代理事务所 11308 | 代理人: | 秦力军 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 提高 磁盘阵列 性能 方法 装置 | ||
技术领域
本发明涉及计算机系统技术领域,特别涉及一种提高磁盘阵列性能的方法及装置。
背景技术
RAID5/6(Redundant Arrays of Inexpensive Disks,磁盘阵列)作为一种数据保护的技术方案,在SAN(Storage Area Network,存储区域网络)和NAS(Network Attached Storage,网络附属存储)领域应用广泛,对于这种基于冗余的数据保护技术,由于其在磁盘资源占用上的优势(对比于RAID1而言),在很长一段时间内,还会长期存在下去(文章以下的描述均以RAID替代RAID5/6)。
传统阵列的IO堆栈的方式如图1所示:通常的IO采用的是回写的方式,IO在高速缓冲存储器cache经过组织了以后,将重新组织(如重新排列和合并的写IO等)的IO发到RAID模块,通常,RAID模块的重要作用之一就是将传入的数据做RAID5/6的计算,此时,IO已经经过了cache,不可能再被缓存,因此造成了后面谈到的一些性能问题。
RAID由于其自身算法的特点,决定了在实现的时候对IO性能上是有冲击的,比如,当一个写IO下发的时候,RAID需要通过分条的范围做一次奇偶校验parity数据的计算,这仅仅是在满分条的情况之下,如果是下发的数据并非是满分条,则很可能出现先将其它分条单元的数据从盘上读出,然后再与写入的新数据一起计算一次parity数据,即所谓的大写方式。
而另一种情况会稍好一点,可以仅仅将之前的分条的parity数据和老版本的原数据部分读出,然后对三个值作相应的校验工作,生成新的parity数据,再将新版本的写入数据和新计算的parity数据写入到相应的分条位置上,这是所谓的小写。
从上面两种情况来看,无论是大写还是小写,都可能涉及到从磁盘上将老版本的数据或者parity数据读出的过程和重新计算parity数据的过程,这两个过程运行在IO的主路径上,对整个IO栈的运行效率是有较大影响的,由于从理论上说,基于冗余计算的原理,计算parity的过程必不可少,这部分的影响无法回避,因此,要想提高整个RAID的运行效率则需要在从磁盘上读出老版本的数据上进行研究。
图2所示的是一种小写的做法,读老版本数据D1和奇偶校验parity parity数据,以便后面对RAID5/6的校验数据进行计算。
RAID的另一个问题是,由于当一个分条可能由多个分条单元组成,而每个分条单元位于不同的磁盘上,在实际的写入磁盘过程中,系统本身是无法保证写入这一系列数据的原子性的(原子性的意思就是这些归属于多个磁盘的数据,要不就一起写入成功,要不就一起写入失败),如果无法保证原子写的特性,则会出现一个比较严重的问题,比如,该分条的部分分条单元写入完成,而另一部分未写入,那么在盘上的分条则不再满足分条一致性,也就是说,当其分条单元对应的一个磁盘坏掉,通过这个分条实际上是无法重构出正确的数据的,这也就是RAID的write hole问题。
发明内容
本发明的目的在于提供一种提高磁盘阵列性能的方法及装置,从而使得磁盘阵列减少了下盘读数据,同时也能满足对磁盘阵列write-hole的问题。
根据本发明的一个方面,提供了一种提高磁盘阵列性能的方法,包括以下步骤:
在磁盘阵列RAID与磁盘块设备之间设置缓存器;
在写IO下发到磁盘阵列时,将磁盘阵列所需数据暂时保存到所述缓存器中;
通过对所述缓存器暂时保存的磁盘阵列所需数据进行组织,提供相应的查找和更新的接口;
利用所述接口进行写IO所需的查找和更新。
优选地,所述的对所述缓存器暂时保存的磁盘阵列所需数据进行组织包括:
将磁盘阵列所需数据划分成便于并发处理的多个分条。
优选地,将属于同一个逻辑单元号LUN的所有分条构成二叉树,所述二叉树包括作为树的根节点的LUN、作为第一层查找树的分条查找索引、作为第二层查找树的分条,其中在第二层查找树中分条为叶子节点,并且所述根节点和叶子节点构成所述查找和更新的接口。
优选地,所述的将属于同一个逻辑单元号LUN的所有分条构成二叉树包括:
将属于同一个逻辑单元号LUN的所有分条分别进行ID的编码;
将每个分条的ID作为分条查找索引;
将LUN作为一棵树的根节点,每个分别按照其索引分别挂入到LUN树上的相应位置上,以形成叶子节点。
优选地,每个叶子节点包括:
若干个分别作为指针的头部数据;以及
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司;,未经中兴通讯股份有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310638469.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:打印控制装置及打印控制装置的控制方法
- 下一篇:一种闪存阵列管理方法及装置