CN115543868A - 一种数据存储方法、装置、电子设备及可读介质 - Google Patents

一种数据存储方法、装置、电子设备及可读介质 Download PDF

Info

Publication number
CN115543868A
CN115543868A CN202211483092.4A CN202211483092A CN115543868A CN 115543868 A CN115543868 A CN 115543868A CN 202211483092 A CN202211483092 A CN 202211483092A CN 115543868 A CN115543868 A CN 115543868A
Authority
CN
China
Prior art keywords
data
storage area
block address
mapping table
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.)
Granted
Application number
CN202211483092.4A
Other languages
English (en)
Other versions
CN115543868B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211483092.4A priority Critical patent/CN115543868B/zh
Publication of CN115543868A publication Critical patent/CN115543868A/zh
Application granted granted Critical
Publication of CN115543868B publication Critical patent/CN115543868B/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0629Configuration or reconfiguration of storage systems
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供了一种数据存储方法、装置、电子设备及可读介质,所述方法包括:通过在固态硬盘中创建与预设的暂存区对应的第二映射表,使得当接收到主机发送的第一数据复写请求时,可以从第一映射表中查找第一数据复写请求对应的第一物理块地址,其对应的数据作为存储到暂存区的旧数据,并将暂存区中旧数据所处的第二物理块地址更新到第二映射表中,从而实现将被复写的旧数据存储起来,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区中存储的旧数据。

Description

