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

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

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



背景技术:

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

目前,为了提高数据存储装置(比如SSD)的读写效率,可以为SSD配置多个处理器,比如可以配置三个或以上的处理器。在多处理器的环境下,分配方式通常是分别为每个处理器平均地分配一个或多个存储单元(比如计算机闪存设备(NAND)),那么SSD的多个处理器将分别各自管理分配的NAND。

然而,由于NAND存在有坏块,且坏块并不是均匀分布的,因此有的NAND坏块多,有的NAND坏块少,这将使得管理坏块较多的处理器读写的负载较低,管理坏块较少的处理器读写的负载较高。可见,现有的管理NAND的方式可能导致数据存储装置的处理器负载不均衡。



技术实现要素:

本公开的目的是提供一种数据存储方法及装置,用于解决数据存储装置的处理器负载不均衡的技术问题。

第一方面,提供一种数据存储方法,包括:

所述数据存储装置接收写入数据的请求;

所述数据存储装置包括的至少两个处理器中的第一处理器获取所述数据存储装置的数据写入状态参数;

所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址;

所述数据存储装置将所述数据写入所述地址对应的存储空间。

可选的,所述至少两个处理器包括所述第一处理器和至少一个第二处理器,所述第一处理器与所述至少一个第二处理器中的每个处理器相连,

所述数据存储装置接收用于写入数据的请求,包括:

所述至少一个第二处理器中的目标第二处理器接收用于写入所述数据的请求;

所述目标第二处理器根据接收的用于写入所述数据的请求,生成请求信息;

所述目标第二处理器向所述第一处理器发送所述请求信息,以请求所述第一处理器获取所述数据存储装置的数据写入状态参数。

可选的,在所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址之后,所述方法还包括:

所述第一处理器将所述地址发送给所述目标第二处理器。

可选的,所述第一处理器获取所述数据存储装置的数据写入状态参数,包括:

所述第一处理器获取所述数据存储装置包括的各个存储单元中每个存储块当前的块编程时间、块擦除时间、块读取错误率、以及所述各个存储单元的坏块分布情况中的至少一者。

可选的,所述方法还包括:

所述第一处理器根据所述数据存储装置的数据写入状态参数,新建磁盘阵列RAID条带结构;或,

所述第一处理器根据所述数据存储装置的数据写入状态参数,以及历史创建的RAID条带结构,新建RAID条带结构。

可选的,所述数据存储装置将所述数据写入所述地址对应的存储空间,包括:

所述第一处理器将所述数据写入所述地址对应的存储空间,或,所述目标第二处理器将所述数据写入所述地址对应的存储空间。

第二方面,提供一种数据存储装置,包括:

至少一个存储单元;

至少两个处理器,用于接收写入数据的请求;通过所述至少两个处理器中的第一处理器获取所述数据存储装置的数据写入状态参数;通过所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址;将所述数据写入所述至少一个存储单元中对应于所述地址的存储空间。

可选的,所述至少两个处理器包括所述第一处理器和至少一个第二处理器,所述第一处理器与所述至少一个第二处理器中的每个处理器相连,所述至少一个第二处理器用于:

通过所述至少一个第二处理器中的目标第二处理器接收用于写入所述数据的请求;

通过所述目标第二处理器根据接收的用于写入所述数据的请求,生成请求信息;

通过所述目标第二处理器向所述第一处理器发送所述请求信息,以请求所述第一处理器获取所述数据存储装置的数据写入状态参数。

可选的,所述至少两个处理器还用于:

在所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址之后,通过所述第一处理器将所述地址发送给所述目标第二处理器。

可选的,所述至少两个处理器用于:

通过所述第一处理器获取所述数据存储装置包括的各个存储单元中每个存储块当前的块编程时间、块擦除时间、块读取错误率、以及所述各个存储单元的坏块分布情况中的至少一者。

可选的,所述至少两个处理器还用于:

