一种用于raid5快速初始化位图页面管理的方法

文档序号:6439814阅读:477来源:国知局
专利名称:一种用于raid5快速初始化位图页面管理的方法
技术领域
本发明涉及计算机系统及存储领域,具体地说是一种用于RAID5快速初始化位图页面管理的方法。
背景技术
对于具有冗余校验信息的RAID5系统,RAID5新创建时各成员盘数据并不能保证条带数据是一致性的.数据的不一致性使得系统无法按照正常流程处理主机IO请求, 所得到的校验数据可能是错误的,因此这些级别的RAID5创建时必须先进行一致性初始化工作。典型的初始化方式是格式化所有成员盘,将所有成员盘数据写零即可保证RAID5分条数据符合偶校验。但RAID5初始化任务必须遍历成员盘的所有数据,这是一项非常耗时的工作, 并且随着磁盘的容量的增大,等待的时间就会更长。另外初始化完成之前,RAID5无法响应主机端IO请求,否则已写入的数据可能被初始化操作覆盖,或者产生数据错误,因此初始化过程中RAID5无法响应IO请求,无法满足即插即用的需求。如何快速完成RAID5 系统初始化工作,并为主机端可用成为一个急需解决的问题。RAID5有两种写方式读改写和重构写。读改写一般用于小块写,重构写一般用于大块写。对于读改写来说,需要旧的校验数据的参与,所以,如果原来的条带数据不一致的话,读改写由于依赖原来的校验值,经过重新计算,会产生错误的结果,条带还是不一致,失去了冗余的作用。而如果进行重构写的话,不需要旧的校验值参与计算,所以,新的结果是一致的,即使原来的条带数据不一致,经过重构写也变得一致。如果条带的第一次写请求到达,就让它做重构写,第一次写之后,采用各自对应的写方式。也就是说不用刻意地去做初始化,创建之后即可以投入使用。本发明的关键就是如何去标记已经写过或者同步过的区域。

发明内容
本发明的目的是提供一种用于RAID5快速初始化位图页面管理的方法。本发明的目的是按以下方式实现的,采用位图去标记已经已经写过或者同步过的区域,RAID-5处理一个条带写请求时,首先判断条带所对应的位图中的位是否为0,若为0 则表示该条带不同步,采用重构写方式处理写请求,条带写完成后将对应位图中的位置1 表示条带已同步,当所有条带都已同步时,将该RAID-5标记“已同步”状态,具体步骤如下
(1)磁盘数据布局
某一位图页中的所有位代表的条带都已经是1,即已经同步过了,如果再请求该页读入换出就是很大的浪费,考虑标识某一位图页代表所有的位对应的条带是否都已经同步过, 所以再用一个位图,这个位图称为页位图,原来的位图称为常规位图,页位图的一位表示常规位图中的一页,常规位图的一页所有位都是1,说明该页表示所有的条带都已经同步过了,即把页位图对应的位置1,经过计算,即使磁盘容量按目前最大的2T来看,页位图只要一页就足够了,不占太多的内存,让页位图一直在内存中存在,在启动阶段,这一页面也读入内存,因为常规位图经常提起,所以,以后出现的位图就是代表常规位(2)替换策略
有基树A和基树B对页面进行管理,最开始初始化的时候,磁盘读取一些页面,这些页面中的一部分放在基树A中,一部分放在基树B中,这里把基树A作为活动区域,基树B作为非活动区域,所以,如果从基树A置刚换出的页面,这时写回磁盘的话,正好有请求要被访问这个页面,那么还得立刻从磁盘读取,造成比较大的损耗,所以,这里设计从基树A置刚换出的页面不直接写到磁盘,而是先写到基树B里,把基树B的一页写到磁盘,这样的话, 这个刚换出的页面就可以在基树B里查找,而不用从磁盘再读取,先查找基树A的,如果没有,就找基树B,如果在基数B中有,就把这个页面换到A中,而A的一个页面换到B中,如果基树B中也没有,就从磁盘读取这个页面,把这个页面放在A中,然后从其它页面找出一个, 如果是脏页面就写回磁盘,如果不是脏页面,直接释放即可;
(3)针对每个区域的页面换出,随着写的方式不同做调整,如果是顺序写,把呆在内存中最久的页面换出,成为FIFO机制;如果是随机写的话,则把最近最久未用的页面换出,称为LRU机制,区分的方法可以通过设置;
(4)另外还有一个周期性的内核线程,不断把一些符合特征的页面从活跃区域移动到非活跃区域;同时也进行一些页面标记清除工作,如果在需要的时候才去找一个页面,这样的效率太低,这个内核线程就是提前准备好了可以写回磁盘的页面。本发明的有益效果是是创建之后即可以投入使用,同时兼顾性能的考虑,分成活跃与非活跃的区域,对位图页面进行高效的管理。并能根据顺序写还是随机写采用不同的置换策略。创建之后即可以投入使用,是指不用经过初始化阶段漫长的饿等待过程,满足即插即用的需求。兼顾性能,是指不影响或者少影响读写性能,同时,也不能占用过多的内存。 高效的管理,是指有效率地进行页面置换等操作。