一种数据存储方法、装置、电子设备及可读介质
技术领域
本发明涉及数据存储技术领域,特别是涉及一种数据存储方法、一种数据存储装置、一种电子设备以及一种计算机可读介质。
背景技术
全闪存储系统中,存储软件栈对于某笔已经写完的数据,复写该笔数据通常有两种方式:一种是重新分配LBA,在新分配的LBA上复写该笔数据;另外一种是覆盖写,直接在该笔数据的原LBA上复写该笔数据。对于上述采用覆盖写方式复写数据的情况,存储软件栈往往采用RAID条带形式。比如将该笔数据采用(4+2)RAID条带复写,即写6笔RAID条带数据,在写入的过程中,若存储系统掉电则会使至少一笔RAID条带数据写入失败,此时需要对写入失败的数据进行重写,但因为此时SSD中的这6笔数据是写入成功的新数据和写入失败的旧数据的混合体,无法明确知道哪些数据是写入失败的,所以最理想的处理方法是回退到复写前的版本。
但现有技术中,针对这种覆盖写数据但写入失败的情况,并没有可以回溯原数据的方法。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据存储方法、一种数据存储装置、一种电子设备以及一种计算机可读介质。
本发明实施例公开了一种数据存储方法,应用于全闪存储系统,所述全闪存储系统包括固态硬盘,所述固态硬盘设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区设置有第一物理块地址,所述第一映射表用于记录逻辑块地址与所述第一物理块地址的映射关系,所述逻辑块地址为主机向所述固态硬盘发送数据写入请求时所携带的数据编址,包括:
在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
可选地,所述第一数据复写请求携带有第一逻辑块地址;当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据,包括:
采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
将所述正常存储区中所述第一物理块地址上的旧数据作为所述暂存区的数据。
可选地,所述第二映射表包括至少一个空条目位置,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
将所述新的条目更新到目标空条目位置。
可选地,所述第二映射表包括至少一个由逻辑块地址和第二物理块地址构成的条目,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成新的条目;
若找到所述第一条目,则将所述第一条目无效化,并采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成所述新的条目。
可选地,所述暂存区包括第一存储区和第二存储区,所述第一存储区为固化存储区,所述第二存储区为缓存区,所述方法还包括:
若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
可选地,所述方法还包括:
在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
可选地,所述第一数据复写请求还携带有新数据,所述方法还包括:
在所述正常存储区中为所述新数据分配第一物理块地址;
将所述新数据写入所述正常存储区的所述第一物理块地址;
采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
可选地,所述正常存储区包括第三存储区和第四存储区,所述第三存储区为固化存储区,所述第四存储区为缓存区,所述第四存储区包括预设数量的第一物理块地址,所述方法还包括:
当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
可选地,所述方法还包括:
在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
采用所述暂存区的所述数据更新所述第二映射表。
可选地,所述至少一个空条目位置按照预设序号排列,所述第二映射表中设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
可选地,所述方法还包括:
接收主机发送的数据回溯请求;
根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
将所述旧数据返回给所述主机。
可选地,根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据,包括:
根据所述数据回溯请求确定第二逻辑块地址;
根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
可选地,所述数据回溯请求携带有主机逻辑块地址,根据所述数据回溯请求确定第二逻辑块地址,包括:
将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
可选地,所述方法还包括:
将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
更新所述第一映射表。
可选地,更新所述第一映射表,包括:
采用所述数据回溯请求对应的旧数据在所述正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
将所述新的条目写入所述第一映射表中。
可选地,所述方法还包括:
在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
可选地,所述方法还包括:
在所述第二映射表中,将所述第二条目无效化。
本发明实施例还公开了一种数据存储装置,应用于全闪存储系统,所述全闪存储系统包括固态硬盘,所述固态硬盘设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区设置有第一物理块地址,所述第一映射表用于记录逻辑块地址与所述第一物理块地址的映射关系,所述逻辑块地址为主机向所述固态硬盘发送数据写入请求时所携带的数据编址,包括:
创建模块,用于在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
暂存区数据模块,用于当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
第一更新模块,用于根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
可选地,所述第一数据复写请求携带有第一逻辑块地址;所述暂存区数据模块,包括:
第一查找子模块,用于采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
暂存区数据确定子模块,用于采用所述第一逻辑块地址对应的第一物理块地址,在所述正常存储区中查找所述第一逻辑块地址对应的第一物理块地址上的旧数据;
暂存区数据子模块,用于将所述旧数据作为所述暂存区的数据。
可选地,所述第二映射表包括至少一个空条目位置,所述第一更新模块,包括:
组成子模块,用于采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
条目更新子模块,用于将所述新的条目更新到目标空条目位置。
可选地,所述第二映射表包括至少一个由逻辑块地址和第二物理块地址构成的条目,所述第一更新模块,包括:
第二查找子模块,用于从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
第一生成子模块,用于若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成新的条目;
第二生成子模块,用于若找到所述第一条目,则将所述第一条目无效化,并采用所述第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成新的条目。
可选地,所述暂存区包括第一存储区和第二存储区,所述第一存储区为固化存储区,所述第二存储区为缓存区,所述装置还包括:
判断模块,用于若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
回收模块,用于若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
可选地,所述装置还包括:
刷写模块,用于在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
恢复模块,用于在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
可选地,所述第一数据复写请求还携带有新数据,所述装置还包括:
分配模块,用于在所述正常存储区中为所述新数据分配第一物理块地址;
新数据写入模块,用于将所述新数据写入所述正常存储区的所述第一物理块地址;
第二更新模块,用于采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
可选地,所述正常存储区包括第三存储区和第四存储区,所述第三存储区为固化存储区,所述第四存储区为缓存区,所述第四存储区包括预设数量的第一物理块地址,所述装置还包括:
同步模块,用于当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
第三更新模块,用于采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
可选地,所述装置还包括:
暂存区数据更新模块,用于在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
第四更新模块,用于采用所述暂存区的所述数据更新所述第二映射表。
可选地,所述至少一个空条目位置按照预设序号排列,所述第二映射表中设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
可选地,所述装置还包括:
接收模块,用于接收主机发送的数据回溯请求;
查找模块,用于根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
返回模块,用于将所述旧数据返回给所述主机。
可选地,所述查找模块,包括:
确定子模块,用于根据所述数据回溯请求确定第二逻辑块地址;
第三查找子模块,用于根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
第四查找子模块,用于采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
可选地,所述数据回溯请求携带有主机逻辑块地址,所述确定子模块,包括:
转换单元,用于将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
可选地,所述返回模块,还包括:
正常存储区数据更新模块,用于将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
更新子模块,用于更新所述第一映射表。
可选地,更新子模块,包括:
组成单元,用于采用所述数据回溯请求对应的旧数据在所述正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
写入单元,用于将所述新的条目写入所述第一映射表中。
可选地,所述更新子模块,还包括:
回收单元,用于在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
可选地,所述装置,还包括:
无效模块,用于在所述第二映射表中,将所述第二条目无效化。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的数据存储方法。
本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的数据存储方法。
本发明实施例包括以下优点:
在本发明实施例中,通过在固态硬盘中创建与预设的暂存区对应的第二映射表,使得当接收到主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据,以及,根据所述旧数据在暂存区所处的位置更新第二映射表,从而实现将被复写的旧数据存储起来,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区中存储的旧数据。
附图说明
图1是本发明实施例中提供的一种数据存储方法的步骤流程图;
图2是本发明实施例中提供的另一种数据存储方法的步骤流程图;
图3是本发明实施例中提供的一种数据存储装置的结构框图;
图4是本发明实施例中提供的一种电子设备的框图;
图5是本发明实施例中提供的一种计算机可读介质的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明实施例中提供的一种数据存储方法的步骤流程图,具体可以包括如下步骤:
步骤101,在所述固态硬盘中创建与预设的暂存区对应的第二映射表;
在本发明实施例中,可以设置一全闪存储系统,所述全闪存储系统可以包括存储软件栈、固态硬盘,在存储软件栈复写某笔数据的过程中,若出现存储系统掉电的情况,则会导致所述某笔数据中的部分数据写入失败,使得固态硬盘中该笔数据变成写入成功的新数据和写入失败的旧数据的混合体,此时,无法明确知道哪些数据是写入失败的,所以最理想的处理方法是回退到复写前的版本,重新进行复写,但现有技术中并没有一种可以回溯到复写前的旧数据版本的方法,故本发明中提出一种在旧数据复写的过程中对旧数据版本进行存储以供后续回溯的方法。
具体而言,全闪存储系统的固态硬盘中可以设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区可以设置有第一物理块,第一物理块可以用于存储数据,并设置第一物理块地址用于标识数据的物理存储地址。第一映射表用于记录逻辑块地址与第一物理块地址的映射关系,所述逻辑块地址为主机向固态硬盘发送数据写入请求时所携带的数据编址。
对于旧数据的存储,旧数据在主机中可以具有一个逻辑块地址,在固态硬盘中可以具有一个第二物理块地址,所以还可以创建一第二映射表用于记录逻辑块地址与第二物理块地址的映射关系,每一个逻辑块地址和一个第二物理块地址构成一个条目。其中,第二映射表可以具有至少一个空条目位置,用于写入逻辑块地址和第二物理块地址组成的条目。
对于第二映射表的创建,可以先计算预设的暂存区可以存储的数据量对应的条目个数,再创建包括所述条目个数的第二映射表。具体地,可以先采用暂存区的空间大小除以每个数据块所占的空间大小得到条目个数,再将所述条目个数乘以每个条目所占的空间大小,得到目标空间大小,从而可以创建所述目标空间大小的第二映射表。
作为一种示例,假设所述暂存区的空间大小为10GiB,每个数据块占用的空间大小为4096Bytes,每一个逻辑块地址采用u32数据大小,占用4Bytes,每一个第二物理块地址采用u32数据大小,占用4Bytes,每一个条目由逻辑块地址和第二物理块地址构成,占用8Bytes,所以条目个数=所述暂存区的空间大小/每个数据块占用的空间大小=2.5M,第二映射表空间大小=2.5M×8Bytes=19.1MiB。
步骤102,当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
当需要对数据进行复写时,主机可以向固态硬盘发送第一数据复写请求,固态硬盘在接收到主机发送的第一数据复写请求时,可以将第一数据复写请求对应的旧数据作为暂存区的数据,以供后续回溯。
步骤103,根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
在对数据进行回溯时,是根据逻辑块地址与物理块地址的映射关系查找旧数据的,所以可以根据所述旧数据在暂存区所处的位置更新第二映射表,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区的旧数据。
通过本发明实施例的数据存储方法,通过在固态硬盘中创建与预设的暂存区对应的第二映射表,使得当接收到主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据,以及,根据所述旧数据在暂存区所处的位置更新第二映射表,从而实现将被复写的旧数据存储起来,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区中存储的旧数据。
参照图2,示出了本发明实施例中提供的另一种数据存储方法的步骤流程图,具体可以包括如下步骤:
步骤201,在所述固态硬盘中创建与预设的暂存区对应的第二映射表;
在本发明实施例中,可以设置一全闪存储系统,所述全闪存储系统可以包括存储软件栈、固态硬盘,在存储软件栈复写某笔数据的过程中,若出现存储系统掉电的情况,则会导致所述某笔数据中的部分数据写入失败,使得固态硬盘中该笔数据变成写入成功的新数据和写入失败的旧数据的混合体,此时,无法明确知道哪些数据是写入失败的,所以最理想的处理方法是回退到复写前的版本,重新进行复写,但现有技术中并没有一种可以回溯到复写前的旧数据版本的方法,故本发明中提出一种在旧数据复写的过程中对旧数据版本进行存储以供后续回溯的方法。
具体而言,全闪存储系统的固态硬盘中可以设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区可以设置有第一物理块,第一物理块可以用于存储数据,并设置第一物理块地址用于标识数据的物理存储地址。第一映射表用于记录逻辑块地址与第一物理块地址的映射关系,所述逻辑块地址为主机向固态硬盘发送数据写入请求时所携带的数据编址。
对于旧数据的存储,旧数据在主机中可以具有一个逻辑块地址,在固态硬盘中可以具有一个第二物理块地址,所以还可以创建一第二映射表用于记录逻辑块地址与第二物理块地址的映射关系,每一个逻辑块地址和一个第二物理块地址构成一个条目。其中,第二映射表可以具有至少一个空条目位置,用于写入逻辑块地址和第二物理块地址组成的条目。
对于第二映射表的创建,可以先计算预设的暂存区可以存储的数据量对应的条目个数,再创建包括所述条目个数的第二映射表。具体地,可以先采用暂存区的空间大小除以每个数据块所占的空间大小得到条目个数,再将所述条目个数乘以每个条目所占的空间大小,得到目标空间大小,从而可以创建所述目标空间大小的第二映射表。
作为一种示例,假设所述暂存区的空间大小为10GiB,每个数据块占用的空间大小为4096Bytes,每一个逻辑块地址采用u32数据大小,占用4Bytes,每一个第二物理块地址采用u32数据大小,占用4Bytes,每一个条目由逻辑块地址和第二物理块地址构成,占用8Bytes,所以条目个数=所述暂存区的空间大小/每个数据块占用的空间大小=2.5M,第二映射表空间大小=2.5M×8Bytes=19.1MiB。
步骤202,采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
当需要对数据进行复写时,主机可以向固态硬盘发送第一数据复写请求,固态硬盘在接收到主机发送的第一数据复写请求时,可以从正常存储区中查找第一数据复写请求对应的旧数据,并将第一数据复写请求对应的旧数据作为暂存区的数据,以供后续回溯。
具体地,固态硬盘中可以设置有数据管理模块,数据管理模块是固态硬盘中比较靠近前端的固件核之一,负责接收和解析主机命令并分发其他固件核做进一步处理。第一数据复写请求可以携带有第一逻辑块地址,数据管理模块在接收到第一数据复写请求后,可以采用第一数据复写请求携带的第一逻辑块地址从第一映射表中查找第一逻辑块地址对应的第一物理块地址,以便采用第一逻辑块地址对应的第一物理块地址找到第一数据复写请求对应的旧数据。
步骤203,将所述正常存储区中所述第一物理块地址上的旧数据作为所述暂存区的数据。
第一数据复写请求要复写的是正常存储区中的数据,所以在找到第一逻辑块地址对应的第一物理块地址后,数据管理模块可以采用第一逻辑块地址对应的第一物理块地址,数据管理模块可以将所述第一物理块地址上的旧数据作为暂存区的数据,从而实现对旧数据的存储,使得在系统掉电的情况下,也可以回溯到原数据版本。
步骤204,根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
在对数据进行回溯时,是根据逻辑块地址与物理块地址的映射关系查找旧数据的,所以在将第一数据复写请求对应的旧数据写入暂存区后,可以根据所述旧数据在暂存区所处的位置更新第二映射表,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区的旧数据。
在本发明的一种实施例中,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
S11,采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
第二映射表记录的是暂存区中第二物理块地址和逻辑块地址的映射关系,所以可以采用所述旧数据在暂存区中的第二物理块地址和第一逻辑块地址组成新的条目,以便后续根据所述新的条目查找所述旧数据。
S12,将所述新的条目更新到目标空条目位置。
第二映射表可以用于记录逻辑块地址和物理块地址构成的条目,所以创建的所述第二映射表可以包括至少一个空条目位置,用于写入逻辑块地址和物理块地址构成的条目。
其中,所述至少一个空条目位置可以按照预设序号排列,所述预设序号可以为阿拉伯数字。第二映射表中还可以设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
由此,数据管理模块在采用所述旧数据在暂存区中的第二物理块地址和第一逻辑块地址组成新的条目后,可以将所述新的条目写入所述目标空条目位置标识标记的目标空条目位置。
在本发明的一种实施例中,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
S21,从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
第一数据复写请求可以为针对某笔数据的第二次复写,即第二映射表中可以已经记录了一个包括第一逻辑块地址的条目,此时,需要对第二映射表中包含第一逻辑块地址的第一条目进行更新,所以数据管理模块在接收到所述第一数据复写请求时,可以先查找第二映射表中是否已记录包含第一逻辑块地址的条目,确定是对该笔数据的第一次复写还是第二次复写,以便确定是否需要更新包含第一逻辑块地址的所述第一条目。
S22,若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成所述新的条目;
若数据管理模块在第二映射表中没有找到包含第一逻辑块地址的第一条目,可以认为此次复写是对该笔数据的第一次复写,此时,可以直接采用所述旧数据在暂存区中的第二物理块地址和所述第一逻辑块地址,在第二映射表中生成新的条目。
S23,若找到所述第一条目,则将所述第一条目无效化,并采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成所述新的条目。
若数据管理模块在第二映射表中找到包含第一逻辑块地址的第一条目,可以认为此次复写是对该笔数据的第二次复写,此时,可以无效第一条目,并采用所述旧数据在暂存区中的第二物理块地址和所述第一逻辑块地址,在第二映射表中生成新的条目,从而可以将第一次复写的旧条目删除,实时更新暂存区的旧数据和实时更新第二映射表中的条目。
在本发明的一种实施例中,所述方法还包括:
S31,若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
暂存区可以设置有第一存储区和第二存储区,第一存储区为固化存储区,即在固态硬盘下电时,第一存储区中存储的数据也不会丢失;第二存储区为缓存区,即在固态硬盘下电时,第二存储区中存储的数据会被刷写到第一存储区中,第二存储区不会保存数据。
第一存储区为固化存储区,如果第一条目中的第二物理块地址为第一存储区在用户的第二物理块地址,需要将第一存储区的第二物理块地址回收,所以若数据管理模块在第二映射表中找到包含第一逻辑块地址的第一条目,此时可以判断所述第一条目中的第二物理地址属于第一存储区的第二物理地址还是第二存储区的第二物理地址,以便确定是否需要回收第一存储区的第二物理块地址。
S32,若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
数据管理模块在确定第一条目中的第二物理地址属于第一存储区的第二物理地址时,可以将第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地。
在本发明的一种实施例中,所述方法还包括:
S41,在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
实时的第二映射表是存储在第二存储区中的,第二存储区为缓存区,在固态硬盘下电时,第二存储区中的第二映射表会丢失,所以在固态硬盘下电时,可以将第二映射表刷写到第一存储区中,以便持久的保存第二映射表,使其不会因为固态硬盘下电而丢失。
S42,在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
第二存储区中数据和映射表的读取速度较快,所以在固态硬盘上电时,可以重新将第一存储区中的第二映射表恢复到第二存储区中,具体地,可以读取第一存储区中的第二映射表并将其写入第二存储区中,使得主机可以快速地读取数据和第二映射表。
在本发明的一种实施例中,所述方法还包括:
S51,在所述正常存储区中为所述新数据分配第一物理块地址;
第一数据复写请求可以携带有新数据,在接收到第一数据复写请求后,可以将所述新数据写入正常存储区,以便实现对数据的复写。
具体地,固态硬盘在接收到第一数据复写请求后,可以先在正常存储区中为第一数据复写请求对应的新数据分配第一物理块地址,从而避免新数据和旧数据采用同一个物理块地址,避免混淆新数据和旧数据。
S52,将所述新数据写入所述正常存储区的所述第一物理块地址;
在将所述第一数据复写请求对应的旧数据无效后,可以将第一数据复写请求携带的新数据写入正常存储区的所述第一物理块地址,从而实现对第一数据复写请求对应的旧数据的复写。
S53,采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
主机在查找正常存储区中的数据时,是根据逻辑块地址与物理块地址的映射关系查找数据的,所以在将第一数据复写请求携带的新数据写入正常存储区后,可以根据所述新数据在正常存储区所处的位置更新第一映射表,即采用所述新数据在正常存储区中的第一物理块地址和所述第一逻辑块地址组成新条目,并写入第一映射表中,以便后续可以根据第一映射表查找正常存储区中的数据。
在本发明的一种实施例中,所述方法还包括:
S61,当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
正常存储区可以设置有第三存储区和第四存储区,第三存储区为固化存储区,即在固态硬盘下电时,第三存储区中存储的数据也不会丢失;第四存储区为缓存区,即在固态硬盘下电时,第四存储区中存储的数据会被刷写到第三存储区中,第四存储区不会保存数据。
第四存储区为缓存区,可以设置有预设数量的第一物理块地址,即第四存储区中第一物理块地址的数量是有限的,所以在第四存储区中的第一物理块地址被写满数据时,为了避免第四存储区中的数据会覆盖而丢失,可以在第四存储区中的第一物理块地址被写满数据时,将第四存储区中的数据同步到第三存储区中,从而实现对数据的保存,避免数据的丢失。
具体地,数据管理模块可以通知写管理模块,由写管理模块将第四存储区中的数据同步到第三存储区中。
S62,采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
第三存储区的第一物理块地址和第四存储区的第一物理块地址是不同的,所以在将第四存储区中的数据同步到第三存储区后,可以采用所述数据在第三存储区的第一物理块地址更新第一映射表,以便后续可以根据第一映射表查找第三存储区中的数据。
在本发明的一种实施例中,所述方法还包括:
S71,在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
在将第四存储区中的数据同步到第三存储区的过程中,也可能接收到主机发送的针对所述数据的第二复写请求,此时,所述数据则变成了旧数据,所以,在将所述数据同步至第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,则可以将所述数据作为暂存区的数据,从而实现及时地对旧数据进行存储,以便后续可以回溯所述数据。
S72,采用所述暂存区的所述数据更新所述第二映射表。
在将所述数据写入暂存区后,可以采用所述数据在暂存区的位置更新所述第二映射表,实现及时地对第二映射表进行更新,以便后续根据第二映射表查找所述数据。
在本发明的一种实施例中,所述方法还包括:
S81,接收主机发送的数据回溯请求;
在采用暂存区对旧数据进行存储后,如果需要回溯数据,则可以从暂存区中查找旧数据。具体地,固态硬盘在接收到主机发送的数据回溯请求的情况下,可以对旧数据进行回溯。
S82,根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
固态硬盘在接收到数据回溯请求后,可以在暂存区中查找所述数据回溯请求对应的旧数据。具体地,可以由数据管理模块解析所述数据回溯请求,并在暂存区中查找所述数据回溯请求对应的旧数据。
S83,将所述旧数据返回给所述主机。
数据管理模块在查找到所述数据回溯请求对应的旧数据后,可以将所述数据回溯请求对应的旧数据返回给主机。
在本发明的一种实施例中,根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据,包括:
S91,根据所述数据回溯请求确定第二逻辑块地址;
所述数据回溯请求对应的旧数据是存储在暂存区中的第二物理块地址上的,所以数据管理模块可以对所述数据回溯请求进行解析,确定第二逻辑块地址,以便根据第二逻辑块地址找到所述数据回溯请求对应的旧数据在暂存区中的第二物理块地址。
S92,根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
数据管理模块在确定第二逻辑块地址后,可以采用第二逻辑块地址在第二映射表中查找包含第二逻辑块地址的第二条目,从而可以找到所述数据回溯请求对应的旧数据在暂存区中的第二物理块地址。
S93,采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
数据管理模块在找到所述数据回溯请求对应的旧数据在暂存区中的第二物理块地址后,可以采用所述第二条目中的第二物理块地址,在所述暂存区中查找所述数据回溯请求对应的旧数据,从而实现所述数据回溯请求对应的旧数据的回溯。
在本发明的一种实施例中,根据所述数据回溯请求确定第二逻辑块地址,包括:
S101,将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
主机发送给数据管理模块的数据回溯请求中可以携带有主机逻辑块地址,主机逻辑块地址对应的可以为4096Bytes的数据,而映射表的一个逻辑块地址对应的仅为4Bytes的数据,所以数据管理模块在接收到主机逻辑块地址后,可以将主机逻辑块地址转换为对应4Bytes的数据的第二逻辑块地址,以便采用第二逻辑块地址在固态硬盘的暂存区中查找旧数据。
在本发明的一种实施例中,所述方法还包括:
S111,将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
对旧数据进行回溯的目的是将旧数据作为当前版本数据,所以在对数据进行回溯后,还可以将所述数据回溯请求对应的旧数据重新作为正常存储区的数据。
S112,更新所述第一映射表。
在将所述数据回溯请求对应的旧数据重新作为正常存储区的数据后,可以采用所述数据回溯请求对应的旧数据在正常存储区的位置更新第一映射表,实现及时地对第一映射表进行更新,以便后续根据第一映射表查找正常存储区中的数据。
在本发明的一种实施例中,更新所述第一映射表,包括:
S121,采用所述数据回溯请求对应的旧数据在所述正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
对第一映射表的更新,可以首先采用所述数据回溯请求对应的旧数据在正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目。
S122,将所述新的条目写入所述第一映射表中。
在组成新的条目后,可以将所述新的条目写入第一映射表中,实现对第一映射表的更新。
在本发明的一种实施例中,所述方法还包括:
S131,在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
对旧数据进行回溯的目的是将旧数据作为当前版本数据,所以为了避免正常存储区中既包括新数据也包括旧数据,可以将正常存储区中第二逻辑块地址对应的第一物理块地址上的数据无效,并回收第二逻辑块地址对应的第一物理块地址。
在本发明的一种实施例中,所述方法还包括:
S141,在所述第二映射表中,将所述第二条目无效化。
根据数据回溯请求回溯得到暂存区中的旧数据,并将所述旧数据重新写入到正常存储区后,对于正常存储区来说,所述暂存区中的所述旧数据便不再是正常存储区中数据的旧数据,此时可以将暂存区中的所述旧数据无效化,并且可以将第二映射表中包含所述第二逻辑块地址的第二条目无效化,从而实现及时地更新暂存区中的数据和第二映射表。
通过本发明实施例的数据存储方法,通过在固态硬盘中创建与预设的暂存区对应的第二映射表,使得当接收到主机发送的第一数据复写请求时,可以从正常存储区中提取所述第一数据复写请求对应的旧数据作为暂存区的数据,以及,根据所述旧数据在暂存区所处的位置更新第二映射表,从而实现将被复写的旧数据存储起来,以便后续在接收到主机发送的数据回溯请求时,可以根据第二映射表回溯暂存区中存储的旧数据。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明实施例中提供的一种数据存储装置的结构框图,具体可以包括如下模块:
创建模块301,用于在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
旧数据写入模块302,用于当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
第一更新模块303,用于根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
在本发明的一种实施例中,所述第一数据复写请求携带有第一逻辑块地址;所述第一数据写入模块,包括:
第一查找子模块,用于采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
暂存区数据确定子模块,用于将所述正常存储区中所述第一物理块地址上的旧数据作为所述暂存区的数据。
在本发明的一种实施例中,所述第二映射表包括至少一个空条目位置,所述第一更新模块,包括:
组成子模块,用于采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
条目更新子模块,用于将所述新的条目更新到目标空条目位置。
在本发明的一种实施例中,所述第二映射表包括至少一个由逻辑块地址和第二物理块地址构成的条目,所述第一更新模块,包括:
第二查找子模块,用于从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
第一生成子模块,用于若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成新的条目;
第二生成子模块,用于若找到所述第一条目,则将所述第一条目无效化,并采用所述第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成新的条目。
在本发明的一种实施例中,所述暂存区包括第一存储区和第二存储区,所述第一存储区为固化存储区,所述第二存储区为缓存区,所述装置还包括:
判断模块,用于若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
回收模块,用于若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
在本发明的一种实施例中,所述装置还包括:
刷写模块,用于在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
恢复模块,用于在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
在本发明的一种实施例中,所述第一数据复写请求还携带有新数据,所述装置还包括:
分配模块,用于在所述正常存储区中为所述新数据分配第一物理块带地址;
新数据写入模块,用于将所述新数据写入所述正常存储区的所述第一物理块地址;
第二更新模块,用于采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
在本发明的一种实施例中,所述正常存储区包括第三存储区和第四存储区,所述第三存储区为固化存储区,所述第四存储区为缓存区,所述第四存储区包括预设数量的第一物理块地址,所述装置还包括:
同步模块,用于当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
第三更新模块,用于采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
在本发明的一种实施例中,所述装置还包括:
数据写入模块,用于在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
第四更新模块,用于采用所述暂存区的所述数据更新所述第二映射表。
可选地,所述至少一个空条目位置按照预设序号排列,所述第二映射表中设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
在本发明的一种实施例中,所述装置还包括:
接收模块,用于接收主机发送的数据回溯请求;
查找模块,用于根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
返回模块,用于将所述旧数据返回给所述主机。
在本发明的一种实施例中,所述查找模块,包括:
确定子模块,用于根据所述数据回溯请求确定第二逻辑块地址;
第三查找子模块,用于根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
第四查找子模块,用于采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
在本发明的一种实施例中,所述数据回溯请求携带有主机逻辑块地址,所述确定子模块,包括:
转换单元,用于将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
在本发明的一种实施例中,所述返回模块,还包括:
第二写入子模块,用于将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
更新子模块,用于更新所述第一映射表。
在本发明的一种实施例中,更新子模块,包括:
组成单元,用于采用所述数据回溯请求对应的旧数据在所述正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
写入单元,用于将所述新的条目写入所述第一映射表中。
在本发明的一种实施例中,所述更新子模块,还包括:
回收单元,用于在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
在本发明的一种实施例中,所述装置,还包括:
无效模块,用于在所述第二映射表中,将所述第二条目无效化。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
当接收到所述主机发送的第一数据复写请求时,从所述正常存储区中操作所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
可选地,所述第一数据复写请求携带有第一逻辑块地址;当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据,包括:
采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
将所述正常存储区中所述第一物理块地址上的旧数据作为所述暂存区的数据。
可选地,所述第二映射表包括至少一个空条目位置,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
将所述新的条目更新到目标空条目位置。
可选地,所述第二映射表包括至少一个由逻辑块地址和第二物理块地址构成的条目,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成新的条目;
若找到所述第一条目,则将所述第一条目无效化,并采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成所述新的条目。
可选地,所述暂存区包括第一存储区和第二存储区,所述第一存储区为固化存储区,所述第二存储区为缓存区,所述方法还包括:
若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
可选地,所述方法还包括:
在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
可选地,所述第一数据复写请求还携带有新数据,所述方法还包括:
在所述正常存储区中为所述新数据分配第一物理块地址;
将所述新数据写入所述正常存储区的所述第一物理块地址;
采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
可选地,所述正常存储区包括第三存储区和第四存储区,所述第三存储区为固化存储区,所述第四存储区为缓存区,所述第四存储区包括预设数量的第一物理块地址,所述方法还包括:
当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
可选地,所述方法还包括:
在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
采用所述暂存区的所述数据更新所述第二映射表。
可选地,所述至少一个空条目位置按照预设序号排列,所述第二映射表中设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
可选地,所述方法还包括:
接收主机发送的数据回溯请求;
根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
将所述旧数据返回给所述主机。
可选地,根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据,包括:
根据所述数据回溯请求确定第二逻辑块地址;
根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
可选地,所述数据回溯请求携带有主机逻辑块地址,根据所述数据回溯请求确定第二逻辑块地址,包括:
将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
可选地,所述方法还包括:
将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
更新所述第一映射表。
可选地,更新所述第一映射表,包括:
采用所述数据回溯请求对应的旧数据在所述正常存储区区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
将所述新的条目写入所述第一映射表中。
可选地,所述方法还包括:
在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
可选地,所述方法还包括:
在所述第二映射表中,将所述第二条目无效化。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图5所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质501,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的数据存储方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的数据存储方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (20)

