CN107402890B - 一种基于固态盘阵列和缓存的数据处理方法及系统 - Google Patents

一种基于固态盘阵列和缓存的数据处理方法及系统 Download PDF

Info

Publication number
CN107402890B
CN107402890B CN201710604527.9A CN201710604527A CN107402890B CN 107402890 B CN107402890 B CN 107402890B CN 201710604527 A CN201710604527 A CN 201710604527A CN 107402890 B CN107402890 B CN 107402890B
Authority
CN
China
Prior art keywords
data
data block
cache
stripe
entry
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.)
Active
Application number
CN201710604527.9A
Other languages
English (en)
Other versions
CN107402890A (zh
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201710604527.9A priority Critical patent/CN107402890B/zh
Publication of CN107402890A publication Critical patent/CN107402890A/zh
Application granted granted Critical
Publication of CN107402890B publication Critical patent/CN107402890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于固态盘阵列和缓存的数据处理方法及装置,包括:接收写请求,指示固态盘和缓存写入所述写请求对应的数据;通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据;当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述芯片计算所述第一条带的校验信息并将该校验信息写入所述芯片中;当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据。本发明通过缓存延迟校验块更新,改善芯片阵列小写性能和擦除次数问题。

Description

一种基于固态盘阵列和缓存的数据处理方法及系统
技术领域
本发明属于计算机存储技术领域,更具体地,涉及一种基于固态盘阵列和缓存的数据处理方法及系统。
背景技术
传统磁盘由于受到机械特性的限制,读写速度的提升已经发展到了瓶颈。新型电子存储设备固态盘的具有很好的读写性能,但是固态盘的容量小、擦写次数有限。独立冗余磁盘阵列(Redundant Array of Independent Disks,RAID)技术把多块独立的物理硬盘按不同的方式组合起来形成一个大容量、高性能逻辑硬盘。RAID根据容错能力和数据布局的不同可以分为不同的阵列级别(RAID Levels)。RAID5是RAID Levels中最常用的一种级别。为了提升单个固态盘的性能和可靠性,很多研究在固态盘内部使用RAID技术,将内部的芯片组成阵列。
RAID5阵列具有高性能和高可靠性,但是它存在着“小写”性能问题。RAID5处理一次“小写”请求时,需要2次读请求和2次写请求来完成用户的请求。因此,RAID5的“小写”性能很差。同时,由于异地更新方式的影响,单个固态盘的随机写性能很差。所以,在固态盘内部使用芯片组成RAID5阵列时,需要特别考虑小写请求的处理。在RAID5中每次写请求都需要更新校验块,因此,校验块会被频繁地更新。而固态盘芯片的擦写次数有限,所以,在固态盘内使用RAID5技术还需要注意校验块的频繁更新问题。
现有研究为了缓解“小写”问题和校验块频繁擦除次数问题,在固态盘内增加一个非易失性缓存,通过存放部分校验信息,来延迟芯片阵列中校验块的更新,达到提升“小写”性能和减少对校验块擦除次数的目的。如果一个数据块被更新时,在缓存中有对应的部分校验信息,为了计算新的部分校验信息,上述方法需要读取芯片阵列中的一些数据。该研究忽略了真实负载局部性原理,一个数据块被更新时,在不久将来会被再次更新,这种情况下,上述方法就会产生很多额外的读请求。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有技术由于更新数据块在缓存中有对应校验信息而带来的额外读操作的技术问题。
为实现上述目的,第一方面,本发明提供了一种基于固态盘阵列和缓存的数据处理方法,包括:
接收写请求,指示固态盘和缓存写入所述写请求对应的数据,所述固态盘包括多个芯片组成的阵列,所述多个芯片用于承载多个条带,每个条带包括的多个候选写入数据位置分散在所述多个芯片,每个条带包括的多个候选写入数据位置的逻辑地址相同,所述固态盘中前后两次写入的逻辑地址相同的数据采用异地更新策略写在不同的芯片中,所述缓存中前后两次写入的同一个芯片的数据采用本地更新策略写入相同的位置;通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据;当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述多个芯片计算所述第一条带的校验信息并将该校验信息写入所述多个芯片中;当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据。
其中,所述固态盘内部使用RAID技术。
本发明在固态盘内使用芯片组成RAID5阵列,并增加一个缓存用于存放新的数据而不是部分校验信息,去掉了当数据命中缓存时产生的读操作,从而达到进一步提升性能的目的。本发明使用RAID技术提升固态盘的性能和可靠性,通过缓存延迟校验块更新,改善芯片阵列小写性能和擦除次数问题。
可选地,该方法还包括:当所述缓存失效时,重新计算所述哈希表指向的条带的校验信息并在所述芯片中写入重新计算的校验信息。
可选地,所述缓存为非易失内存。
可选地,每个条带对应一个校验信息,每个条带的校验信息写入其包括的多个候选写入数据位置中的一个候选写入数据位置。
可选地,所述第一条带在所述缓存中的包括的数据块最多为:缓存中包括多个条带的数据块,每个条带在缓存中包括的数据块的数目不同,在缓存中包括的数据块的数目最多的条带则为第一条带。
可选地,接收写请求,指示固态盘和缓存写入所述写请求对应的数据,包括:
步骤(1.1),将用户写请求按照条带进行分解后,挂载到对应的条带上;
步骤(1.2),对有写请求的条带进行处理,首先在哈希表中查找是否有对应的条带条目,如果有就执行步骤(1.4),否则就新增一个条带条目,填充新增条带的编号s_num、新增条带在缓存中数据块的个数count、新增条带指向数据块条目的指针p_blk以及指向下一个条带条目next各个域值后插入哈希表中,继续步骤(1.3);
步骤(1.3),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块在芯片中的逻辑地址LBA、数据块在缓存中的逻辑地址C_LBA以及指向下一个数据块条目next各个阈值后插入到对应的p_blk链表中,所述p_blk链表指向的数据块条目都属于该新增条带中的数据块,执行步骤(1.5);
步骤(1.4),判断要写的数据块在对应p_blk链表中是否存在对应数据块条目,如果有,则将数据写到缓存中C_LBA指向的位置,否则继续步骤(1.5);
步骤(1.5),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中;
步骤(1.6),判断要写的数据块在地址映射表中是否有对应条目,如果没有,则在新分配一个物理页后,在地址映射表中新增一个条目,并填充要写数据块的逻辑页号LPN,要写数据块的物理页号PPN,逻辑页对应的校验信息的物理页号PPPN,跳转步骤(1.9),如果有对应条目,继续步骤(1.7);
步骤(1.7),判断该条目中逻辑页对应的“无效”数据页的物理页号Old PPN是否为空,如果为空,则将Old PPN的值设置为PPN的值;
步骤(1.8),为要写的数据块分配一个物理页,并修改地址映射表中的PPN;
步骤(1.9),将要写的数据块写入到对应的物理页中。
可选地,当有芯片失效时,具体通过以下步骤恢复失效的数据:
步骤(2.1),对失效芯片中的每个数据块进行恢复;
步骤(2.2),取出失效数据块对应的条带,如果该条带在哈希表中没有对应的条带条目,则执行到步骤(2.4),否则,继续步骤(2.3);
步骤(2.3),判断失效数据块在对应条带条目的p_blk链表中是否有对应的数据块条目,如果有,则直接从缓存中读取对应的数据块作为恢复数据,并执行步骤(2.5),否则,继续步骤(2.4);
步骤(2.4),使用条带中除去失效数据块外的数据块和校验块的旧数据进行异或获取恢复数据,如果条带中除去失效数据块外的数据块是被更新过的,被更新过数据块对应的旧数据可以通过地址映射表中增加的Old PPN域所指的位置读取出来;
步骤(2.5),跳至步骤(2.1),直到所有数据恢复完成。
第二方面,本发明提供了一种基于固态盘阵列和缓存的数据处理系统,包括:固态盘、缓存、请求处理模块以及数据重建模块;
所述固态盘包括多个芯片组成的阵列,所述多个芯片用于承载多个条带,每个条带包括的多个候选写入数据位置分散在所述多个芯片,每个条带包括的多个候选写入数据位置的逻辑地址相同,所述固态盘中前后两次写入的逻辑地址相同的数据采用异地更新策略写在不同的芯片中;
所述缓存中前后两次写入的同一个芯片的数据采用本地更新策略写入相同的位置;
请求处理模块,用于接收写请求,指示固态盘和缓存写入所述写请求对应的数据;
所述请求处理模块,还用于通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据;
所述请求处理模块,还用于当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述多个芯片计算所述第一条带的校验信息并将该校验信息写入所述多个芯片中;
所述数据重建模块,用于当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据。
可选地,所述请求处理模块,还用于当所述缓存失效时,重新计算所述哈希表指向的条带的校验信息并在所述芯片中写入重新计算的校验信息。
可选地,所述请求处理模块用于通过执行以下步骤完成写请求数据的写入:
步骤(1.1),将用户写请求按照条带进行分解后,挂载到对应的条带上;
步骤(1.2),对有写请求的条带进行处理,首先在哈希表中查找是否有对应的条带条目,如果有就执行步骤(1.4),否则就新增一个条带条目,填充新增条带的编号s_num、新增条带在缓存中数据块的个数count、新增条带指向数据块条目的指针p_blk以及指向下一个条带条目next各个域值后插入哈希表中,继续步骤(1.3);
步骤(1.3),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块在芯片中的逻辑地址LBA、数据块在缓存中的逻辑地址C_LBA以及指向下一个数据块条目next各个阈值后插入到对应的p_blk链表中,所述p_blk链表指向的数据块条目都属于该新增条带中的数据块,执行步骤(1.5);
步骤(1.4),判断要写的数据块在对应p_blk链表中是否存在对应数据块条目,如果有,则将数据写到缓存中C_LBA指向的位置,否则继续步骤(1.5);
步骤(1.5),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中;
步骤(1.6),判断要写的数据块在地址映射表中是否有对应条目,如果没有,则在新分配一个物理页后,在地址映射表中新增一个条目,并填充要写数据块的逻辑页号LPN,要写数据块的物理页号PPN,逻辑页对应的校验信息的物理页号PPPN,跳转步骤(1.9),如果有对应条目,继续步骤(1.7);
步骤(1.7),判断该条目中逻辑页对应的“无效”数据页的物理页号Old PPN是否为空,如果为空,则将Old PPN的值设置为PPN的值;
步骤(1.8),为要写的数据块分配一个物理页,并修改地址映射表中的PPN;
步骤(1.9),将要写的数据块写入到对应的物理页中。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)相比现有的技术,本发明充分考虑了真实负载的局部性原理,在缓存中存放的是新的数据,而不是对应的部分校验信息,减少了由于命中缓存而需要额外的读操作,进一步提升了小写性能。
(2)相比现有的技术,本发明在某个芯片发生失效时,其数据恢复过程更加简单。如果失效数据页在缓存中,可以直接读取,而现有技术还需要读取部分校验信息其它相关的数据页来进行计算。所以,本发明可以减少重构时间。
(3)相比现有的技术,本发明的缓存可以是内存,当缓存失效时芯片阵列只需要对校验块延迟更新的条带重新计算新的校验块即可。现有的技术缓存是非易失性内存,它的价格昂贵。
附图说明
图1为本发明实施例提供的基于固态盘和缓存的数据处理方法流程示意图;
图2为本发明实施例提供的系统架构示意图;
图3为本发明实施例提供的哈希链表数据结构示意图;
图4为本发明实施例提供的地址映射表数据结构示意图;
图5为本发明实施例提供的写请求处理流程图;
图6为本发明实施例提供的数据恢复流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的基于固态盘阵列的数据处理方法流程示意图,如图1所示,包括步骤S10至步骤S40。
S10,接收写请求,指示固态盘和缓存写入所述写请求对应的数据,所述固态盘包括多个芯片组成的阵列,所述多个芯片用于承载多个条带,每个条带包括的多个候选写入数据位置分散在所述多个芯片,每个条带包括的多个候选写入数据位置的逻辑地址相同,所述固态盘中前后两次写入的逻辑地址相同的数据采用异地更新策略写在不同的芯片中,所述缓存中前后两次写入的同一个芯片的数据采用本地更新策略写入相同的位置。
S20,通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据。
S30,当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述多个芯片计算所述第一条带的校验信息并将该校验信息写入所述多个芯片中。
S40,当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据。
具体可参照下述图2-图6中的详细介绍,在此不做赘述。
如图2所示,本发明主要由阵列控制器100和固态盘内部硬件200组成。固态盘内部硬件200包含一个缓存201和一个芯片阵列202,其中芯片阵列由闪存芯片2021、2022、2023…202n组成RAID5级别阵列。控制器100主要包含请求处理模块110、哈希表120、数据重建模块130、RAID5其它功能模块140和地址映射表150组成。
请求处理模块110主要负责处理用户写请求。数据重建模块130主要负责在芯片阵列202中某个芯片失效后进行数据恢复。哈希表120用于记录缓存中数据块在缓存和芯片阵列中逻辑地址。地址映射表150主要用于记录逻辑页对应的“无效”数据的物理地址。
图3所示为本发明实施例提供的哈希表120数据结构示意图,主要包括表头121、条带条目122和数据块条目123。表头121由若干节点1210、1211、1213…121n组成。每个节点指向一个条带条目122链表。每个条带条目122由4个域s_num 1220、count 1221、p_blk 1222和next 1223组成,其中s_num 1220为该条带的编号;count 1221为该条带在缓存中数据块的个数;p_blk 1222是一个指向数据块条目123的指针,p_blk 1222链表指向的数据块条目都属于该条带中的数据块;next 1223指向下一个条带条目。每个数据块条目123由3个域LBA 1230、C_LBA 1231和next 1232组成,其中LBA 1230是该数据块在芯片阵列中的逻辑地址;C_LBA 1231是该数据块在缓存中的逻辑地址;next 1232指向下一个数据块条目。
图4所示为本发明实施例提供的地址映射表150的数据结构示意图。地址映射表150由若干数据页1501组成,数据页1501包含4个域:LPN 1502、PPN 1503、Old PPN 1504和PPPN 1505。LPN 1502为该数据页的逻辑页号,PPN 1503为该数据页的物理页号,Old PPN1504为该逻辑页对应的“无效”数据页的物理页号,PPPN 1505为该逻辑页对应的校验信息的物理页号。N个闪存芯片组成的芯片阵列的由若干条带1506组成。每个条带1506包含N-1个数据页。
如图5所示,本发明实施例提供的用户写请求处理流程示意图,包括以下步骤:
步骤(1.1)将用户写请求按照条带进行分解后,挂载到对应的条带上。
步骤(1.2)对有写请求的条带进行处理,首先在哈希表120中查找是否有对应的条带条目122,如果有就跳转步骤(1.4),否则就新增一个条带条目122,填充s_num、count、p_blk和next域后插入哈希表中,继续步骤(1.3)。
步骤(1.3)新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中,跳转步骤(1.5)。
步骤(1.4)判断要写的数据块在对应p_blk链表中是否存在对应数据块条目123。如果有,则将数据写到缓存中C_LBA指向的位置,否则继续步骤(1.5)。
步骤(1.5)新增一个数据块条目123,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中。
步骤(1.6)判断要写的数据块在地址映射表中是否有对应条目1501。如果没有,则在新分配一个物理页后,在地址映射表中新增一个条目1501,并填充LPN、PPN和PPPN,跳转步骤(1.9)。如果有对应条目,继续步骤(1.7)。
步骤(1.7)判断该条目中的Old PPN是否为空。如果为空,则将Old PPN的值设置为PPN的值。
步骤(1.8)为新数据分配一个物理页,并修改地址映射表中的PPN。
步骤(1.9)将数据写入到对应的物理页中。
当缓存写满后需要替换缓存中的数据块时,采用的替换策略依赖于条带中数据块在缓存中的数量。这个数量可以通过哈希表120中的条带条目122包含的域值count 1221获取。如果count 1221的值最大,那么优先替换这个条带条目122中p_blk 1222指向的那些数据块。一个条带中的数据块被替换时,芯片阵列中这个条带需要重新计算新的校验信息。
另外,本发明实施例提供的芯片阵列中某个芯片失效后的数据恢复步骤如图6所示,芯片阵列202成员盘失效后的数据恢复步骤具体如下:
(2.1)对失效芯片中的每个数据块进行恢复,直到所有数据恢复完成。
(2.2)取出失效数据块对应的条带,如果该条带在哈希表120中没有对应的条带条目122,则跳转到步骤(2.4),否则,继续步骤(2.3)。
(2.3)判断失效数据块在对应条带条目122的p_blk链表中是否有对应的数据块条目123。如果有,则直接从缓存中读取对应的数据块作为恢复数据,跳转步骤(2.5),否则,继续步骤(2.4)。
(2.4)使用条带中其它数据块和校验块的旧数据进行异或获取。如果条带中其它数据块被更新过的,它们对应的旧数据可以通过地址映射表150中增加的Old PPN域所指的位置读取出来。
(2.5)跳至步骤(2.1)。
当缓存失效后,通过哈希表120中的条带条目122可以请求芯片阵列中校验块被延迟更新的条带编号1220,读取所述条带中所有数据块的最新数据,所述最新数据为地址映射表150中的PPN 1503指向的数据,然后将这些数据进行异或,得到的结果写入校验块对应的逻辑地址。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于固态盘阵列和缓存的数据处理方法,其特征在于,包括:
接收写请求,指示固态盘和缓存写入所述写请求对应的数据,所述固态盘包括多个芯片组成的阵列,所述多个芯片用于承载多个条带,每个条带包括的多个候选写入数据位置分散在所述多个芯片,每个条带包括的多个候选写入数据位置的逻辑地址相同,所述固态盘中前后两次写入的逻辑地址相同的数据采用异地更新策略写在不同的芯片中,所述缓存中前后两次写入的同一个芯片的数据采用本地更新策略写入相同的位置;
通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据;
当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述多个芯片计算所述第一条带的校验信息并将该校验信息写入所述多个芯片中;
当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据;
接收写请求,指示固态盘和缓存写入所述写请求对应的数据,包括:
步骤(1.1),将用户写请求按照条带进行分解后,挂载到对应的条带上;
步骤(1.2),对有写请求的条带进行处理,首先在哈希表中查找是否有对应的条带条目,如果有就执行步骤(1.4),否则就新增一个条带条目,填充新增条带的编号s_num、新增条带在缓存中数据块的个数count、新增条带指向数据块条目的指针p_blk以及指向下一个条带条目next各个域值后插入哈希表中,继续步骤(1.3)所述哈希表用于记录缓存中数据块在缓存和芯片阵列中逻辑地址;
步骤(1.3),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块在芯片中的逻辑地址LBA、数据块在缓存中的逻辑地址C_LBA以及指向下一个数据块条目next各个阈值后插入到对应的p_blk链表中,所述p_blk链表指向的数据块条目都属于该新增条带中的数据块,执行步骤(1.5);
步骤(1.4),判断要写的数据块在对应p_blk链表中是否存在对应数据块条目,如果有,则将数据写到缓存中C_LBA指向的位置,否则继续步骤(1.5);
步骤(1.5),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中;
步骤(1.6),判断要写的数据块在地址映射表中是否有对应条目,如果没有,则在新分配一个物理页后,在地址映射表中新增一个条目,并填充要写数据块的逻辑页号LPN,要写数据块的物理页号PPN,逻辑页对应的校验信息的物理页号PPPN,跳转步骤(1.9),如果有对应条目,继续步骤(1.7);所述地址映射表用于记录逻辑页对应的“无效”数据的物理地址;
步骤(1.7),判断该条目中逻辑页对应的“无效”数据页的物理页号Old PPN是否为空,如果为空,则将Old PPN的值设置为PPN的值;
步骤(1.8),为要写的数据块分配一个物理页,并修改地址映射表中的PPN;
步骤(1.9),将要写的数据块写入到对应的物理页中。
2.根据权利要求1所述的基于固态盘阵列和缓存的数据处理方法,其特征在于,还包括:
当所述缓存失效时,重新计算所述哈希表指向的条带的校验信息并在所述芯片中写入重新计算的校验信息。
3.根据权利要求1所述的基于固态盘阵列和缓存的数据处理方法,其特征在于,所述缓存为非易失内存。
4.根据权利要求1所述的基于固态盘阵列和缓存的数据处理方法,其特征在于,每个条带对应一个校验信息,每个条带的校验信息写入其包括的多个候选写入数据位置中的一个候选写入数据位置。
5.根据权利要求1至4任一项所述的基于固态盘阵列和缓存的数据处理方法,其特征在于,所述第一条带在所述缓存中的包括的数据块最多为:缓存中包括多个条带的数据块,每个条带在缓存中包括的数据块的数目不同,在缓存中包括的数据块的数目最多的条带则为第一条带。
6.根据权利要求1所述的基于固态盘阵列和缓存的数据处理方法,其特征在于,当有芯片失效时,具体通过以下步骤恢复失效的数据:
步骤(2.1),对失效芯片中的每个数据块进行恢复;
步骤(2.2),取出失效数据块对应的条带,如果该条带在哈希表中没有对应的条带条目,则执行到步骤(2.4),否则,继续步骤(2.3);
步骤(2.3),判断失效数据块在对应条带条目的p_blk链表中是否有对应的数据块条目,如果有,则直接从缓存中读取对应的数据块作为恢复数据,并执行步骤(2.5),否则,继续步骤(2.4);
步骤(2.4),使用条带中除去失效数据块外的数据块和校验块的旧数据进行异或获取恢复数据,如果条带中除去失效数据块外的数据块是被更新过的,被更新过数据块对应的旧数据通过地址映射表中增加的Old PPN域所指的位置读取出来;
步骤(2.5),跳至步骤(2.1),直到所有数据恢复完成。
7.一种基于固态盘阵列和缓存的数据处理系统,其特征在于,包括:固态盘、缓存、请求处理模块以及数据重建模块;
所述固态盘包括多个芯片组成的阵列,所述多个芯片用于承载多个条带,每个条带包括的多个候选写入数据位置分散在所述多个芯片,每个条带包括的多个候选写入数据位置的逻辑地址相同,所述固态盘中前后两次写入的逻辑地址相同的数据采用异地更新策略写在不同的芯片中;
所述缓存中前后两次写入的同一个芯片的数据采用本地更新策略写入相同的位置;
请求处理模块,用于接收写请求,指示固态盘和缓存写入所述写请求对应的数据;
所述请求处理模块,还用于通过哈希表指示所述缓存中存储的每个芯片最后一次写入的数据;
所述请求处理模块,还用于当所述缓存被写满时,优先替换第一条带在所述缓存中的数据块,所述第一条带在所述缓存中的包括的数据块最多,当所述第一条带被替换时,指示所述多个芯片计算所述第一条带的校验信息并将该校验信息写入所述多个芯片中;
所述数据重建模块,用于当有芯片失效时,通过所述哈希表恢复该失效芯片中最后一次写入的数据,通过未失效芯片中的数据和校验信息恢复失效芯片中对应逻辑地址上的数据;
所述请求处理模块用于通过执行以下步骤完成写请求数据的写入:
步骤(1.1),将用户写请求按照条带进行分解后,挂载到对应的条带上;
步骤(1.2),对有写请求的条带进行处理,首先在哈希表中查找是否有对应的条带条目,如果有就执行步骤(1.4),否则就新增一个条带条目,填充新增条带的编号s_num、新增条带在缓存中数据块的个数count、新增条带指向数据块条目的指针p_blk以及指向下一个条带条目next各个域值后插入哈希表中,继续步骤(1.3);所述哈希表用于记录缓存中数据块在缓存和芯片阵列中逻辑地址;
步骤(1.3),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块在芯片中的逻辑地址LBA、数据块在缓存中的逻辑地址C_LBA以及指向下一个数据块条目next各个阈值后插入到对应的p_blk链表中,所述p_blk链表指向的数据块条目都属于该新增条带中的数据块,执行步骤(1.5);
步骤(1.4),判断要写的数据块在对应p_blk链表中是否存在对应数据块条目,如果有,则将数据写到缓存中C_LBA指向的位置,否则继续步骤(1.5);
步骤(1.5),新增一个数据块条目,为数据块在缓存中分配一个位置,并填充数据块中各个域值后插入到对应的p_blk链表中;
步骤(1.6),判断要写的数据块在地址映射表中是否有对应条目,如果没有,则在新分配一个物理页后,在地址映射表中新增一个条目,并填充要写数据块的逻辑页号LPN,要写数据块的物理页号PPN,逻辑页对应的校验信息的物理页号PPPN,跳转步骤(1.9),如果有对应条目,继续步骤(1.7);所述地址映射表用于记录逻辑页对应的“无效”数据的物理地址;
步骤(1.7),判断该条目中逻辑页对应的“无效”数据页的物理页号Old PPN是否为空,如果为空,则将Old PPN的值设置为PPN的值;
步骤(1.8),为要写的数据块分配一个物理页,并修改地址映射表中的PPN;
步骤(1.9),将要写的数据块写入到对应的物理页中。
8.根据权利要求7所述的基于固态盘阵列和缓存的数据处理系统,其特征在于,所述请求处理模块,还用于当所述缓存失效时,重新计算所述哈希表指向的条带的校验信息并在所述芯片中写入重新计算的校验信息。
CN201710604527.9A 2017-07-24 2017-07-24 一种基于固态盘阵列和缓存的数据处理方法及系统 Active CN107402890B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710604527.9A CN107402890B (zh) 2017-07-24 2017-07-24 一种基于固态盘阵列和缓存的数据处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710604527.9A CN107402890B (zh) 2017-07-24 2017-07-24 一种基于固态盘阵列和缓存的数据处理方法及系统