通过所述第一处理器根据所述数据存储装置的数据写入状态参数,新建磁盘阵列RAID条带结构;或,

通过所述第一处理器根据所述数据存储装置的数据写入状态参数,以及历史创建的RAID条带结构,新建RAID条带结构。

可选的,所述至少两个处理器用于:

通过所述第一处理器将所述数据写入所述地址对应的存储空间,或,通过所述目标第二处理器将所述数据写入所述地址对应的存储空间。

本公开实施例中,数据存储装置在接收到主机发出的用于写入数据的请求时,可以由数据存储装置包括的第一处理器获取数据存储装置的数据写入状态参数,然后根据数据写入状态参数确定写入数据的地址,再将请求写入的数据写入确定的地址所对应的存储空间。通过上述技术方案,可以单独通过一个处理器(即第一处理器)根据整个数据存储装置的数据写入状态参数来确定要将数据写入的位置,由于第一处理器管理的可以是数据存储装置包括的全部存储单元,避免了因给不同处理器分配存储单元而导致的负载不均衡的问题,提升了数据存储装置存储数据的能力。

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

附图说明

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

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

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

具体实施方式

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

首先对本公开的数据存储装置进行介绍。

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

例如请参见图1,数据存储装置10可以包括至少一个存储单元11和至少两个处理器12。图1以包括四个存储单元11、三个处理器12(处理器121、处理器122及处理器123)为例,当然数据存储装置包括的也可以是其他数量的存储单元11和其他数量的处理器12,本公开实施例对此均不作限定。

存储单元11例如可以是SSD中的存储介质,比如为NAND芯片或者DRAM,可以用于存储数据。

处理器12例如可以是SSD中的处理器芯片,处理器芯片是SSD的大脑,其作用比如包括合理调配数据在SSD中的各个NAND芯片上的负荷、承担了整个数据中转,连接NAND芯片和外部SATA(Serial Advanced Technology Attachment,串行硬盘接口技术)接口,等等。

图2是根据一示例性实施例示出的一种数据存储方法的流程图,如图2所示,该数据存储方法可以应用于数据存储装置10中,包括以下步骤。

步骤S21:数据存储装置10接收写入数据的请求。

步骤S22:数据存储装置10包括的至少两个处理器12中的第一处理器12获取数据存储装置10的数据写入状态参数。

步骤S23:第一处理器12根据数据写入状态参数,确定写入数据的地址。

步骤S24:数据存储装置10将数据写入地址对应的存储空间。

数据存储装置10例如是安装在计算机中的SSD,写入数据的请求可以是由计算机的主机发出的,用于将数据写入数据存储装置10的存储单元11中的请求。

可选的,至少两个处理器12可以包括第一处理器12和至少一个第二处理器12,第一处理器12与至少一个第二处理器12中的每个处理器12相连,数据存储装置10接收用于写入数据的请求,可以是至少一个第二处理器12中的目标第二处理器12接收用于写入数据的请求,然后目标第二处理器12根据接收的用于写入数据的请求,生成请求信息,目标第二处理器12向第一处理器12发送请求信息,以请求第一处理器12获取数据存储装置的数据写入状态参数。

也就是说,本公开实施例中,接收主机发出的用于写入数据请求的可以是数据存储装置10中的目标第二处理器12,再由目标第二处理器12请求第一处理器12获取存储装置10的数据写入状态参数。第一处理器12可以根据目标第二处理器12发送的请求信息,获取数据存储装置10的数据写入状态参数,当然,第一处理器1也可以直接获取数据存储装置10的数据写入状态参数。

可选的,对于数据写入状态参数究竟包括哪些参数,本公开实施例不作限定,例如,可以包括的各个存储单元11中每个存储块当前的块编程时间、块擦除时间、块读取错误率、以及各个存储单元11的坏块分布情况中的至少一者。通过获取上述参数,可以较好地评估各个存储单元11的健康状况,进而自适应地分配均衡写入负载,提高数据存储装置10的数据写入能力。