1.一种数据存储方法,其特征在于,应用于全闪存储系统,所述全闪存储系统包括固态硬盘,所述固态硬盘设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区设置有第一物理块地址,所述第一映射表用于记录逻辑块地址与所述第一物理块地址的映射关系,所述逻辑块地址为主机向所述固态硬盘发送数据写入请求时所携带的数据编址,包括:
在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
2.根据权利要求1所述的方法,其特征在于,所述第一数据复写请求携带有第一逻辑块地址;当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据,包括:
采用所述第一逻辑块地址从所述第一映射表中查找所述第一逻辑块地址对应的第一物理块地址;
将所述正常存储区中所述第一物理块地址上的旧数据作为所述暂存区的数据。
3.根据权利要求2所述的方法,其特征在于,所述第二映射表包括至少一个空条目位置,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址组成新的条目;
将所述新的条目更新到目标空条目位置。
4.根据权利要求2所述的方法,其特征在于,所述第二映射表包括至少一个由逻辑块地址和第二物理块地址构成的条目,根据所述暂存区中的所述旧数据更新所述第二映射表,包括:
从所述第二映射表中查找包括所述第一逻辑块地址的第一条目;
若没有找到所述第一条目,则根据所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址,在所述第二映射表中生成所述新的条目;
若找到所述第一条目,则将所述第一条目无效化,并采用所述旧数据在所述暂存区中的第二物理块地址和所述第一逻辑块地址在所述第二映射表中生成所述新的条目。
5.根据权利要求4所述的方法,其特征在于,所述暂存区包括第一存储区和第二存储区,所述第一存储区为固化存储区,所述第二存储区为缓存区,所述方法还包括:
若找到所述第一条目,则判断所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址或所述第二存储区的第二物理地址;
若所述第一条目中的第二物理地址属于所述第一存储区的第二物理地址,则将所述第一存储区的第二物理地址上的数据无效,回收所述第一存储区的第二物理地址。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述固态硬盘下电时,将所述第二映射表刷写到所述第一存储区中;
在所述固态硬盘上电时,从所述第一存储区读取所述第二映射表并写入所述第二存储区中。
7.根据权利要求2所述的方法,其特征在于,所述第一数据复写请求还携带有新数据,所述方法还包括:
在所述正常存储区中为所述新数据分配第一物理块地址;
将所述新数据写入所述正常存储区的所述第一物理块地址;
采用所述新数据在所述正常存储区中的第一物理块地址和所述第一逻辑块地址更新所述第一映射表。
8.根据权利要求7所述的方法,其特征在于,所述正常存储区包括第三存储区和第四存储区,所述第三存储区为固化存储区,所述第四存储区为缓存区,所述第四存储区包括预设数量的第一物理块地址,所述方法还包括:
当所述第四存储区的第一物理块地址写满数据时,将所述数据同步至第三存储区;
采用所述数据在所述第三存储区的第一物理块地址更新所述第一映射表。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在将所述数据同步至所述第三存储区的过程中,若接收到针对所述数据的第二数据复写请求,将所述数据作为所述暂存区的数据;
采用所述暂存区的所述数据更新所述第二映射表。
10.根据权利要求3所述的方法,其特征在于,所述至少一个空条目位置按照预设序号排列,所述第二映射表中设置有目标空条目位置标识,用于指示将所述新的条目更新到所述目标空条目位置。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收主机发送的数据回溯请求;
根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据;
将所述旧数据返回给所述主机。
12.根据权利要求11所述的方法,其特征在于,根据所述数据回溯请求在所述暂存区中查找所述数据回溯请求对应的旧数据,包括:
根据所述数据回溯请求确定第二逻辑块地址;
根据所述第二逻辑块地址,从所述第二映射表中查找第二条目;
采用所述第二条目中的第二物理块地址在所述暂存区中查找所述数据回溯请求对应的旧数据。
13.根据权利要求12所述的方法,其特征在于,所述数据回溯请求携带有主机逻辑块地址,根据所述数据回溯请求确定第二逻辑块地址,包括:
将所述数据回溯请求携带的所述主机逻辑块地址转换为第二逻辑块地址。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
将所述数据回溯请求对应的旧数据作为所述正常存储区的数据;
更新所述第一映射表。
15.根据权利要求14所述的方法,其特征在于,更新所述第一映射表,包括:
采用所述数据回溯请求对应的旧数据在所述正常存储区中的第一物理块地址和所述第二逻辑块地址组成新的条目;
将所述新的条目写入所述第一映射表中。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
在所述正常存储区中,将所述第二逻辑块地址对应的第一物理块地址回收。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
在所述第二映射表中,将所述第二条目无效化。
18.一种数据存储装置,其特征在于,应用于全闪存储系统,所述全闪存储系统包括固态硬盘,所述固态硬盘设置有正常存储区,以及,和正常存储区对应的第一映射表,所述正常存储区设置有第一物理块地址,所述第一映射表用于记录逻辑块地址与所述第一物理块地址的映射关系,所述逻辑块地址为主机向所述固态硬盘发送数据写入请求时所携带的数据编址,包括:
创建模块,用于在所述固态硬盘中创建与预设的暂存区对应的第二映射表;所述暂存区设置有第二物理块地址,所述第二映射表用于记录逻辑块地址与所述第二物理块地址的映射关系;
暂存区数据模块,用于当接收到所述主机发送的第一数据复写请求时,将所述正常存储区中所述第一数据复写请求对应的旧数据作为所述暂存区的数据;
第一更新模块,用于根据所述暂存区中的所述旧数据更新所述第二映射表,以便在接收到所述主机发送的数据回溯请求时,根据所述第二映射表回溯所述暂存区的所述旧数据。
19.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-17任一项所述的方法。
20.一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-17任一项所述的方法。
CN202211483092.4A 2022-11-24 2022-11-24 一种数据存储方法、装置、电子设备及可读介质 Active CN115543868B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211483092.4A CN115543868B (zh) 2022-11-24 2022-11-24 一种数据存储方法、装置、电子设备及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211483092.4A CN115543868B (zh) 2022-11-24 2022-11-24 一种数据存储方法、装置、电子设备及可读介质

