CN107451069A - 基于预留空间的固态盘阵列的垃圾回收方法 - Google Patents

基于预留空间的固态盘阵列的垃圾回收方法 Download PDF

Info

Publication number
CN107451069A
CN107451069A CN201710673442.6A CN201710673442A CN107451069A CN 107451069 A CN107451069 A CN 107451069A CN 201710673442 A CN201710673442 A CN 201710673442A CN 107451069 A CN107451069 A CN 107451069A
Authority
CN
China
Prior art keywords
solid
disc array
data
state
state disc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710673442.6A
Other languages
English (en)
Inventor
吴素贞
刘癸新
朱伟东
毛波
张伟韦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen University
Original Assignee
Xiamen University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen University filed Critical Xiamen University
Priority to CN201710673442.6A priority Critical patent/CN107451069A/zh
Publication of CN107451069A publication Critical patent/CN107451069A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

基于预留空间的固态盘阵列的垃圾回收方法,涉及计算机数据存储方法。提供用于减轻垃圾回收操作对固态盘阵列系统性能波动的负面影响的一种基于预留空间的固态盘阵列的垃圾回收方法。由初始化步骤、垃圾回收阶段、数据回收阶段和结束步骤组成,固态盘阵列上设置一个重定向数据映射表和四个功能模块:主控模块、垃圾回收控制模块、请求重定向模块、数据回收模块。所述垃圾回收阶段包括并行的垃圾回收步骤和垃圾回收阶段请求处理步骤,数据回收阶段包括并行的数据回收步骤和数据回收阶段请求处理步骤。

Description

