数据存储方法及装置与流程

文档序号:12718551阅读:204来源:国知局
数据存储方法及装置与流程

本公开涉及计算机技术领域,具体地,涉及一种数据存储方法及装置。



背景技术:

随着数据存储技术的高速发展,诸如SSD(Solid State Drives,固态硬盘)等等数据存储装置由于具有读写速度快、抗震动、低功耗、无噪音、低热量、以及质量轻等特点,已被广泛应用于军事、车载、工业、医疗、和航空等领域。

元数据(Metadata)又被称为中介数据或中继数据,是用来描述资源数据的属性信息的数据,比如元数据可以指示资源数据的存储位置、数据量等等信息。在将资源数据存入数据存储装置时,通常会对应存储资源数据的元数据,进而实现管理资源数据的目的。

目前,通常会周期性地对存储在非易失性存储器(比如闪存FLASH),中的元数据进行刷新,即周期性地将最新的元数据存入FLASH中,以便对资源数据进行管理。



技术实现要素:

本公开的目的是提供一种数据存储方法及装置,用于减小元数据写入非易失性存储器的数据量。

第一方面,提供一种数据存储方法,应用于数据存储装置,包括:

将数据写入所述数据存储装置;

根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据,以得到更新版本的元数据;

确定所述更新版本的元数据与所述数据存储装置的非易失性存储器中的最新版本的元数据之间的差异数据;

将所述差异数据存入所述非易失性存储器。

可选的,所述非易失性存储器中存储有基础版本的元数据,及至少一个历史确定的差异数据,所述方法还包括:

利用所述至少一个历史确定的差异数据,对所述基础版本的元数据进行更新,以得到所述最新版本的元数据。

可选的,将所述差异数据存入所述非易失性存储器,包括:

在所述差异数据达到预设阈值时,将所述差异数据存入所述非易失性存储器。

可选的,在根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据之前,还包括:

判断所述数据的写入方式,其中,所述写入方式包括随机写和顺序写;

根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据,以得到更新版本的元数据,包括:

在所述数据的写入方式为随机写时,根据所述数据的存储信息,在所述内存中更新元数据,以得到更新版本的元数据。

可选的,在判断所述数据的写入方式之后,还包括:

在所述数据的写入方式为顺序写时,将所述数据存储在所述数据存储装置的起始地址和所述数据的数据量存入所述非易失性存储器。

可选的,将所述数据存储在所述数据存储装置的起始地址和所述数据的数据量存入所述非易失性存储器,包括:

将包括所述起始地址、所述数据量、所述非易失性存储器的坏块分布状况、及所述非易失性存储器的物理分布状况的信息存入所述非易失性存储器。

第二方面,提供一种数据存储装置,包括内存、非易失性存储器及控制器;其中,

所述控制器用于将数据写入所述数据存储装置;根据所述数据的存储信息,在所述内存中更新元数据,以得到更新版本的元数据;确定所述更新版本的元数据与所述非易失性存储器中的最新版本的元数据之间的差异数据;及,将所述差异数据存入所述非易失性存储器。

可选的,所述非易失性存储器中存储有基础版本的元数据,及至少一个历史确定的差异数据,所述控制器用于:

利用所述至少一个历史确定的差异数据,对所述基础版本的元数据进行更新,以得到所述最新版本的元数据。

可选的,所述控制器用于:

在所述差异数据达到预设阈值时,将所述差异数据存入所述非易失性存储器。

可选的,所述控制器还用于:

在根据所述数据的存储信息,在所述内存中更新元数据之前,判断所述数据的写入方式,其中,所述写入方式包括随机写和顺序写;

在所述数据的写入方式为随机写时,根据所述数据的存储信息,在所述内存中更新元数据,以得到更新版本的元数据。

可选的,所述控制器还用于:

在判断所述数据的写入方式之后,在所述数据的写入方式为顺序写时,将所述数据存储在所述数据存储装置的起始地址和所述数据的数据量存入所述非易失性存储器。

可选的,所述控制器用于:

将包括所述起始地址、所述数据量、所述非易失性存储器的坏块分布状况、及所述非易失性存储器的物理分布状况的信息存入所述非易失性存储器。