Publications (2)

Publication Number Publication Date
CN115543868A true CN115543868A (zh) 2022-12-30
CN115543868B CN115543868B (zh) 2023-08-15

Family

ID=84720801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211483092.4A Active CN115543868B (zh) 2022-11-24 2022-11-24 一种数据存储方法、装置、电子设备及可读介质

Country Status (1)

Country Link
CN (1) CN115543868B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878051A (zh) * 2023-03-03 2023-03-31 浪潮电子信息产业股份有限公司 一种数据同步方法、数据同步系统、存储介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070204128A1 (en) * 2003-09-10 2007-08-30 Super Talent Electronics Inc. Two-Level RAM Lookup Table for Block and Page Allocation and Wear-Leveling in Limited-Write Flash-Memories
WO2008022567A1 (fr) * 2006-08-18 2008-02-28 Fortune Spring Technology (Shenzhen) Corporation Mécanisme de stockage à corps à mémoire flash présentant une fonction de restauration de données
JP2013196155A (ja) * 2012-03-16 2013-09-30 Toshiba Corp メモリシステム
CN108121664A (zh) * 2016-11-28 2018-06-05 慧荣科技股份有限公司 数据储存装置以及其操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070204128A1 (en) * 2003-09-10 2007-08-30 Super Talent Electronics Inc. Two-Level RAM Lookup Table for Block and Page Allocation and Wear-Leveling in Limited-Write Flash-Memories
WO2008022567A1 (fr) * 2006-08-18 2008-02-28 Fortune Spring Technology (Shenzhen) Corporation Mécanisme de stockage à corps à mémoire flash présentant une fonction de restauration de données
JP2013196155A (ja) * 2012-03-16 2013-09-30 Toshiba Corp メモリシステム
CN108121664A (zh) * 2016-11-28 2018-06-05 慧荣科技股份有限公司 数据储存装置以及其操作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
裴向东等, 西北工业大学出版社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878051A (zh) * 2023-03-03 2023-03-31 浪潮电子信息产业股份有限公司 一种数据同步方法、数据同步系统、存储介质和电子设备