基于预留空间的固态盘阵列的垃圾回收方法
技术领域
本发明涉及计算机数据存储方法,尤其是涉及基于预留空间的固态盘阵列的垃圾回收方法。
背景技术
基于闪存的固态盘是一种半导体存储介质,具有经久耐用、防震抗摔、无噪音、功耗低、工作温度范围大、随机小读性能高等优点;但是固态盘的容量价格比低,而且具有随机小写性能低、写前必须擦除和介质擦除次数有限等缺点。
基于闪存的固态盘包含3种基本操作:读、写和擦除。读和写都是以页为单位进行操作;擦除以块为单位进行操作。其中,一个块(块大小通常是128~256KB)一般包含64个页(页大小通常是2~16KB),因此擦除操作的处理时间比读写操作处理时间大若干个数量级。若某个页已经存储有效数据,则无法对该页直接进行覆盖写操作,因此固态盘处理写请求时不支持原地更新,而是采用异地更新的方法,也就是将原数据页的数据置为无效,将新数据写入到其他空闲页中。
因为基于闪存的固态盘采用异地更新的机制,随着系统的运行,固态盘中的空闲块越来越少,无效块越来越多,因此基于闪存的固态盘需要擦除这些包含无效数据页的块来获得新的空闲块,该操作称为“垃圾回收”。固态盘的垃圾回收过程是:
(1)选取待回收的块,将其上的有效数据复制到空闲块中;
(2)更新地址映射信息;
(3)擦除待回收块并将它们加入到空闲块列表中。由此可知,垃圾回收操作会花费大量的时间。除此之外,在垃圾回收过程中,该固态盘的芯片无法处理来自用户的读写请求,此时该芯片接收到的读写请求都将被挂起等待,直到垃圾回收操作完成才能被处理。因此,垃圾回收操作的效率直接影响了固态盘存储系统的性能,该问题已经成为存储研究热点之一。
另一方面,固态盘除了应用于桌面机外,也逐渐应用于服务器和企业级数据存储系统之中。在企业级数据存储系统中,单个固态盘显然无法满足服务对存储系统容量、性能和可靠性的要求。因此,将磁盘阵列(Redundant Array of Independent Disks,简称为RAID)算法应用到固态盘存储系统中,构建大容量、高性能和高可靠的存储系统非常有必要。本发明中,将固态盘阵列简称为RAIS(Redundant Array of Independent SSDs);由于不同级别的磁盘简称为RAID0、RAID10、RAID5等。
类似于磁盘阵列,固态盘阵列系统的性能会受到阵列中性能最差的成员盘的影响。因此,单个固态盘垃圾回收操作所引起的性能降低将使得固态盘阵列表现出严重的性能波动。若固态盘阵列的成员盘采用本地非协作的垃圾回收策略,固态盘阵列的性能将会出现严重的性能波动。若采用全局垃圾回收策略,垃圾回收操作引起的固态盘阵列性能波动可以得到一定程度的减轻。而其原因是,全局垃圾回收策略,会触发其他未达到垃圾回收状态的盘的垃圾回收状态,降低了性能降级。但是采用全局垃圾回收策略之后,固态盘阵列在垃圾回收过程中停止响应用户读写请求,整个固态盘阵列存储系统无法对外服务,这对需要7×24小时稳定提供服务的应用来说是无法接受的。
参考文献:
[1]Youngjae Kim,Sarp Oral,Galen M.Shipman,Junghee Lee,David Dillow,Feiyi Wang,Harmonia:A Globally Coordinated Garbage Collector for Arrays ofSolid-state Drives,Proceedings of the 27th IEEE Symposium on Massive StorageSystems and Technologies(MSST 2011).Pages 1-12.Denver,Colorado,May 23-27,2011。
[2]吴素贞,陈晓熹,毛波.GC-RAIS:一种基于垃圾回收感知的固态盘阵列.计算机研究与发展.50(1):60-68,2013。
发明内容
本发明针对RAIS5等冗余固态盘阵列,提供用于减轻垃圾回收操作对固态盘阵列系统性能波动的负面影响的一种基于预留空间的固态盘阵列的垃圾回收方法。
本发明包括以下步骤:
1)初始化步骤;
2)垃圾回收步骤;
3)垃圾回收阶段请求处理步骤;
4)数据回收步骤,当对应的固态盘的垃圾回收操作完成之后,数据回收模块扫描重定向数据映射表;
5)数据回收阶段请求处理步骤;
6)结束步骤。
在步骤1)中,所述初始化步骤的具体方法如下:
(1)根据用户指令,创建新固态盘阵列RAIS5或打开已有固态盘阵列RAIS5;判断固态盘阵列RAIS5是否是新创建的,若是,则转步骤(2),否则转步骤(3);
(2)利用固态盘的预留空间分别创建新的固态盘阵列RAIS10和固态盘阵列RAIS0;转步骤(4);所述固态盘阵列RAIS10用于保存写数据,简称W-RAIS10;所述固态盘阵列RAIS0用于保存热点读数据,简称R-RAIS0;
(3)打开已有的固态盘阵列W-RAIS10和R-RAIS0;转步骤(5);
(4)主控模块创建该固态盘阵列的重定向数据映射表并初始化为空;进行步骤2);
(5)主控模块读取保存在固态盘阵列成员盘超级块中的重定向数据映射表的映射信息到内存中;进行步骤2)。
在步骤1)第(4)部分中,所述重定向数据映射表包括M条映射信息,每条映射信息由4个数据项构成:各数据项依次为被重定向数据在固态盘阵列RAIS5的块偏移地址、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的块偏移地址、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的标记位、被重定向数据的长度;M为大于等于0的自然数。
在步骤2)中,所述垃圾回收步骤的具体方法可为:
(1)垃圾回收控制模块主动收集固态盘阵列RAIS5中每块成员固态盘的空闲空间比例,并与预设的阈值比较,判断固态盘是否需要进行垃圾回收操作,若某个固态盘需要进行垃圾回收操作,则转步骤(2),否则重复步骤(1);所述预设的阈值可为10%;
(2)主控模块判断固态盘阵列RAIS5中是否有其他固态盘正在进行垃圾回收操作,若有,则转步骤(4),否则转步骤(3);
(3)主控模块主动触发垃圾回收控制模块进行所述固态盘的垃圾回收操作,并通知给请求重定向模块,完成垃圾回收操作后,转步骤(4);
(4)暂停处理所述固态盘的垃圾回收操作,转步骤(1)。
在步骤3)中,所述垃圾回收阶段请求处理步骤的具体方法可为:
(1)等待上层用户读写请求,判断该请求是否需要由正在处理垃圾回收操作的固态盘响应,若是,则转步骤(2),否则,查找映射表,判断所请求的数据是否已经被回收,若是,则转步骤(8),否则转步骤(5);
(2)判断是否为写请求,若是,则转步骤(3),若不是,则转步骤(4);
(3)将本该写入正在处理垃圾回收操作的固态盘中的数据写入固态盘阵列W-RAIS10中,同时更新相应的校验信息,并将数据映射信息记录在重定向数据映射表中,转步骤(1);
(4)根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列R-RAIS0中,若是,则转步骤(5),否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列W-RAIS10中,若是,则转步骤(6),否则转步骤(7);
(5)请求重定向模块将读请求发向固态盘阵列R-RAIS0,从固态盘阵列R-RAIS0读取数据,返回给用户,转步骤(1);
(6)请求重定向模块将读请求发向固态盘阵列W-RAIS10,从固态盘阵列W-RAIS10读取数据,返回给用户,转步骤(1);
(7)请求重定向模块将读请求发向固态盘阵列RAIS5,读取其他未处理垃圾回收状态操作的固态盘上的数据,利用RAIS5自身的冗余特性动态重构出正在处理垃圾回收操作的固态盘上的数据,并返回给用户;转步骤(1);
(8)按固态盘阵列的正常算法响应读写请求,转步骤(1)。
在步骤4)中,所述数据回收步骤,当对应的固态盘的垃圾回收操作完成之后,数据回收模块扫描重定向数据映射表,具体方法可为:
(1)数据回收模块判断重定向数据映射表是否为空,若是,则数据回收结束,转步骤2),否则转步骤(2);
(2)数据回收模块从重定向数据映射表中取出一条映射信息,判断该映射信息对应的数据是否位于固态盘阵列W-RAIS10中,若是,则转步骤(3),否则转步骤(4);
(3)从固态盘阵列W-RAIS10中读取该映射信息对应的数据并写回到固态盘阵列RAIS5的正确位置中,转步骤(4);
(4)数据回收模块将该映射信息从重定向数据映射表中删除,转步骤(1)。
在步骤5)中,所述数据回收阶段请求处理步骤的具体方法可为:
(1)数据回收模块判断数据回收是否结束,若是,则本步骤结束,转步骤3),否则等待上层用户读写请求,判断其类型,读请求转步骤(2),写请求转步骤(6);
(2)请求重定向模块根据重定向数据映射表判断该读请求要读取的数据是否在固态盘阵列R-RAIS0中,若是,则转步骤(3),否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列W-RAIS10中,若是,则转步骤(4),否则转步骤(5);
(3)请求重定向模块将读请求发向固态盘阵列R-RAIS0,从其中读取数据,并返回给用户,转步骤(1);
(4)请求重定向模块将读请求发向固态盘阵列W-RAIS10中,从其中读取数据,并返回给用户,转步骤(1);
(5)请求重定向模块将读请求发向固态盘阵列RAIS5,从固态盘阵列RAIS5读取数据,返回给用户,转步骤(1);
(6)请求重定向模块判断该写请求是否命中重定向数据映射表,若是,则转步骤(7),否则转步骤(8);
(7)请求重定向模块将该写请求所命中的映射信息从重定向数据映射表中删除,继续步骤(8);
(8)请求重定向模块将该写请求中的数据写入到固态盘阵列RAIS5,同时更新相应的校验信息,转步骤(1)。
在步骤6)中,所述结束步骤的具体方法可为:当用户发出指令关闭固态盘阵列RAIS5时,顺序进行下述步骤:
(1)关闭固态盘阵列RAIS5之前,主控模块将重定向数据映射表保存到固态盘阵列RAIS5的各个成员盘的超级块中;
(2)关闭固态盘阵列设备RAIS5即预留空间构成的固态盘阵列W-RAIS10和R-RAIS0,释放相关的资源。
本发明将不同级别的固态盘阵列对应地简称为RAIS0、RAIS10、RAIS5。
本发明由初始化步骤、垃圾回收阶段、数据回收阶段和结束步骤组成,固态盘阵列上设置一个重定向数据映射表和四个功能模块:主控模块、垃圾回收控制模块、请求重定向模块、数据回收模块。所述垃圾回收阶段包括并行的垃圾回收步骤和垃圾回收阶段请求处理步骤,数据回收阶段包括并行的数据回收步骤和数据回收阶段请求处理步骤。
本发明基于充分利用固态盘的高随机读性能和固态盘阵列中的预留空间,保证任意时刻只有一个固态盘在处理垃圾回收操作,从而降低垃圾回收操作对固态盘阵列系统性能的负面影响,并且充分利用热数据的特性,有效地提高垃圾回收时的读性能。当某一个正在处理垃圾挥手操作的固态盘接收到用户读写请求时,本发明将读写请求重定向到由固态盘的预留空间所构成的固态盘阵列R-RAIS0和W-RAIS10中,同时更新相应的校验信息;垃圾回收操作完成之后,将被重定向到固态盘阵列W-RAIS10中的数据回收到固态盘阵列RAIS5上的正确位置。本发明通过充分利用固态盘的高随机读性能特性和固态盘中的预留空间来减轻垃圾回收操作对固态盘阵列系统性能波动的影响,提高固态盘阵列的性能。
另外,本发明能够和固态盘阵列功能模块协同工作,并且可以被嵌入到现有的固态盘阵列系统中,包括硬件和软件固态盘阵列系统。适用于构造具有高性能、高可用性和高可靠性的固态盘存储系统。
附图说明
图1为本发明实施例各步骤关系示意图。
图2为本发明的重定向数据映射表中一条映射信息的数据项示意图。
图3为本发明的初始化步骤过程示意图。
图4为本发明的垃圾回收步骤过程示意图。
图5为本发明的垃圾回收阶段的请求处理步骤过程示意图。
图6为本发明的数据回收步骤过程示意图。
图7为本发明的数据回收阶段的请求处理步骤过程示意图。
图8为本发明的结束步骤过程示意图。
具体实施方式
下面以固态盘阵列RAIS5为例,结合附图对本发明作进一步详细说明。
图1为本发明各步骤关系示意图:初始化步骤完成后进入循环的垃圾回收阶段(即并行的垃圾回收步骤和垃圾回收阶段的请求处理步骤)和数据回收阶段(即并行的数据回收步骤和数据回收阶段的请求处理步骤),当用户发出关闭指令时,进入结束步骤。
如图2所示,重定向数据映射表中,每条映射信息由4个数据项构成:各数据项依次被重定向数据在固态盘阵列的块偏移地址D、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的块偏移地址S、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的标记位R、被重定向数据的长度L。
图3为本发明的初始化步骤过程示意图,进行下述操作:
根据用户指令,创建新固态盘阵列RAIS5或打开已有固态盘阵列RAIS5,主控模块判断该固态盘阵列RAIS5是否为新创建的固态盘阵列,若是,则利用固态盘的预留空间分别创建新的固态盘阵列RAIS10(用于保存写数据,简称W-RAIS10)和固态盘阵列RAIS0(用于保存热点读数据,简称R-RAIS0),然后创建该固态盘阵列的重定向数据映射表并初始化为空,否则打开已有的固态盘阵列W-RAIS10和R-RAIS0,然后读取保存在固态盘阵列成员盘超级块中的重定向数据映射表的映射信息到内存中。
图4为本发明的垃圾回收步骤过程示意图,进行下述步骤:
垃圾回收控制模块主动收集固态盘阵列RAIS5中每块成员固态盘的空闲空间比例,并与预设的阈值(如10%)比较,判断固态盘是否需要进行垃圾回收操作,若没有固态盘需要进行垃圾回收操作,则重新收集固态盘的空闲空间比例并判断固态盘是否需要进行垃圾回收操作;否则,主控模块继续判断固态盘阵列中是否有其他固态盘正在进行垃圾回收操作,若有,则暂停处理该固态盘的垃圾回收操作,重新收集固态盘的空闲空间比例并判断固态盘是否需要进行垃圾回收操作;否则主控模块主动触发垃圾回收控制模块进行该固态盘的垃圾回收操作,并将此信息通知给请求重定向模块,完成垃圾回收操作。
图5为本发明的垃圾回收阶段的请求处理步骤过程示意图,进行下述步骤:
请求重定向模块等待上层用户读写请求,判断该请求是否需要由正在处理垃圾回收操作的固态盘响应,若请求不需要由正在处理垃圾回收操作的固态盘响应,则按固态盘阵列的正常算法响应读写请求;否则判断该请求是否是写请求,若是,则将本应写入正在处理垃圾回收操作的固态盘中的数据写入固态盘阵列W-RAIS10中,同时更新相应的校验信息,并将数据映射信息记录在重定向数据映射表中;否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列R-RAIS0中,若是,则请求重定向模块将读请求发向固态盘阵列R-RAIS0,从固态盘阵列R-RAIS0读取数据,返回给用户;否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列W-RAIS10中,若是,则请求重定向模块将读请求发向固态盘阵列W-RAIS10,从固态盘阵列W-RAIS10读取数据,返回给用户;否则请求重定向模块将读请求发向固态盘阵列RAIS5,读取其他未处理垃圾回收操作的固态盘上的数据,利用RAIS5自身的冗余特性动态重构出正在处理垃圾回收操作的固态盘上的数据,并返回给用户。
图6为本发明的数据回收步骤过程示意图,进行下述步骤:
数据回收模块扫描重定向数据映射表,判断重定向数据映射表是否为空,若是,则数据回收结束;否则数据回收模块从重定向数据映射表中取出一条映射信息,判断该映射信息对应的数据是否位于固态盘阵列W-RAIS10中,若是,则从固态盘阵列W-RAIS10中读取该映射信息对应的数据并写回到固态盘阵列RAIS5的正确位置中,数据回收模块将该映射信息从重定向数据映射表中删除;否则数据回收模块将该映射信息从重定向数据映射表中删除,继续判断重定向数据映射表是否为空。
图7为本发明的数据回收阶段的请求处理步骤过程示意图,进行下述步骤:
请求重定向模块等待上层用户读写请求,判断其类型,若该请求是读请求,若是,则请求重定向模块根据重定向数据映射表判断该读请求要读取的数据是否在固态盘阵列R-RAIS0,若是,则请求重定向模块将读请求发向固态盘阵列R-RAIS0,从其中读取数据,并返回给用户;否则请求重定向模块根据重定向数据映射表判断该读请求所需要的数据是否在固态盘阵列W-RAIS10中,若是,则请求重定向模块将读请求发向固态盘阵列W-RAIS10,从其中读取数据,并返回给用户;否则请求重定向模块将读请求发向固态盘阵列RAIS5,从固态盘阵列RAIS5读取数据,返回给用户;若该请求是写请求,则请求重定向模块判断该写请求是否命中重定向数据映射表,若是,则请求重定向模块将该写请求所命中的映射信息从重定向数据映射表中删除,并将该写请求中的数据写入到固态盘阵列RAIS5,同时更新相应的校验信息;否则请求重定向模块将该写请求中的数据写入到固态盘阵列RAIS5,同时更新相应的校验信息。
图8为本发明结束步骤过程示意图:主控模块将重定向数据映射表保存到固态盘阵列RAIS5的各成员固态盘的超级块中,然后关闭该固态盘阵列设备RAIS5、W-RAIS10和R-RAIS0,释放相关资源。
本发明充分利用固态盘的高随机读性能特性和固态盘中的预留空间以及相应的固态盘阵列方法来减轻垃圾回收操作对固态盘阵列性能波动的负面影响。本发明在固态盘阵列上设置重定向数据映射表和四个功能模块:主控、垃圾回收控制、请求重定向和数据回收,包括初始化步骤、垃圾回收阶段、数据回收阶段和结束步骤。当某一个正在处理垃圾回收操作的固态盘接收到用户读写请求时,本发明将读请求重定向到固态盘的预留空间构成的固态盘阵列R-RAIS0和W-RAIS10中,若数据存在则直接将数据返回给用户,否则重定向模块将请求发到固态盘阵列中通过其他成员固态盘上并通过重构读机制获取读数据;将写请求重定向到固态盘阵列W-RAIS10中也就是将数据写入到固态盘阵列W-RAIS10中,同时更新相应的校验信息;垃圾回收操作完成后,将被重定向到固态盘阵列W-RAIS10中的写数据回收到固态盘阵列上正确的位置。