Publications (2)

Publication Number Publication Date
CN107402890A CN107402890A (zh) 2017-11-28
CN107402890B true CN107402890B (zh) 2020-10-02

Family

ID=60402416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710604527.9A Active CN107402890B (zh) 2017-07-24 2017-07-24 一种基于固态盘阵列和缓存的数据处理方法及系统

Country Status (1)

Country Link
CN (1) CN107402890B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347613B (zh) * 2019-06-26 2021-06-11 华中科技大学 多租户固态盘中实现raid的方法、控制器及多租户固态盘
CN116583827A (zh) * 2021-12-08 2023-08-11 华为技术有限公司 数据存取方法、装置、磁盘控制器、磁盘和数据存储系统
CN115129267B (zh) * 2022-09-01 2023-02-03 苏州浪潮智能科技有限公司 一种域地址变更方法、装置、设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049222A (zh) * 2012-12-28 2013-04-17 中国船舶重工集团公司第七0九研究所 一种raid5的写io优化处理方法
CN103488583A (zh) * 2013-09-09 2014-01-01 华中科技大学 一种高性能高可靠的固态盘实现方法
US20160147601A1 (en) * 2014-11-21 2016-05-26 Huazhong University Of Science And Technology Method for scheduling high speed cache of asymmetric disk array

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049222A (zh) * 2012-12-28 2013-04-17 中国船舶重工集团公司第七0九研究所 一种raid5的写io优化处理方法
CN103488583A (zh) * 2013-09-09 2014-01-01 华中科技大学 一种高性能高可靠的固态盘实现方法
US20160147601A1 (en) * 2014-11-21 2016-05-26 Huazhong University Of Science And Technology Method for scheduling high speed cache of asymmetric disk array

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A Stripe-Oriented Write Performance Optimization for RAID-Structured Storage Systems;Linjun Mei等;《2016 IEEE International Conference on Networking, Architecture and Storage (NAS)》;20160810;第1-10页 *