Also Published As

Publication number Publication date
CN115543868B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
US11782632B2 (en) Selective erasure of data in a SSD
US9460802B2 (en) Maintaining versions of data in solid state memory
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
US9880770B2 (en) Supporting invalidation commands for non-volatile memory
CN100478946C (zh) 用于文件系统快照持久性的方法和装置
US9122582B2 (en) File system for maintaining data versions in solid state memory
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
KR20170010729A (ko) 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템
CN109522154B (zh) 数据恢复方法及相关设备与系统
US10114576B2 (en) Storage device metadata synchronization
CN112631950B (zh) 一种l2p表的保存方法、系统、设备以及介质
CN112860594B (zh) 一种固态盘地址重映射方法、设备及固态盘
US11029867B2 (en) Apparatus and method for transmitting map information and read count in memory system
US9135162B2 (en) Data versioning in solid state memory
US9135161B2 (en) Flash translation layer system for maintaining data versions in solid state memory
CN115543868B (zh) 一种数据存储方法、装置、电子设备及可读介质
EP3385846B1 (en) Method and device for processing access request, and computer system
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
US9535796B2 (en) Method, apparatus and computer for data operation
US20210042050A1 (en) Method and apparatus for rebuilding memory mapping tables
CN115576867A (zh) 存储设备的扩展地址空间
CN109739776B (zh) 用于NAND Flash主控芯片的Greedy垃圾回收系统
US20210397523A1 (en) Method and system for facilitating data recovery and version rollback in a storage device
CN117891409A (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
GR01 Patent grant
GR01 Patent grant