Claims (8)

1.基于预留空间的固态盘阵列的垃圾回收方法,其特征在于包括以下步骤:
1)初始化步骤;
2)垃圾回收步骤;
3)垃圾回收阶段请求处理步骤;
4)数据回收步骤,当对应的固态盘的垃圾回收操作完成之后,数据回收模块扫描重定向数据映射表;
5)数据回收阶段请求处理步骤;
6)结束步骤。
2.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤1)中,所述初始化步骤的具体方法如下:
(1)根据用户指令,创建新固态盘阵列RAIS5或打开已有固态盘阵列RAIS5;判断固态盘阵列RAIS5是否是新创建的,若是,则转步骤(2),否则转步骤(3);
(2)利用固态盘的预留空间分别创建新的固态盘阵列RAIS10和固态盘阵列RAIS0;转步骤(4);所述固态盘阵列RAIS10用于保存写数据,简称W-RAIS10;所述固态盘阵列RAIS0用于保存热点读数据,简称R-RAIS0;
(3)打开已有的固态盘阵列W-RAIS10和R-RAIS0;转步骤(5);
(4)主控模块创建该固态盘阵列的重定向数据映射表并初始化为空;进行步骤2);
(5)主控模块读取保存在固态盘阵列成员盘超级块中的重定向数据映射表的映射信息到内存中;进行步骤2)。
3.如权利要求2所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤1)第(4)部分中,所述重定向数据映射表包括M条映射信息,每条映射信息由4个数据项构成:各数据项依次为被重定向数据在固态盘阵列RAIS5的块偏移地址、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的块偏移地址、被重定向数据在固态盘阵列R-RAIS0或固态盘阵列W-RAIS10上的标记位、被重定向数据的长度;M为大于等于0的自然数。
4.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤2)中,所述垃圾回收步骤的具体方法为:
(1)垃圾回收控制模块主动收集固态盘阵列RAIS5中每块成员固态盘的空闲空间比例,并与预设的阈值比较,判断固态盘是否需要进行垃圾回收操作,若某个固态盘需要进行垃圾回收操作,则转步骤(2),否则重复步骤(1);所述预设的阈值可为10%;
(2)主控模块判断固态盘阵列RAIS5中是否有其他固态盘正在进行垃圾回收操作,若有,则转步骤(4),否则转步骤(3);
(3)主控模块主动触发垃圾回收控制模块进行所述固态盘的垃圾回收操作,并通知给请求重定向模块,完成垃圾回收操作后,转步骤(4);
(4)暂停处理所述固态盘的垃圾回收操作,转步骤(1)。
5.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤3)中,所述垃圾回收阶段请求处理步骤的具体方法为:
(1)等待上层用户读写请求,判断该请求是否需要由正在处理垃圾回收操作的固态盘响应,若是,则转步骤(2),否则,查找映射表,判断所请求的数据是否已经被回收,若是,则转步骤(8),否则转步骤(5);
(2)判断是否为写请求,若是,则转步骤(3),若不是,则转步骤(4);
(3)将本该写入正在处理垃圾回收操作的固态盘中的数据写入固态盘阵列W-RAIS10中,同时更新相应的校验信息,并将数据映射信息记录在重定向数据映射表中,转步骤(1);
(4)根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列R-RAIS0中,若是,则转步骤(5),否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列W-RAIS10中,若是,则转步骤(6),否则转步骤(7);
(5)请求重定向模块将读请求发向固态盘阵列R-RAIS0,从固态盘阵列R-RAIS0读取数据,返回给用户,转步骤(1);
(6)请求重定向模块将读请求发向固态盘阵列W-RAIS10,从固态盘阵列W-RAIS10读取数据,返回给用户,转步骤(1);
(7)请求重定向模块将读请求发向固态盘阵列RAIS5,读取其他未处理垃圾回收状态操作的固态盘上的数据,利用RAIS5自身的冗余特性动态重构出正在处理垃圾回收操作的固态盘上的数据,并返回给用户;转步骤(1);
(8)按固态盘阵列的正常算法响应读写请求,转步骤(1)。
6.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤4)中,所述数据回收步骤,当对应的固态盘的垃圾回收操作完成之后,数据回收模块扫描重定向数据映射表,具体方法为:
(1)数据回收模块判断重定向数据映射表是否为空,若是,则数据回收结束,转步骤2),否则转步骤(2);
(2)数据回收模块从重定向数据映射表中取出一条映射信息,判断该映射信息对应的数据是否位于固态盘阵列W-RAIS10中,若是,则转步骤(3),否则转步骤(4);
(3)从固态盘阵列W-RAIS10中读取该映射信息对应的数据并写回到固态盘阵列RAIS5的正确位置中,转步骤(4);
(4)数据回收模块将该映射信息从重定向数据映射表中删除,转步骤(1)。
7.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤5)中,所述数据回收阶段请求处理步骤的具体方法为:
(1)数据回收模块判断数据回收是否结束,若是,则本步骤结束,转步骤3),否则等待上层用户读写请求,判断其类型,读请求转步骤(2),写请求转步骤(6);
(2)请求重定向模块根据重定向数据映射表判断该读请求要读取的数据是否在固态盘阵列R-RAIS0中,若是,则转步骤(3),否则根据重定向数据映射表判断读请求要读取的数据是否在固态盘阵列W-RAIS10中,若是,则转步骤(4),否则转步骤(5);
(3)请求重定向模块将读请求发向固态盘阵列R-RAIS0,从其中读取数据,并返回给用户,转步骤(1);
(4)请求重定向模块将读请求发向固态盘阵列W-RAIS10中,从其中读取数据,并返回给用户,转步骤(1);
(5)请求重定向模块将读请求发向固态盘阵列RAIS5,从固态盘阵列RAIS5读取数据,返回给用户,转步骤(1);
(6)请求重定向模块判断该写请求是否命中重定向数据映射表,若是,则转步骤(7),否则转步骤(8);
(7)请求重定向模块将该写请求所命中的映射信息从重定向数据映射表中删除,继续步骤(8);
(8)请求重定向模块将该写请求中的数据写入到固态盘阵列RAIS5,同时更新相应的校验信息,转步骤(1)。
8.如权利要求1所述基于预留空间的固态盘阵列的垃圾回收方法,其特征在于在步骤6)中,所述结束步骤的具体方法为:当用户发出指令关闭固态盘阵列RAIS5时,顺序进行下述步骤:
(1)关闭固态盘阵列RAIS5之前,主控模块将重定向数据映射表保存到固态盘阵列RAIS5的各个成员盘的超级块中;
(2)关闭固态盘阵列设备RAIS5即预留空间构成的固态盘阵列W-RAIS10和R-RAIS0,释放相关的资源。
CN201710673442.6A 2017-08-09 2017-08-09 基于预留空间的固态盘阵列的垃圾回收方法 Pending CN107451069A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710673442.6A CN107451069A (zh) 2017-08-09 2017-08-09 基于预留空间的固态盘阵列的垃圾回收方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710673442.6A CN107451069A (zh) 2017-08-09 2017-08-09 基于预留空间的固态盘阵列的垃圾回收方法

