CN115878051B - 一种数据同步方法、数据同步***、存储介质和电子设备 - Google Patents
一种数据同步方法、数据同步***、存储介质和电子设备 Download PDFInfo
- Publication number
- CN115878051B CN115878051B CN202310194721.XA CN202310194721A CN115878051B CN 115878051 B CN115878051 B CN 115878051B CN 202310194721 A CN202310194721 A CN 202310194721A CN 115878051 B CN115878051 B CN 115878051B
- Authority
- CN
- China
- Prior art keywords
- temporary storage
- storage area
- mapping table
- writing
- data
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据同步方法、数据同步***、存储介质和电子设备,所述方法包括:接收写暂存区命令;确定所述写暂存区命令对应的暂存区空间范围;将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。本申请既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增temp数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
Description
技术领域
本申请涉及数据存储领域,特别涉及一种数据同步方法、数据同步***、存储介质和电子设备。
背景技术
SSD(Solid State Drives,固态硬盘)内部暂存区空间大小是有限的,但至少要支持全闪NVMe SSD主机写故障发生前2s以上的可回溯数据大小。假设SSD标称的128K性能指标为5000MB/s,那么暂存区空间大小为10GB大小。由此,就涉及到暂存区空间数据保持和回收问题。理想情况下,对于主机的任一个可回溯数据的LBA,都应该能够通过读取SSD获得可回溯数据。
但实际情况下,暂存区空间属于SSD内部资源,暂存区空间的使用和回收完全属于SSD内部的实现,比如,SSD提前释放了某些暂存区空间,导致主机回溯数据失败。更恶劣的情况下,因为全闪NVMe SSD主机上层应用和SSD内部固件都是独立的软件***,仅在写暂存区和读暂存区等接口调用时才会产生联系,在网络延迟或其它故障因素下,上层应用的可回溯数据空间和SSD内部的可回溯数据空间可能会存在较大的偏差,导致主机回溯数据时遭遇大量的回溯失败问题。通常情况下,可以在现有暂存区空间大小的基础上再额外扩大一部分空间当作缓冲区,比如10GB的暂存区空间扩大到16GB大小,其中6GB空间用作误差消除缓冲区,总体上16GB的暂存区空间大小采用先进先出的方式来确保能够准确的回溯10GB的有效数据空间。该方式可以一定程度上缓解上层应用与SSD内部暂存区的数据一致性误差,但因为上层应用与SSD内部并没有进行实时的暂存区数据同步,暂存区空间仍由SSD自行管理,那么SSD回收某个暂存区空间数据可能并不是NVMe主机希望被回收的,仍然会存在主机回溯失败的可能。
发明内容
本申请的目的是提供一种数据同步方法、数据同步***、计算机可读存储介质和电子设备,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响。
为解决上述技术问题,本申请提供一种数据同步方法,包括:
接收写暂存区命令;
确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围由主机上层应用管理;
将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
可选的,还包括:
在硬盘内部配置暂存区功能相关字段;所述暂存区功能相关字段包括暂存区大小、暂存区空间分配粒度和暂存区映射表表项个数,用于配置所述暂存区空间范围。
可选的,还包括:
通过写缓存区命令字扩展所述暂存区空间范围。
可选的,通过写缓存区命令字扩展所述暂存区空间范围包括:
配置写缓存区命令字的参数;其中,所述参数包括暂存区待删除逻辑块的起始地址、暂存区待删除逻辑块的个数和暂存区状态;
根据所述参数扩展所述暂存区空间范围。
可选的,将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中之前,包括:
生成所述暂存区映射表。
可选的,生成所述暂存区映射表包括:
生成包含可回溯数据映射关系的数组,并将所述数组作为暂存区映射表。
可选的,生成包含可回溯数据映射关系的数组之前,还包括:
记录所述可回溯数据的逻辑块地址和物理块地址;
根据所述逻辑块地址和物理块地址构建映射关系,并建立索引。
可选的,确定所述写暂存区命令对应的暂存区空间范围包括:
确定暂存区空间粒度;
确定所述写暂存区命令对应的申请空间大小;
根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
确定满足所述暂存区数量的缓存区索引。
可选的,确定满足所述暂存区数量的缓存区索引之后,还包括:
确定起始暂存区入口对应的暂存区索引;
将所述暂存区索引、所述暂存区数量分别对应添加至所述参数中的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数。
可选的,还包括:
将所述参数中的暂存区状态设为用户数据写入功能。
可选的,将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中包括:
在所述写暂存区命令中的暂存区状态为所述用户数据写入时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围。
可选的,在所有用户写入完成后,还包括:
将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中。
可选的,将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中之后,还包括:
释放被占用的暂存区空间资源。
可选的,还包括:
接收源于上层应用的暂存区删除指令;其中,所述暂存区删除指令对应的暂存区状态为无用户数写入。
可选的,接收源于上层应用的暂存区删除指令之前,还包括:
将待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数添加至所述暂存区删除指令。
可选的,在硬盘内部配置暂存区功能相关字段包括:
在识别控制数据结构中的特殊供应区域配置暂存区功能相关字段。
可选的,还包括:
通过识别控制命令获取所述识别控制数据结构,并解析得到所述暂存区功能相关字段;
根据所述暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
本申请还提供一种数据同步***,包括:
写暂存区命令接收模块,用于接收写暂存区命令;
确定模块,用于确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围由主机上层应用管理;
更新模块,用于将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
可选的,还包括:
暂存模块,用于在硬盘内部配置暂存区功能相关字段;所述暂存区功能相关字段包括暂存区大小、暂存区空间分配粒度和暂存区映射表表项个数,用于配置所述暂存区空间范围。
可选的,还包括:
扩展模块,用于通过写缓存区命令字扩展所述暂存区空间范围。
可选的,扩展模块包括:
配置子模块,用于配置写缓存区命令字的参数;其中,所述参数包括暂存区待删除逻辑块的起始地址、暂存区待删除逻辑块的个数和暂存区状态;
扩展子模块,用于根据所述参数扩展所述暂存区空间范围。
可选的,还包括:
生成模块,用于生成所述暂存区映射表。
可选的,生成模块包括:
生成子模块,用于生成包含可回溯数据映射关系的数组,并将所述数组作为暂存区映射表。
可选的,还包括:
记录子模块,用于记录所述可回溯数据的逻辑块地址和物理块地址;
构建子模块,用于根据所述逻辑块地址和物理块地址构建映射关系,并建立索引。
可选的,确定模块包括:
第一确定子模块,用于确定暂存区空间粒度;
第二确定子模块,用于确定所述写暂存区命令对应的申请空间大小;
第三确定子模块,用于根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
第四确定子模块,用于确定满足所述暂存区数量的缓存区索引。
可选的,还包括:
第五确定子模块,用于确定起始暂存区入口对应的暂存区索引;
添加子模块,用于将所述暂存区索引、所述暂存区数量分别对应添加至所述参数中的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数。
可选的,还包括:
设定子模块,用于将所述参数中的暂存区状态设为用户数据写入功能。
可选的,更新模块包括:
第一更新子模块,用于在所述写暂存区命令中的暂存区状态为所述用户数据写入工时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围。
可选的,还包括:
第二更新子模块,用于将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中。
可选的,还包括:
释放子模块,用于释放被占用的暂存区空间资源。
可选的,还包括:
暂存区删除指令接收模块,用于接收源于上层应用的暂存区删除指令;其中,所述暂存区删除指令对应的暂存区状态为无用户数写入。
可选的,还包括:
添加模块,用于将待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数添加至所述暂存区删除指令。
可选的,暂存模块包括:
暂存子模块,用于在识别控制数据结构中的特殊供应区域配置暂存区功能相关字段。
可选的,还包括:
识别控制数据结构获取模块,用于通过识别控制命令获取所述识别控制数据结构,并解析得到所述暂存区功能相关字段;
分配模块,用于根据所述暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
本申请提供一种数据同步方法,包括:接收写暂存区命令;确定所述写暂存区命令对应的暂存区空间范围;将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请将固态硬盘内部的暂存区空间交由主机的上层应用进行管理,使得固态硬盘不再具有删除暂存区空间数据的权限和能力,此后主机下发写暂存区命令,固态硬盘接收写暂存区命令后,会指明该写暂存区命令使用的固态硬盘内部的暂存区空间范围,使得固态硬盘可以解析得到待写入的暂存区空间范围,并将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。如此,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增temp数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
本申请还提供一种数据同步***、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种数据同步方法的流程图;
图2为本申请实施例提供的暂存区表结构图;
图3为本申请实施例所提供的一种数据同步***的结构示意图;
图4为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对支持数据回溯功能的全闪NVMe SSD主机,对于任一笔可回溯数据的hostLBA,在支持数据回溯功能的SSD内部都有两份用户数据与之对应。一份是通过LBA查找FTL映射表得到物理块地址并读取正常空间获得的新数据;另一份是通过LBA查找TEMP映射表得到物理块地址并读取暂存区空间获得的旧数据。其中,暂存区空间是支持数据回溯功能的SSD内部的一部分NAND空间,专用于SSD内部暂存被覆盖写的用户数据,这也是主机能够回溯到的数据空间。
为了主机随时都能够回溯到次新数据(也称为旧数据),主机通常都采用写暂存区方式写入SSD。也就是说,SSD接收到写暂存区命令后,都会根据命令中操作的LBA查找FTL映射表获得被覆盖写用户数据对应的物理块地址,并将其转移到temp映射表中的对应单元。等到新用户数据写入SSD完成后,再将新数据占用的物理块地址更新到FTL映射表中LBA对应的单元中。
为了实现上层应用的可回溯数据,通常情况下,可以考虑在现有暂存区空间大小的基础上再额外扩大一部分空间当作缓冲区,比如10GB的暂存区空间扩大到16GB大小,其中6GB空间用作误差消除缓冲区,总体上16GB的暂存区空间大小采用先进先出的方式来确保能够准确的回溯10GB的有效数据空间。该方案因为上层应用与SSD内部并没有进行实时的暂存区数据同步,暂存区空间仍由SSD自行管理,也导致了仍然会存在主机回溯失败的可能。
为解决上述问题,本申请针对上述主机上层应用暂存区空间与SSD内部暂存区空间存在数据一致性偏差,并导致上层应用回溯数据失败的需求,提供一种主机通过复用写暂存区命令接口的方式通知SSD进行暂存区管理的方法,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响。
请参考图1,图1为本申请实施例所提供的一种数据同步方法的流程图,该方法包括:
S101:接收写暂存区命令;
S102:确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围由主机上层应用管理;
S103:将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请实施例的核心在于将固态硬盘内部的暂存区空间完全交由主机上层应用进行管理,固态硬盘不再具有删除暂存区空间数据的主动权。主机下发写暂存区命令接口中会指明当前命令使用的固态硬盘内部暂存区空间范围。固态硬盘接收并解析写暂存区命令后获得待写入的暂存区空间范围,然后将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。
在执行数据同步前,可以先针对固态硬盘设置暂存区空间。具体的,可以先在硬盘内部配置暂存区功能相关字段。暂存区功能相关字段包括暂存区大小、暂存区空间分配粒度和暂存区映射表表项个数,用于配置所述暂存区空间范围。通过在固态硬盘内部的在识别控制数据结构中的特殊供应区域配置暂存区功能相关字段,即在固态硬盘内部的Identify Controller data structure数据结构中的vendor Specific区域扩展Temp功能相关字段。此后包含固态硬盘的主机可以通过识别Identify Controller获得暂存区功能相关字段,并根据解析得到的暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
也即,分配暂存区空间时可以包含如下两个步骤:
第一步、通过识别控制命令获取所述识别控制数据结构,并解析得到所述暂存区功能相关字段;
第二步、根据所述暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
上述过程中的执行主体可以为包含固态硬盘的主机,例如全闪NVMe SSD主机等。
写缓存区接口可以复用标准NVME write接口,通过在特殊供应区域vendorSpecific中定制写暂存区命令字来区分标准NVMe write。此外,在写暂存区接口中扩展当前命令要操作的暂存区空间范围,如表1所示,表1为写暂存区扩展暂存区功能示意:
表1 写暂存区扩展暂存区功能
写暂存区扩展temp功能说明 |
Temp Starting Index(TSI):暂存区待删除逻辑块的起始Index。Index范围为【0,Max_temp_entry_num - 1】。如果有用户数据写入,TSI与NTLB联合表示新写入temp映射表中的位置。 |
Number of Temp Logical Blocks (NTLB):暂存区待删除逻辑块的个数。 |
Delete Temp Flag(DTF):0-用户数据写入;1-无用户数据写入,只删除temp |
在通过写缓存区命令字扩展所述暂存区空间范围时,可以配置写缓存区命令字的参数,该参数可以包含暂存区待删除逻辑块的起始地址、暂存区待删除逻辑块的个数和暂存区状态。暂存区待删除逻辑块的起始地址即Temp Starting Index,可简写为TSI,其用于指示暂存区待删除逻辑块的起始地址。暂存区待删除逻辑块的个数为Number of TempLogical Blocks ,可简写为NTLB。
此外,还可以在固态硬盘内部记录暂存区映射表,具体的,可以在将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中之前,生成暂存区映射表。在此对于暂存区映射表的格式不作限定,可以采用数组等形式。若采用数组形式,在生成暂存区映射表时,可以生成包含可回溯数据映射关系的数组,并将数组作为暂存区映射表。
在暂存区映射表中,会包含逻辑块地址和物理块地址。具体的,可以参见图2,图2为本申请实施例提供的暂存区表结构图,对于任一个暂存区入口,如图2中的temp entry n(LBAn, PBAn):
LBAn: 可回溯数据的闪存转换层 LBA,采用u32数据大小,占用4Bytes;
PBAn: 可回溯数据的物理块地址,指向旧数据空间,采用u32数据大小,占用4Bytes;
暂存区入口的个数记作Temp_entry_num:
Temp表记作temp_table[ Temp_entry_num], 在SSD DDR中分配,通过index进行索引,index范围[0,Temp_entry_num - 1]。
执行完上述准备操作后,若接收写暂存区命令,可以解析写暂存区命令,从而确定写暂存区命令对应的暂存区空间范围。再将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
对于上层应用来说,在发起新的写暂存区命令时,都要去上层应用对应的暂存区空间中申请可用的资源。
固态硬盘接收并解析写暂存区命令,获得参数,即TSI,NTLB和 DTF字段后。如果DTF标明的是用户数据写入,那么被复写的用户数据对应的FTL映射表中的表项就依次更新到暂存区映射表中TSI和NTLB指定的temp表范围。当所有新的用户写入完成之后,在将对应的写入的物理块地址更新到FTL映射表中被复写的表项中。
当固态硬盘给主机回复了写暂存区完成后,该写暂存区命令在上层应用中占用的暂存区空间资源就可以释放了,否则,下一写暂存区命令都不能申请到该暂存区空间资源使用。
实际上,上层应用在申请可用的暂存区空间资源时,也是在写数据的过程中间接删除固态硬盘暂存区空间的数据。即固态硬盘接收到写暂存区命令后,内部处理从闪存转换层映射表中获得被复写用户数据对应的闪存转换层映射表表项时,就可以根据TSI和NTLB复写temp映射表中的表项。
在确定所述写暂存区命令对应的暂存区空间范围时,可以包括如下步骤:
第一步、确定暂存区空间粒度;
第二步、确定所述写暂存区命令对应的申请空间大小;
第三步、根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
第四步、确定满足所述暂存区数量的缓存区索引。
首先需要确定暂存区空间粒度,该在暂存区空间粒度可由本领域技术人员自行设置,在此不一一举例限定。此后可以根据暂存区空间粒度和申请空间大小确定暂存区数量,且暂存区数量至少应满足申请空间大小。
比如,128k的大块数据写,如果固态硬盘上报的暂存区空间粒度为4k,那么为了简单操作,上层应用要能够一次性申请出连续的32个4K粒度大小的暂存区空间。然后将起始暂存区入口对应的暂存区索引,以及暂存区入口的个数分别填充到写暂存区接口中的TSI和NTLB字段中,并将 DTF字段填充为用户数据写入功能,然后发送给固态硬盘进行写暂存区命令处理。
此时,本实施例对应的执行过程如下:
第一步、接收写暂存区命令;
第二步、确定暂存区空间粒度;
第三步、确定所述写暂存区命令对应的申请空间大小;
第四步、根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
第五步、确定满足所述暂存区数量的缓存区索引。
第六步、将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请实施例提供的数据同步方法,通过将固态硬盘内部的暂存区空间交由主机的上层应用进行管理,使得固态硬盘不再具有删除暂存区空间数据的权限和能力,此后主机下发写暂存区命令,固态硬盘接收写暂存区命令后,会指明该写暂存区命令使用的固态硬盘内部的暂存区空间范围,使得固态硬盘可以解析得到待写入的暂存区空间范围,并将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。如此,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增temp数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
在上述实施例的基础上,作为优选的实施例,生成包含可回溯数据映射关系的数组之前,还可以记录可回溯数据的逻辑块地址和物理块地址,再根据逻辑块地址和物理块地址构建映射关系,并建立索引。该过程实际为暂存区映射表的构建过程,需要根据可回溯数据的逻辑块地址和物理块地址构建暂存区映射表。
同时,在确定满足所述暂存区数量的缓存区索引之后,可以进一步确定起始暂存区入口对应的暂存区索引,并将所述暂存区索引、所述暂存区数量分别对应添加至所述参数中的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数。将所述参数中的暂存区状态设为用户数据写入功能。
可选的,将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中包括:
在所述写暂存区命令中的暂存区状态为所述用户数据写入工时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围。
此外,还可以接收源于上层应用的暂存区删除指令,该暂存区删除指令对应的暂存区状态为无用户数写入。在其他实施例中,上层应用也可以直接复用写暂存区接口删除固态硬盘内部暂存区的数据。除了要标明要删除的TSI和NTLB外,还需要将DTF字段填充为无用户数据写入,只删除暂存区功能,然后发送给固态硬盘进行写暂存区命令处理。
在所有用户写入完成后,还可以将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中,同时可以释放被占用的暂存区空间资源。
作为一种优选的执行方式,接收源于上层应用的暂存区删除指令之前,还可以将待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数添加至所述暂存区删除指令。如此,在执行暂存区删除时,可以直接根据待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数确定所需要删除的暂存区,快速确定所需要删除的暂存区,提高暂存区删除效率,保障在下一次接收到写暂存区命令时存在足够数量的空闲暂存区。
在本申请的其他实施例中,可以先在固态硬盘中扩展暂存区功能字段,从而配置暂存区,此时对应的完整执行过程如下:
第一步、在硬盘内部配置暂存区功能相关字段;
第二步、通过写缓存区命令字和暂存区功能相关字段扩展所述暂存区空间范围;
第三步、接收写暂存区命令;
第四步、确定所述写暂存区命令对应的暂存区空间范围;
第五步、将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
其中,在执行第二步时,可以配置写缓存区命令字的参数,从而设置逻辑块的起始地址、个数,并配置暂存区状态。同时在固态硬盘中,还可以配置暂存区映射表,以便在执行数据同步时,将用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
可以看出,本申请确保了上层应用和固态硬盘对于暂存区空间数据的同一和一致性,避免了二者存在数据一致性偏差,以及由此产生的上层应用回溯数据失败。在此过程中,固态硬盘不再具有主动删除暂存区空间数据的能力,仅在接收到主机下发的写暂存区命令后,固态硬盘具有数据更新至暂存区映射表的权限。
下面对本申请实施例提供的一种数据同步***进行介绍,下文描述的数据同步***与上文描述的数据同步方法可相互对应参照。
图3为本申请实施例提供的一种数据同步***的结构图,如图3所示,数据同步***包括:
写暂存区命令接收模块,用于接收写暂存区命令;
确定模块,用于确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围由主机上层应用管理;
更新模块,用于将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请实施例通过应用写暂存区命令接收模块、确定模块和更新模块,将固态硬盘内部的暂存区空间交由主机的上层应用进行管理,使得固态硬盘不再具有删除暂存区空间数据的权限和能力,此后主机下发写暂存区命令,固态硬盘接收写暂存区命令后,会指明该写暂存区命令使用的固态硬盘内部的暂存区空间范围,使得固态硬盘可以解析得到待写入的暂存区空间范围,并将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。如此,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增temp数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
基于上述实施例,作为优选的实施例,还包括:
暂存模块,用于在硬盘内部配置暂存区功能相关字段;所述暂存区功能相关字段包括暂存区大小、暂存区空间分配粒度和暂存区映射表表项个数,用于配置所述暂存区空间范围。
基于上述实施例,作为优选的实施例,还包括:
扩展模块,用于通过写缓存区命令字扩展所述暂存区空间范围。
基于上述实施例,作为优选的实施例,扩展模块包括:
配置子模块,用于配置写缓存区命令字的参数;其中,所述参数包括暂存区待删除逻辑块的起始地址、暂存区待删除逻辑块的个数和暂存区状态;
扩展子模块,用于根据所述参数扩展所述暂存区空间范围。
基于上述实施例,作为优选的实施例,还包括:
生成模块,用于生成所述暂存区映射表。
基于上述实施例,作为优选的实施例,生成模块包括:
生成子模块,用于生成包含可回溯数据映射关系的数组,并将所述数组作为暂存区映射表。
基于上述实施例,作为优选的实施例,还包括:
记录子模块,用于记录所述可回溯数据的逻辑块地址和物理块地址;
构建子模块,用于根据所述逻辑块地址和物理块地址构建映射关系,并建立索引。
基于上述实施例,作为优选的实施例,确定模块包括:
第一确定子模块,用于确定暂存区空间粒度;
第二确定子模块,用于确定所述写暂存区命令对应的申请空间大小;
第三确定子模块,用于根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
第四确定子模块,用于确定满足所述暂存区数量的缓存区索引。
基于上述实施例,作为优选的实施例,还包括:
第五确定子模块,用于确定起始暂存区入口对应的暂存区索引;
添加子模块,用于将所述暂存区索引、所述暂存区数量分别对应添加至所述参数中的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数。
基于上述实施例,作为优选的实施例,还包括:
设定子模块,用于将所述参数中的暂存区状态设为用户数据写入功能。
基于上述实施例,作为优选的实施例,更新模块包括:
第一更新子模块,用于在所述写暂存区命令中的暂存区状态为所述用户数据写入工时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围。
基于上述实施例,作为优选的实施例,还包括:
第二更新子模块,用于将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中。
基于上述实施例,作为优选的实施例,还包括:
释放子模块,用于释放被占用的暂存区空间资源。
基于上述实施例,作为优选的实施例,还包括:
暂存区删除指令接收模块,用于接收源于上层应用的暂存区删除指令;其中,所述暂存区删除指令对应的暂存区状态为无用户数写入。
基于上述实施例,作为优选的实施例,还包括:
添加模块,用于将待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数添加至所述暂存区删除指令。
基于上述实施例,作为优选的实施例,暂存模块包括:
暂存子模块,用于在识别控制数据结构中的特殊供应区域配置暂存区功能相关字段。
基于上述实施例,作为优选的实施例,还包括:
识别控制数据结构获取模块,用于通过识别控制命令获取所述识别控制数据结构,并解析得到所述暂存区功能相关字段;
分配模块,用于根据所述暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
该计算机程序被执行时,至少用于执行如下步骤:
接收写暂存区命令;
确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围由主机上层应用管理;
将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请实施例提供的计算机可读存储介质,其上的计算机程序被执行时,通过将固态硬盘内部的暂存区空间交由主机的上层应用进行管理,使得固态硬盘不再具有删除暂存区空间数据的权限和能力,此后主机下发写暂存区命令,固态硬盘接收写暂存区命令后,会指明该写暂存区命令使用的固态硬盘内部的暂存区空间范围,使得固态硬盘可以解析得到待写入的暂存区空间范围,并将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。如此,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增temp数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
本申请还提供了一种电子设备,参见图4,本申请实施例提供的一种电子设备的结构图,如图4所示,可以包括处理器1410和存储器1420。
其中,处理器1410可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1410可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1410也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1410可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1410还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1420可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1420还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器1420至少用于存储以下计算机程序1421,其中,该计算机程序被处理器1410加载并执行之后,能够实现前述任一实施例公开的方法的相关步骤。另外,存储器1420所存储的资源还可以包括操作***1422和数据1423等,存储方式可以是短暂存储或者永久存储。其中,操作***1422可以包括Windows、Linux、Android等。
在一些实施例中,电子设备还可包括有显示屏1430、输入输出接口1440、通信接口1450、传感器1460、电源1470以及通信总线1480。
当然,图4所示的电子设备的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图4所示的更多或更少的部件,或者组合某些部件。
该电子设备中存储器上的计算机程序被执行时,至少用于执行如下步骤:
接收写暂存区命令;
确定所述写暂存区命令对应的暂存区空间范围;
将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中。
本申请实施例提供的电子设备,其包含存储器和处理器,处理器处理存储器上的计算机程序时,通过将固态硬盘内部的暂存区空间交由主机的上层应用进行管理,使得固态硬盘不再具有删除暂存区空间数据的权限和能力,此后主机下发写暂存区命令,固态硬盘接收写暂存区命令后,会指明该写暂存区命令使用的固态硬盘内部的暂存区空间范围,使得固态硬盘可以解析得到待写入的暂存区空间范围,并将被复写的用户数据对应的闪存转换层映射表项更新到待写入的暂存区空间范围对应的暂存区映射表中。如此,既实现了上层应用与SSD双方暂存区空间数据的同步,又不增加额外的数据同步接口产生对***写入性能的影响,确保上层应用准确地回溯到SSD内部的有效数据,避免了新增暂存区数据同步接口带来的开发复杂度和***性能下降的风险,增强了存储***运行的稳定性和可靠性。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的***而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (16)
1.一种数据同步方法,其特征在于,包括:
接收写暂存区命令;
确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围为由主机上层应用管理的硬盘区域;
将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中;
其中,将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中包括:
在所述写暂存区命令中的暂存区状态为所述用户数据写入时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围;
其中,在所有用户写入完成后,还包括:
将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中;
其中,将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中之后,还包括:
释放上层应用中被占用的暂存区空间资源;
接收源于上层应用的暂存区删除指令;其中,所述暂存区删除指令对应的暂存区状态为无用户数写入。
2.根据权利要求1所述的数据同步方法,其特征在于,还包括:
在硬盘内部配置暂存区功能相关字段;所述暂存区功能相关字段包括暂存区大小、暂存区空间分配粒度和暂存区映射表表项个数,用于配置所述暂存区空间范围。
3.根据权利要求1所述的数据同步方法,其特征在于,还包括:
通过写缓存区命令字扩展所述暂存区空间范围。
4.根据权利要求3所述的数据同步方法,其特征在于,通过写缓存区命令字扩展所述暂存区空间范围包括:
配置写缓存区命令字的参数;其中,所述参数包括暂存区待删除逻辑块的起始地址、暂存区待删除逻辑块的个数和暂存区状态;
根据所述参数扩展所述暂存区空间范围。
5.根据权利要求1所述的数据同步方法,其特征在于,将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中之前,还包括:
生成所述暂存区映射表。
6.根据权利要求5所述的数据同步方法,其特征在于,生成所述暂存区映射表包括:
生成包含可回溯数据映射关系的数组,并将所述数组作为暂存区映射表。
7.根据权利要求6所述的数据同步方法,其特征在于,生成包含可回溯数据映射关系的数组之前,还包括:
记录所述可回溯数据的逻辑块地址和物理块地址;
根据所述逻辑块地址和物理块地址构建映射关系,并建立索引。
8.根据权利要求4所述的数据同步方法,其特征在于,确定所述写暂存区命令对应的暂存区空间范围包括:
确定暂存区空间粒度;
确定所述写暂存区命令对应的申请空间大小;
根据所述暂存区空间粒度和所述申请空间大小确定暂存区数量;
确定满足所述暂存区数量的缓存区索引。
9.根据权利要求8所述的数据同步方法,其特征在于,确定满足所述暂存区数量的缓存区索引之后,还包括:
确定起始暂存区入口对应的暂存区索引;
将所述暂存区索引、所述暂存区数量分别对应添加至所述参数中的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数。
10.根据权利要求9所述的数据同步方法,其特征在于,还包括:
将所述参数中的暂存区状态设为用户数据写入功能。
11.根据权利要求1所述的数据同步方法,其特征在于,接收源于上层应用的暂存区删除指令之前,还包括:
将待删除的暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数添加至所述暂存区删除指令。
12.根据权利要求2所述的数据同步方法,其特征在于,在硬盘内部配置暂存区功能相关字段包括:
在识别控制数据结构中的特殊供应区域配置暂存区功能相关字段。
13.根据权利要求12所述的数据同步方法,其特征在于,还包括:
通过识别控制命令获取所述识别控制数据结构,并解析得到所述暂存区功能相关字段;
根据所述暂存区功能相关字段在上层应用中分配相应大小的暂存区空间。
14.一种数据同步***,其特征在于,包括:
接收模块,用于接收写暂存区命令;
确定模块,用于确定所述写暂存区命令对应的暂存区空间范围;其中,所述暂存区空间范围为由主机上层应用管理的硬盘区域;
更新模块,用于将被复写的用户数据对应的闪存转换层映射表项更新至待写入的暂存区空间范围对应的暂存区映射表中;
其中,更新模块包括:
第一更新子模块,用于在所述写暂存区命令中的暂存区状态为所述用户数据写入工时,将被复写的用户数据对应的闪存转换层映射表项依次更新到暂存区映射表中暂存区待删除逻辑块的起始地址和暂存区待删除逻辑块的个数指定的暂存区表范围;
第二更新子模块,用于将对应写入的物理块地址更新至所述闪存转换层映射表中被复写的表项中;
释放子模块,用于释放被占用的暂存区空间资源;
暂存区删除指令接收模块,用于接收源于上层应用的暂存区删除指令;其中,所述暂存区删除指令对应的暂存区状态为无用户数写入。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-13任一项所述的数据同步方法的步骤。
16.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-13任一项所述的数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310194721.XA CN115878051B (zh) | 2023-03-03 | 2023-03-03 | 一种数据同步方法、数据同步***、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310194721.XA CN115878051B (zh) | 2023-03-03 | 2023-03-03 | 一种数据同步方法、数据同步***、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878051A CN115878051A (zh) | 2023-03-31 |
CN115878051B true CN115878051B (zh) | 2023-06-09 |
Family
ID=85761861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310194721.XA Active CN115878051B (zh) | 2023-03-03 | 2023-03-03 | 一种数据同步方法、数据同步***、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878051B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704140A (zh) * | 2021-08-27 | 2021-11-26 | 锐掣(杭州)科技有限公司 | 一种固态硬盘地址映射方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9389952B2 (en) * | 2008-06-18 | 2016-07-12 | Super Talent Technology, Corp. | Green NAND SSD application and driver |
TWI426528B (zh) * | 2009-09-30 | 2014-02-11 | Phison Electronics Corp | 用於快閃記憶體的區塊管理方法、控制器與儲存系統 |
CN102087586B (zh) * | 2009-12-02 | 2012-05-30 | 成都市华为赛门铁克科技有限公司 | 数据处理方法及装置 |
CN104423888B (zh) * | 2013-08-23 | 2017-10-03 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
US9864529B1 (en) * | 2014-01-27 | 2018-01-09 | Western Digital Technologies, Inc. | Host compatibility for host managed storage media |
US10248356B2 (en) * | 2014-10-21 | 2019-04-02 | Dropbox, Inc. | Using scratch extents to facilitate copying operations in an append-only storage system |
US10552329B2 (en) * | 2014-12-23 | 2020-02-04 | Prophetstor Data Services, Inc. | SSD caching system for hybrid storage |
CN106776376B (zh) * | 2015-11-24 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
CN106020723B (zh) * | 2016-05-19 | 2019-10-25 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
US10474362B2 (en) * | 2016-10-14 | 2019-11-12 | Smart Modular Technologies, Inc. | Flash-based block storage system with trimmed space management and method of operation thereof |
CN111610931B (zh) * | 2019-02-26 | 2023-05-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US10872036B1 (en) * | 2019-05-31 | 2020-12-22 | Netapp, Inc. | Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof |
CN110427528A (zh) * | 2019-07-31 | 2019-11-08 | 东莞记忆存储科技有限公司 | Ssd标识符测试方法、装置、计算机设备及存储介质 |
US11036625B1 (en) * | 2020-04-24 | 2021-06-15 | Micron Technology, Inc. | Host-resident translation layer write command associated with logical block to physical address of a memory device |
US11809328B2 (en) * | 2021-04-01 | 2023-11-07 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
CN114356246B (zh) * | 2022-03-17 | 2022-05-13 | 北京得瑞领新科技有限公司 | Ssd内部数据的存储管理方法、装置、存储介质及ssd设备 |
CN115543868B (zh) * | 2022-11-24 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、电子设备及可读介质 |
-
2023
- 2023-03-03 CN CN202310194721.XA patent/CN115878051B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704140A (zh) * | 2021-08-27 | 2021-11-26 | 锐掣(杭州)科技有限公司 | 一种固态硬盘地址映射方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115878051A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3726364B1 (en) | Data write-in method and solid-state drive array | |
US11947489B2 (en) | Creating snapshots of a storage volume in a distributed storage system | |
US8924664B2 (en) | Logical object deletion | |
US20100174865A1 (en) | Dynamic data security erasure | |
JP4884041B2 (ja) | 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法 | |
CN103412822B (zh) | 操作非易失性内存和数据操作的方法和相关装置 | |
CN106326229B (zh) | 一种嵌入式***的文件存储方法和装置 | |
US10922276B2 (en) | Online file system check | |
US20090300082A1 (en) | Method for memory space management | |
CN106557427B (zh) | 共享内存数据库的内存管理方法及装置 | |
KR20150104434A (ko) | 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 | |
US10152278B2 (en) | Logical to physical sector size adapter | |
EP3385846B1 (en) | Method and device for processing access request, and computer system | |
CN101303667B (zh) | 建立磁盘空簇表及查找磁盘空簇的方法和装置 | |
CN106326132B (zh) | 存储***、存储管理装置、存储器、混合存储装置及存储管理方法 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
CN115878051B (zh) | 一种数据同步方法、数据同步***、存储介质和电子设备 | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
WO2012008731A2 (ko) | 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
CN116069685B (zh) | 一种存储***写控制方法、装置、设备及可读存储介质 | |
CN117331498A (zh) | 一种固态硬盘映射表构建方法、装置、设备及介质 | |
US20120324186A1 (en) | Method, apparatus and computer for data operation | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 | |
CN112286725A (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 |