附图1磁盘数据分布图; 附图2置换示意附图3写流程图。
具体实施例方式参照说明书附图对本发明的方法作以下详细地说明。本发明是在Iinux内核中软RAID基础上进行的开发。采用位图去标记已经已经写过或者同步过的区域。RAID-5处理一个条带写请求时,首先判断条带所对应的位图中的位是否为0,若为0则表示该条带不同步,采用重构写方式处理写请求,条带写完成后将对应位图中的位置1表示条带已同步,进一步地,当所有条带都已同步时将该RAID-5标记“已同步”状态。之前,已经有人做过位图中的一位对应一个条带的情况。但一位对应一个条带在现实使用中会有很多限制。按照每个条带4KB就对应1个位去划分的话,对于2TB的磁盘, 位图大约需要62MB,如果把位图全部放在内存中,会消耗很大的内存,特别是有多个RAID5的系统。因此只放在内存中一部分位图页面,等用到的时候再去磁盘请求页面,并把原来在内存中的页面换出,这样是减少了内存的消耗,但替换页面的效率和方法会给性能带来直接的影响。因此,有必要找到一个有效率,以及合理的替换机制。
1)磁盘数据布局
另外,还有个问题需要考虑,如果,某一位图页中的所有位代表的条带都已经是1,即已经同步过了,如果再请求该页读入换出就是很大的浪费,考虑可以标识某一位图页代表所有的位对应的条带是否都已经同步过,所以再用一个位图,这个位图称为页位图,原来的位图称为常规位图,页位图的一位表示常规位图中的一页,常规位图的一页所有位都是1,说明该页表示所有的条带都已经同步过了,即把页位图对应的位置1,经过计算,即使磁盘容量按目前最大的2T来看,页位图只要一页就足够了,不占太多的内存,可以让页位图一直在内存中存在。在启动阶段,这一页面也读入内存。因为常规位图经常提起,所以,以后出现的位图就是代表常规位图。如图1;
2)替换策略
如图2所示,有基树A和基树B对页面进行管理,最开始初始化的时候,磁盘读取一些页面,这些页面中的一部分放在基树A中,一部分放在基树B中。这里把基树A作为活动区域,基树B作为非活动区域所以,如果从基树A置刚换出的页面,如果这时写回磁盘的话,正好有请求要被访问这个页面,那么还得立刻从磁盘读取,造成比较大的损耗,所以,这里设计从基树A置刚换出的页面不直接写到磁盘,而是先写到基树B里,把基树B的一页写到磁盘,这样的话,这个刚换出的页面就可以在基树B里查找,而不用从磁盘再读取。先查找基树A的,如果没有,就找基树B,如果在基数B中有,就把这个页面换到A中,而A的一个页面换到B中。如果基树B中也没有,就从磁盘读取这个页面,把这个页面放在A中,然后从其它页面找出一个,如果是脏页面就写回磁盘,如果不是脏页面,直接释放就可以;
3)针对每个区域的页面换出原则,随着写的方式不同可以做调整,如果是顺序写,把呆在内存中最久的页面换出(FIFO机制);如果是随机写的话,则把最近最久未用的页面换出 (LRU机制)。区分的方法可以通过设置;
4)另外还有一个周期性的内核线程,不断把一些符合特征的页面从活跃区域移动到非活跃区域;同时也进行一些页面标记清除工作。如果在需要的时候才去找一个页面,这样的效率太低,这个内核线程就是提前准备好了可以写回磁盘的页面,包含这个替换策略的一次写流程如图3所示。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1. 一种用于RAID5快速初始化位图页面管理的方法,其特征在于采用位图去标记已经已经写过或者同步过的区域,RAID-5处理一个条带写请求时,首先判断条带所对应的位图中的位是否为0,若为0则表示该条带不同步,采用重构写方式处理写请求,条带写完成后将对应位图中的位置1表示条带已同步,当所有条带都已同步时,将该RAID-5标记“已同步”状态,具体步骤如下(1)磁盘数据布局某一位图页中的所有位代表的条带都已经是1,即已经同步过了,如果再请求该页读入换出就是很大的浪费,考虑标识某一位图页代表所有的位对应的条带是否都已经同步过, 所以再用一个位图,这个位图称为页位图,原来的位图称为常规位图,页位图的一位表示常规位图中的一页,常规位图的一页所有位都是1,说明该页表示所有的条带都已经同步过了,即把页位图对应的位置1,经过计算,即使磁盘容量按目前最大的2T来看,页位图只要一页就足够了,不占太多的内存,让页位图一直在内存中存在,在启动阶段,这一页面也读入内存,因为常规位图经常提起,所以,以后出现的位图就是代表常规位图;(2)替换策略有基树A和基树B对页面进行管理,最开始初始化的时候,磁盘读取一些页面,这些页面中的一部分放在基树A中,一部分放在基树B中,这里把基树A作为活动区域,基树B作为非活动区域,所以,如果从基树A置刚换出的页面,这时写回磁盘的话,正好有请求要被访问这个页面,那么还得立刻从磁盘读取,造成比较大的损耗,所以,这里设计从基树A置刚换出的页面不直接写到磁盘,而是先写到基树B里,把基树B的一页写到磁盘,这样的话, 这个刚换出的页面就可以在基树B里查找,而不用从磁盘再读取,先查找基树A的,如果没有,就找基树B,如果在基数B中有,就把这个页面换到A中,而A的一个页面换到B中,如果基树B中也没有,就从磁盘读取这个页面,把这个页面放在A中,然后从其它页面找出一个, 如果是脏页面就写回磁盘,如果不是脏页面,直接释放即可;(3)针对每个区域的页面换出,随着写的方式不同做调整,如果是顺序写,把呆在内存中最久的页面换出,成为FIFO机制;如果是随机写的话,则把最近最久未用的页面换出,称为LRU机制,区分的方法可以通过设置;(4)另外还有一个周期性的内核线程,不断把一些符合特征的页面从活跃区域移动到非活跃区域;同时也进行一些页面标记清除工作,如果在需要的时候才去找一个页面,这样的效率太低,这个内核线程就是提前准备好了可以写回磁盘的页面。
全文摘要
本发明提供一种用于RAID5快速初始化位图页面管理的方法,采用位图去标记已经已经写过或者同步过的区域,RAID-5处理一个条带写请求时,首先判断条带所对应的位图中的位是否为0,若为0则表示该条带不同步,采用重构写方式处理写请求,条带写完成后将对应位图中的位置1表示条带已同步,当所有条带都已同步时,将该RAID-5标记“已同步”状态。
文档编号G06F12/02GK102567214SQ20111039251
公开日2012年7月11日 申请日期2011年12月1日 优先权日2011年12月1日
发明者古世磊, 施培任 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1