发明名称 一种固态盘阵列的垃圾回收方法
摘要 一种固态盘阵列的垃圾回收方法,涉及计算机数据存储方法。在固态盘阵列上设置重定向数据映射表和四个功能模块:主控、垃圾回收控制、请求重定向和数据回收,包括初始化步骤、垃圾回收阶段、数据回收阶段和结束步骤等。当某一个正在处理垃圾回收操作的固态盘接收到用户读写请求时,本发明将读请求重定向到固态盘阵列中其他成员固态盘上并通过重构读机制获取读数据;将写请求重定向到热备盘也就是将数据写入到热备盘中,同时更新相应的校验信息;垃圾回收操作完成后,将被重定向到热备盘的写数据回收到固态盘阵列上正确的位置。减轻垃圾回收操作对固态盘阵列系统性能波动的影响,提高固态盘阵列的性能。
申请公布号 CN103530237A 申请公布日期 2014.01.22
申请号 CN201310528584.5 申请日期 2013.10.31
申请人 厦门大学 发明人 吴素贞;毛波;陈晓熹;陈晓兰;席在发
分类号 G06F12/02(2006.01)I;G06F3/06(2006.01)I 主分类号 G06F12/02(2006.01)I
代理机构 厦门南强之路专利事务所(普通合伙) 35200 代理人 马应森
主权项 一种固态盘阵列的垃圾回收方法,其特征在于包括以下步骤:(1)初始化步骤,具体方法如下:(1.1)根据用户指令,打开已有固态盘阵列或创建新固态盘阵列;(1.2)主控模块读取保存在固态盘阵列成员盘超级块中的重定向数据映射表或创建该固态盘阵列的重定向数据映射表并初始化为空;进行步骤(2);(2)垃圾回收步骤,具体方法如下:(2.1)垃圾回收控制模块主动收集固态盘阵列中每块成员固态盘的空闲空间比例,并与预设的阈值比较,判断固态盘是否需要进行垃圾回收操作,若某个固态盘需要进行垃圾回收操作,则转过程(2.2),否则重复过程(2.1);(2.2)主控模块判断固态盘阵列中是否有其他固态盘正在进行垃圾回收操作,若有,则转过程(2.4);(2.3)主控模块主动触发垃圾回收控制模块进行该固态盘的垃圾回收操作,并将此信息通知给请求重定向模块,完成垃圾回收操作后,转步骤(4);(2.4)暂停处理该固态盘的垃圾回收操作,转过程(2.1);(3)垃圾回收阶段请求处理步骤,具体方法如下:(3.1)等待上层用户读写请求,判断该请求是否需要由正在处理垃圾回收操作的固态盘响应,若是,则转过程(3.2),否则,查找映射表,判断所请求的数据是否已经被回收,若是,则转过程(3.7),否则转步骤(5);(3.2)判断该请求是否是写请求,若是,则转过程(3.3),否则转过程(3.4);(3.3)将本应写入正在处理垃圾回收操作的固态盘中的数据,写入固态盘阵列的热备盘中,同时更新相应的校验信息,并将数据映射信息记录在重定向数据映射表中,转过程(3.1);(3.4)根据重定向数据映射表判断读请求要读取的数据是否在热备盘中,若是,则转过程(3.5),否则转过程(3.6);(3.5)请求重定向模块将读请求发向热备盘,从热备盘读取数据,返回给用户,转过程(3.1);(3.6)请求重定向模块将读请求发向固态盘阵列,读取其他未处理垃圾回收操作的固态盘上的数据,利用RAIS5自身的冗余特性动态重构出正在处理垃圾回收操作的固态盘上的数据,并返回给用户;转过程(3.1);(3.7)按固态盘阵列的正常算法响应读写请求;转过程(3.1);(4)数据回收步骤,当对应固态盘的垃圾回收操作完成后,数据回收模块扫描重定向数据映射表,具体方法如下:(4.1)数据回收模块判断重定向数据映射表是否为空,若是,则数据回收结束,转步骤(2),否则转过程(4.2);(4.2)数据回收模块从重定向数据映射表中取出一条映射信息,从热备盘中读取该映射信息对应的数据并写回到固态盘阵列的正确位置中;(4.3)数据回收模块将该映射信息从重定向数据映射表中删除,转过程(4.1);(5)数据回收阶段请求处理步骤,具体方法如下:(5.1)数据回收模块判断数据回收是否结束,若是,则本步骤结束,转步骤(3),否则等待上层用户读写请求,判断其类型,读请求转过程(5.2),写请求转过程(5.5);(5.2)请求重定向模块根据重定向数据映射表判断该读请求所需要的数据是否在热备盘中,若是,则转过程(5.3),否则转过程(5.4);(5.3)请求重定向模块将读请求发向热备盘,从热备盘读取数据,返回给用户,转过程(5.1);(5.4)请求重定向模块将读请求发向固态盘阵列,从固态盘阵列读取数据,返回给用户,转过程(5.1);(5.5)请求重定向模块判断该写请求是否命中重定向数据映射表,若是,则转过程(5.6),否则转过程(5.7);(5.6)请求重定向模块将该写请求所命中的映射信息从重定向数据映射表中删除,继续过程(5.7);(5.7)请求重定向模块将该写请求中的数据写入到固态盘阵列,同时更新相应的校验信息,转过程(5.1);(6)当用户发出指令关闭固态盘阵列时,进行结束步骤,具体方法如下:(6.1)关闭固态盘阵列之前,主控模块将重定向数据映射表保存到固态盘阵列各成员盘的超级块中;(6.2)关闭固态盘阵列设备,释放相关的资源。
地址 361005 福建省厦门市思明南路422号