请继续参见图1,由于第一处理器12能够获取存储装置10的数据写入状态参数,因此第一处理器12可以是图1中的处理器123,处理器123与全部的存储单元11均相连,进而能获取全部存储单元11的状态。至少一个第二处理器12可以是图1中的处理器121和处理器122,接收主机发送的写入数据的目标第二处理器12可以是其中的任一个,本公开实施例对此不作限定。

第一处理器12可以专门用来管理全部的存储单元11的处理器,至少一个第二处理器12可以是管理FTL(Flash Translation Layer,闪存转换层)的处理器,可以用于实现地址映射管理、垃圾回收等功能。本公开实施例中,由目标第二处理器12来接收主机发出的写入数据的请求,由第一处理器根据数据存储装置10包括的全部存储单元11的数据写入状态参数来分配地址的,可以通过第一处理器12均衡至少一个第二处理器12的负载,避免了将存储单元划分给各个处理器分别进行管理导致的负载不均衡的状况。同时,数据存储装置10还可以包括缓存芯片,那么数据在进入缓存时,数据存储装置10就可以向主机返回命令完成的指示,因此,使用一个第一处理器12来管理全部的存储单元11并不会造成写操作的延时,在进行读操作时,也可以由至少一个第二处理器12,比如管理FTL的处理器直接查询映射表而不通过第一处理器12将读命令发送给存储单元11,同样不会造成读操作的延时。

可选的,在第一处理器12根据数据写入状态参数,确定写入数据的地址之后,第一处理器12还可以将地址发送给目标第二处理器12。

第一处理器12将根据数据存储装置10的数据写入状态参数确定的写入数据的地址反馈给目标第二处理器12,可以实现目标第二处理器12对地址进行管理,在进行读操作时,便可以直接由目标第二处理器12向存储单元11发送读命令。当然,第一处理器12在确定地址之后也可以反馈给除目标第二处理器12外的其他第二处理器12,本公开实施例对此不作限定。

可选的,第一处理器12可以根据数据存储装置10的数据写入状态参数,新建RAID(Redundant Arrays of Independent Disks,磁盘阵列)条带结构;或,第一处理器12可以根据数据存储装置的数据写入状态参数,以及历史创建的RAID条带结构,新建RAID条带结构。

RAID条带是指把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。本公开实施例中的第一处理器12可以根据能够体现数据存储装置10当前健康状态的数据写入状态参数,自适应地决定RAID条带的构成,这种RAID条带非常的灵活,在存储单元11健康状态较好时,可以有尽可能多的存储粒子(一种存储单位,存储单元11由存储粒子组成)构成条带,以增加用户空间;在存储单元11磨损较大,健康状态较差时减少构成条带的存储粒子的数量,进而提高系统可靠性。另外,由于数据写入状态参数可以包括多个反应存储单元11健康状态的参数,因此可以在多个健康状态维度中实时调整RAID结构,在保证系统可用空间的前提下,最大限度生成可靠性最高的RAID结构。

在新建RAID条带时,如果是第一次建立RAID条带结构,那么根据数据存储装置10当前的数据写入状态建立即可;如果不是第一次建立RAID条带结构,可以根据数据存储装置10当前的数据写入状态以及历史创建的RAID条带结构来新建RAID条带。第一处理器12在新建RAID条带后,可以将新建的RAID条带结构记录在数据区,作为下次重建RAID条带的基础。

例如,通过数据写入状态参数,比如包括各个存储单元11中每个存储块当前的块编程时间、块擦除时间、块读取错误率、以及各个存储单元11的坏块分布情况,从多个维度全面分析当前写入点的健康状况,并将多个维度全面分析得到的健康状况作为变量,通过历史RAID结果调整每个维度的权重从而生成当前RAID条带结构。对于维度权重调整算法究竟为何种算法,本公开实施例不作限定,比如可以是根据计算能力使用简单的贪婪算法,也可以使用负载的多层神经网络算法,等等。每次出现需要RAID重建的Block(数据库中最小存储和处理单位),算法需要重新分析这个Block的健康参数,找出哪一个或几个参数是引起Block健康状态变差的主要原因,然后根据当前Block的健康状态调整引起Block健康状态变差参数的权重,生成新的RAID结构,最大限度的保护健康状态变差的Block,提高系统可靠性。