本公开实施例中,可以在将数据写入数据存储装置时,根据写入的数据的信息,更新存储在数据存储装置的内存中的元数据,进而得到更新版本的元数据,再将更新版本的元数据与存储在非易失性存储器中的最新版本的元数据进行比较,得到差异数据,最后将差异数据存入非易失性存储器中。这样,在刷新非易失性存储器中的元数据时,存入非易失性存储器中的是相邻两个版本的元数据间的差异数据,而不是存入的完整的更新版本的元数据,可以有效地减小了元数据的写入量,同时,由于对非易失性存储器而言,擦写的次数可能是有限的,减小了元数据的写入量也就一定程度上减少了擦写的次数,相对延长了数据存储装置的寿命。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1为本公开实施例中数据存储方法的流程图。

图2为本公开实施例中写元数据版本更新方式的示意图。

图3为本公开实施例中数据存储装置的结构示意图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

在对本公开提供的数据存储方法进行说明之前,首先对本公开涉及的相关技术进行说明。

本公开实施例中,数据存储装置例如可以是SSD,即,用固态电子存储芯片阵列制成的硬盘。目前,SSD的存储介质一般可以有两种,一种是采用FLASH芯片作为存储介质,另外一种是采用动态随机存取存储器(Dynamic Random Access Memory,DRAM)作为存储介质。其中,采用FLASH芯片作为存储介质的SSD,它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡等样式。

相关技术中,数据存储装置(比如SSD)的非易失性存储器FLASH芯片中存储有数据存储装置中的全部资源数据的元数据,在数据存储装置上电后,元数据可以被读到内存中,那么在向数据存储装置写入数据时,写入数据的元数据会先记录在数据存储装置的内存中,也就是对内存中的元数据进行更新,随着越来越多的数据写入数据存储装置,将导致内存中的元数据不断地更新。当内存中的元数据更新到一定程度(比如设定内存中元数据的写入量达到全盘元数据的1/8)之后便会触发元数据的刷新,即将内存中更新后的元数据存入FLASH芯片中。通常情况下,为了尽可能地恢复因异常掉电而丢失的数据,一般不会将元数据的刷新周期设置得太大,因此,相邻两个版本的元数据之间有大部分是相同的,可见,存储的元数据存在重合部分,大量重复的元数据占用较多的非易失存储器的空间。

本公开充分考虑了相关技术,提供一种数据存储方法,用于减小元数据写入非易失性存储器的量。请参见图1,图1是根据一示例性实施例示出的一种数据存储方法的流程图,该方法可以应用于数据存储装置。如图1所示,该方法包括以下步骤:

步骤S11:将数据写入数据存储装置。

步骤S12:根据数据的存储信息,在数据存储装置的内存中更新元数据,以得到更新版本的元数据。

步骤S13:确定更新版本的元数据与数据存储装置的非易失性存储器中的最新版本的元数据之间的差异数据。

步骤S14:将差异数据存入非易失性存储器。

元数据也就是用来记录数据属性信息的数据,比如元数据可以包括数据的存储地址,那么通过元数据便能够从数据存储装置中找到相应的数据。内存中存储的元数据可以是用于描述大量的数据的元数据,比如可以包括数据存储装置存储的全部数据中每个数据的存储地址,等等。

在将数据写入数据存储装置时,可以根据写入的数据的存储信息,对数据存储装置的内存中存储的元数据进行更新。数据的存储信息比如可以包括数据存储在数据存储装置中的地址等信息,更新后便能得到更新版本的元数据,即记录有写入的数据的属性信息的元数据。也就是说,每写入一个数据,都会对内存中的元数据进行更新。

在得到更新版本的元数据后,可以计算内存中存储的更新版本的元数据与非易失性存储器(比如FLASH芯片)中最新版本的元数据之间的差异数据,然后将差异数据存入非易失性存储器中。由于内存中的更新版本的元数据是在非易失性存储器中最新版本的元数据的基础上进行更新的,因此,内存中的更新版本的元数据与非易失性存储器中的最新版本的元数据之间的差异不会太大,那么计算两个版本的元数据之间的差异,比如可以在两个版本的元数据间进行异或运算,便可以得到基本为0的稀疏矩阵,对稀疏矩阵进行压缩,便可以得到差异数据。当然,由于差异数据的数据量可能较小,那么在存储差异数据时,可以将多个差异数据存储在同一页(page)存储空间中,进而节省存储空间。