Also Published As

Publication number Publication date
CN107402890A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
US11461233B2 (en) Handling asynchronous power loss in a memory sub-system that programs sequentially
US10430084B2 (en) Multi-tiered memory with different metadata levels
US11119940B2 (en) Sequential-write-based partitions in a logical-to-physical table cache
US8347138B2 (en) Redundant data distribution in a flash storage device
US9135181B2 (en) Management of cache memory in a flash cache architecture
US8612721B2 (en) Semiconductor memory controlling device
KR101459861B1 (ko) 스트라이프 기반 메모리 작동
US7856528B1 (en) Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US9430329B2 (en) Data integrity management in a data storage device
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
JP6518191B2 (ja) アドレス断片化に対するメモリ・セグメントのリマッピング
JP6018696B2 (ja) 半導体ストレージ
US8341336B2 (en) Region-based management method of non-volatile memory
US8321624B2 (en) Memory device and management method of memory device
US9229803B2 (en) Dirty cacheline duplication
US8838937B1 (en) Methods, systems and computer readable medium for writing and reading data
US20140068208A1 (en) Separately stored redundancy
CN109952565B (zh) 内存访问技术
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
CN107402890B (zh) 一种基于固态盘阵列和缓存的数据处理方法及系统
CN112463647A (zh) 使用散列来减小前向映射表的大小
CN107885620B (zh) 一种提高固态盘阵列性能和可靠性的方法及系统
US11847337B2 (en) Data parking for ZNS devices
CN111190834B (zh) 一种非对称读延迟感知的数据放置方法
CN107608626B (zh) 一种基于ssd raid阵列的多级缓存及缓存方法

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
GR01 Patent grant
GR01 Patent grant