可选的,可以由第一处理器12将数据写入地址对应的存储空间,或,目标第二处理器12将数据写入地址对应的存储空间。

本公开实施例中,由第一处理器12写入数据,也就是说,第一处理器12能够根据数据存储装置10的数据写入状态参数分配地址,还能进行写操作,由于至少一个第二处理器12可能还需执行一些其他的操作,比如管理地址映射、垃圾回收,等等,因此,通过第一处理器12完成写入数据的操作,分担了至少一个第二处理器12的负载,提升了数据存储装置10的性能。当然,也可以由目标第二处理器12进行写操作,本公开实施例对此不作限定。

本公开实施例中,数据存储装置10在接收到主机发出的用于写入数据的请求时,可以由数据存储装置10包括的第一处理器12获取数据存储装置10的数据写入状态参数,然后根据数据写入状态参数确定写入数据的地址,再将请求写入的数据写入确定的地址所对应的存储空间。通过上述技术方案,可以单独通过一个处理器(即第一处理器12)根据整个数据存储装置10的数据写入状态参数来确定要将数据写入的位置,由于第一处理器12管理的可以是数据存储装置10包括的全部存储单元11,避免了因给不同处理器分配存储单元而导致的负载不均衡的问题,提升了数据存储装置10存储数据的能力。

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

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

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

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

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

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

所述数据存储装置接收写入数据的请求;

所述数据存储装置包括的至少两个处理器中的第一处理器获取所述数据存储装置的数据写入状态参数;

所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址;

所述数据存储装置将所述数据写入所述地址对应的存储空间。

可选的,所述至少两个处理器包括所述第一处理器和至少一个第二处理器,所述第一处理器与所述至少一个第二处理器中的每个处理器相连,所述存储介质中存储的与步骤:所述数据存储装置接收用于写入数据的请求,对应的计算机指令在被执行过程中,包括:

所述至少一个第二处理器中的目标第二处理器接收用于写入所述数据的请求;

所述目标第二处理器根据接收的用于写入所述数据的请求,生成请求信息;

所述目标第二处理器向所述第一处理器发送所述请求信息,以请求所述第一处理器获取所述数据存储装置的数据写入状态参数。

可选的,所述存储介质中存储的与步骤:所述第一处理器根据所述数据写入状态参数,确定写入所述数据的地址,对应的计算机指令在被执行之后,还包括:

所述第一处理器将所述地址发送给所述目标第二处理器。

可选的,所述存储介质中存储的与步骤:述第一处理器获取所述数据存储装置的数据写入状态参数,对应的计算机指令在被执行过程中,包括:

所述第一处理器获取所述数据存储装置包括的各个存储单元中每个存储块当前的块编程时间、块擦除时间、块读取错误率、以及所述各个存储单元的坏块分布情况中的至少一者。

可选的,所述存储介质中还存储有另外一些步骤,所述另外一些步骤在被执行过程中,还包括:

所述第一处理器根据所述数据存储装置的数据写入状态参数,新建磁盘阵列RAID条带结构;或,

所述第一处理器根据所述数据存储装置的数据写入状态参数,以及历史创建的RAID条带结构,新建RAID条带结构。

可选的,所述存储介质中存储的与步骤:所述数据存储装置将所述数据写入所述地址对应的存储空间,对应的计算机指令在被执行过程中,包括:

所述第一处理器将所述数据写入所述地址对应的存储空间,或,所述目标第二处理器将所述数据写入所述地址对应的存储空间。

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

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