在计算差异数据时,非易失性存储器中可能只存储有一个版本的元数据,说明历史上还没有存储过差异数据,那么可以直接将这一个版本的元数据确定为最新版本的元数据来计算差异数据;或者,在计算差异数据时,非易失性存储器中可能存储有不止一个版本的元数据,说明历史上有存入过差异数据,以下将对存在差异数据的情况下,重建最新版本的元数据的方式进行说明。

可选的,非易失性存储器中存储有基础版本的元数据,及至少一个历史确定的差异数据,那么可以利用至少一个历史确定的差异数据,对基础版本的元数据进行更新,以得到最新版本的元数据。

例如,请参见图2,数据存储装置的内存中存储有根据写入的数据更新后的更新版本的元数据,非易失性存储器中存储有基础版本的元数据、差异数据1及差异数据2,那么可以从基础版本的元数据开始,分别更新差异数据1和差异数据2,进而得到非易失性存储器中的最新版本的元数据。

当然,为了避免迭代次数过多,可以定期地刷新基础版本的元数据,也就是将更新差异数据后的元数据作为新的基础版本的元数据,本公开实施例对此不作限定。

通过上述技术方案,存入非易失性存储的是相邻两个版本的元数据之间的差异数据,从而可以避免将重复的元数据写入内存中,这样即能够达到刷新元数据的目的,又能有效减小元数据的写入量,同时也减少了非易失性存储器的擦写的次数,相对延长了数据存储装置的寿命。

可选的,可以在差异数据达到预设阈值时,再将差异数据存入非易失性存储器。

本公开实施例对于预设阈值究竟是多少不作限定,预设阈值可以是数据存储装置在出厂时设置好的,或者也可以是用户根据使用情况自行设定,以及设定之后还能根据需要进行修改的。例如,可以设定当差异数据达到非易失性存储器中的最新版本的元数据的1/16时,则认为差异数据达到预设阈值。

也就是说,无需在每写入一个数据时就将差异数据写入非易失性存储器中,随着数据的不断写入,内存中的元数据也不断地进行更新,那么可以在内存中的更新版本的元数据与非易失性存储器中的最新版本的元数据之间的差异数据达到预设阈值时,再去将差异数据存入非易失性存储器中。这样,既能达到刷新元数据的目的,也尽可能地减小了数据存储装置的运算量。

可选的,在根据数据的存储信息,在数据存储装置的内存中更新元数据之前,还可以判断数据的写入方式,其中,写入方式包括随机写和顺序写;那么可以在数据的写入方式为随机写时,再根据数据的存储信息,在内存中更新元数据,以得到更新版本的元数据。

在写入数据时,可以对写操作进行隔离,分离出随机写和顺序写,比如可以在非易失性存储器的介质层提供写入隔离,将随机写与顺序写隔离到不同的写入点,进而达到分别管理随机写数据的元数据和顺序写数据的元数据的目的。本公开实施例中,可以在写入的数据的写入方式为随机写时,执行步骤S11-步骤S14的数据存储方法,进而达到减小随机写方式下的元数据的写入量。

可选的,在数据的写入方式为顺序写时,可以将数据存储在数据存储装置的起始地址和数据的数据量存入非易失性存储器。

由于写入方式为顺序写的数据可能是数据量较大的数据,比如数据量为2G的流媒体数据,等等。在将随机写和顺序写隔离到不同的写入点后,顺序写的数据可以写入一段连续的存储空间中,那么在记录顺序写的数据的元数据时,只需记录数据存储的起始地址以及数据量大小即可,那么在恢复数据时,可以通过计算得出存入的数据存储在哪段连续的地址中,进而找到存入的数据。当然,由于通过本公开实施例中的方式,得到的顺序写数据的元数据的数据量较小,那么可以将多个顺序写数据的元数据存储在同一页(page)中,以节省非易失性存储器的存储空间。通过这样的方式,可以较好地减小顺序写数据的元数据量。

可选的,在数据的写入方式为顺序写的情况下,可以将包括起始地址、数据量、非易失性存储器的坏块分布状况、及非易失性存储器的物理分布状况的信息存入非易失性存储器。