Publications (1)

Publication Number Publication Date
CN107451069A true CN107451069A (zh) 2017-12-08

Family

ID=60491356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710673442.6A Pending CN107451069A (zh) 2017-08-09 2017-08-09 基于预留空间的固态盘阵列的垃圾回收方法

Country Status (1)

Country Link
CN (1) CN107451069A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170614A (zh) * 2018-01-19 2018-06-15 湖南国科微电子股份有限公司 一种避免数据重复回收的方法、装置及固态硬盘
CN109376095A (zh) * 2018-12-04 2019-02-22 中国航空工业集团公司西安航空计算技术研究所 一种基于flash区域地址映射机制的垃圾回收方法
CN109739775A (zh) * 2018-11-20 2019-05-10 北京航空航天大学 基于多阶段加锁的闪存转换层混合垃圾回收方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359299A (zh) * 2007-07-31 2009-02-04 英业达股份有限公司 一种映像廉价磁盘冗余阵列设备的写操作的方法
CN101436149A (zh) * 2008-12-19 2009-05-20 华中科技大学 磁盘阵列数据重建方法
CN101458613A (zh) * 2008-12-31 2009-06-17 成都市华为赛门铁克科技有限公司 一种混合分级阵列的实现方法、混合分级阵列和存储系统
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
US20130339578A1 (en) * 2012-06-14 2013-12-19 Kabushiki Kaisha Toshiba Server and drive control device
CN103530237A (zh) * 2013-10-31 2014-01-22 厦门大学 一种固态盘阵列的垃圾回收方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359299A (zh) * 2007-07-31 2009-02-04 英业达股份有限公司 一种映像廉价磁盘冗余阵列设备的写操作的方法
CN101436149A (zh) * 2008-12-19 2009-05-20 华中科技大学 磁盘阵列数据重建方法
CN101458613A (zh) * 2008-12-31 2009-06-17 成都市华为赛门铁克科技有限公司 一种混合分级阵列的实现方法、混合分级阵列和存储系统
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
US20130339578A1 (en) * 2012-06-14 2013-12-19 Kabushiki Kaisha Toshiba Server and drive control device
CN103530237A (zh) * 2013-10-31 2014-01-22 厦门大学 一种固态盘阵列的垃圾回收方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170614A (zh) * 2018-01-19 2018-06-15 湖南国科微电子股份有限公司 一种避免数据重复回收的方法、装置及固态硬盘
CN108170614B (zh) * 2018-01-19 2022-01-11 湖南国科微电子股份有限公司 一种避免数据重复回收的方法、装置及固态硬盘
CN109739775A (zh) * 2018-11-20 2019-05-10 北京航空航天大学 基于多阶段加锁的闪存转换层混合垃圾回收方法
CN109376095A (zh) * 2018-12-04 2019-02-22 中国航空工业集团公司西安航空计算技术研究所 一种基于flash区域地址映射机制的垃圾回收方法
CN109376095B (zh) * 2018-12-04 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种基于flash区域地址映射机制的垃圾回收方法