也就是说,在存储顺序写数据的元数据时,为了能够更加准确地预测出顺序写数据的存储位置,除了记录记录数据存储的起始地址和数据量外,还可以记录非易失性存储器的坏块分布状况和物理分布状况。在预测存储的随机写数据的存储位置时,可以根据非易失性存储器的物理分布状况得到该非易失性存储器的地址跳转规律,再通过非易失性存储器的坏块分布状况除去其中的坏块,便能够较为准确地得到顺序写数据的存储位置。这样,可以在减小顺序写数据的元数据量的同时,更为准确的记录数据的属性信息。

基于同一发明构思,本公开还提供了一种数据存储装置,该数据存储装置能够执行上述的数据存储方法。请参考图3,图3是根据一示例性实施例示出的一种数据存储装置的示意图。如图3所示,该装置300包括内存301、非易失性存储器302及控制器303。

控制器303用于将数据写入数据存储装置300;根据数据的存储信息,在内存301中更新元数据,以得到更新版本的元数据;确定更新版本的元数据与非易失性存储器302中的最新版本的元数据之间的差异数据;及,将差异数据存入非易失性存储器302。

可选的,非易失性存储器302中存储有基础版本的元数据,及至少一个历史确定的差异数据,控制器303用于:

利用至少一个历史确定的差异数据,对基础版本的元数据进行更新,以得到最新版本的元数据。

可选的控制器303用于:

在差异数据达到预设阈值时,将差异数据存入非易失性存储器302。

可选的控制器303还用于:

在根据数据的存储信息,在内存301中更新元数据之前,判断数据的写入方式,其中,写入方式包括随机写和顺序写;

在数据的写入方式为随机写时,根据数据的存储信息,在内存301中更新元数据,以得到更新版本的元数据。

可选的控制器303还用于:

在判断数据的写入方式之后,在数据的写入方式为顺序写时,将数据存储在数据存储装置300的起始地址和数据的数据量存入非易失性存储器302。

可选的控制器303用于:

将包括起始地址、数据量、非易失性存储器302的坏块分布状况、及非易失性存储器302的物理分布状况的信息存入非易失性存储器302。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将固态硬盘的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得数据存储装置执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

具体来讲,本申请实施例中的一种数据存储方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种数据存储方法对应的计算机程序指令被一数据存储装置,比如固态硬盘读取或被执行时,包括如下步骤:

将数据写入所述数据存储装置;

根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据,以得到更新版本的元数据;

确定所述更新版本的元数据与所述数据存储装置的非易失性存储器中的最新版本的元数据之间的差异数据;

将所述差异数据存入所述非易失性存储器。

可选的,所述非易失性存储器中存储有基础版本的元数据,及至少一个历史确定的差异数据,所述存储介质中还存储有另外一些步骤,所述另外一些步骤在被执行过程中,还包括:

利用所述至少一个历史确定的差异数据,对所述基础版本的元数据进行更新,以得到所述最新版本的元数据。

可选的,所述存储介质中存储的与步骤:将所述差异数据存入所述非易失性存储器,对应的计算机指令在被执行过程中,包括:

在所述差异数据达到预设阈值时,将所述差异数据存入所述非易失性存储器。

可选的,所述存储介质中存储的与步骤:根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据,对应的计算机指令在被执行之前,还包括:

判断所述数据的写入方式,其中,所述写入方式包括随机写和顺序写;

所述存储介质中存储的与步骤:根据所述数据的存储信息,在所述数据存储装置的内存中更新元数据,以得到更新版本的元数据,对应的计算机指令在被执行过程中,包括:

在所述数据的写入方式为随机写时,根据所述数据的存储信息,在所述内存中更新元数据,以得到更新版本的元数据。

可选的,所述存储介质中存储的与步骤:判断所述数据的写入方式,对应的计算机指令在被执行之后,还包括:

在所述数据的写入方式为顺序写时,将所述数据存储在所述数据存储装置的起始地址和所述数据的数据量存入所述非易失性存储器。

可选的,所述存储介质中存储的与步骤:将所述数据存储在所述数据存储装置的起始地址和所述数据的数据量存入所述非易失性存储器,对应的计算机指令在被执行过程中,包括:

将包括所述起始地址、所述数据量、所述非易失性存储器的坏块分布状况、及所述非易失性存储器的物理分布状况的信息存入所述非易失性存储器。

以上所述,以上实施例仅用以对本公开的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本公开的方法及其核心思想,不应理解为对本公开的限制。本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1