Similar Documents

Publication Publication Date Title
CN103530237B (zh) 一种固态盘阵列的垃圾回收方法
CN104572478B (zh) 数据存取方法和数据存取装置
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
JP5445682B2 (ja) ストレージシステム
US8891298B2 (en) Lifetime mixed level non-volatile memory system
CN104049908B (zh) 基于动态颗粒的中间存储
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US11126561B2 (en) Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
EP0538288A1 (en) SYSTEM FOR RELEASING THE SPACE OF DELETED FILES FOR A DYNAMIC IMAGE VIRTUAL DATA STORAGE SUBSYSTEM.
CN107656875A (zh) 作为系统盘的固态硬盘缩短上电时间的方法及系统
Manzanares et al. {ZEA}, A Data Management Approach for {SMR}
CN107025071A (zh) 非易失性存储器装置及其垃圾收集方法
CN106528001A (zh) 一种基于非易失性存储器和软件raid的缓存系统
CN102483714A (zh) 恢复索引页
CN101620517B (zh) 数据写入方法和装置
CN104854554A (zh) 储存转换层
CN107273046B (zh) 一种基于固态盘阵列的数据处理方法及系统
US20060294339A1 (en) Abstracted dynamic addressing
CN107451069A (zh) 基于预留空间的固态盘阵列的垃圾回收方法
US20120131264A1 (en) Storage device
CN109144899A (zh) 用于管理表恢复的方法
US20170017405A1 (en) Systems and methods for improving flash-oriented file system garbage collection
CN104166601A (zh) 一种存储数据的备份方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171208