一种基于全闪存阵列的随机IO顺序化方法及装置与流程

文档序号:11215858阅读:364来源:国知局
一种基于全闪存阵列的随机IO顺序化方法及装置与流程

本发明涉及数据存储技术领域,特别涉及一种基于全闪存阵列的随机io顺序化方法及装置。



背景技术:

随着现代社会科技的发展,ssd(solidstatedisk,固态硬盘)技术得到了高速的发展。ssd盘在性能、寿命、可靠性和容量上已经达到了企业级别使用的程度,所以在近几年基于全闪存存储介质的阵列研究如火如荼,但在前期的使用中,一些产品仅是将传统的磁盘替换为ssd盘,没有做io栈上的优化,没有发挥出ssd的全部优势。

相比于传统磁盘,ssd盘有以下一些不同点:ssd盘的性能高一个数量级,传统磁盘都是10毫秒级别的时延,而ssd盘可以达到50微妙甚至更低的读写时延;传统磁盘使用磁介质来存储数据,同一个位置可以反复覆盖写,而ssd盘则由于自己本身的特性需要将之前位置的数据擦除之后才能再写数据,由于这个特性,ssd盘也需要进行垃圾回收保证可用容量;ssd盘的寿命与擦写次数有关,传统磁盘的寿命则与写的次数没有特别大的相关关系。由于存在以上的不同点,需要对传统的io栈进行优化才能适配ssd的这些特性,提升全闪存阵列的性能和ssd盘的使用寿命。

现有技术中,一些厂家在对传统的io栈进行优化时,往往是基于ssd盘的物理位置来做顺序化的存储,不能很好的和raid(redundantarraysofindependentdisks,独立硬盘冗余阵列)机制结合,并不能对随机io进行顺序化处理,令ssd盘的使用寿命会受到一定影响,并且在改造已有磁盘阵列产品时有一定的难度。因此,如何更好的与raid机制结合,对随机io进行顺序化处理,提升全闪存阵列的性能和使用寿命,减轻传统磁盘阵列向全闪存阵列转换难度,是现今急需解决的问题。



技术实现要素:

本发明的目的是提供一种基于全闪存阵列的随机io顺序化方法及装置,以通过使用偏移和raid条带映射的方式实现传统磁盘阵列和全闪存阵列的结合,提升了全闪存阵列的性能和使用寿命,减轻了传统磁盘阵列向全闪存阵列转换难度。

为解决上述技术问题,本发明提供一种基于全闪存阵列的随机io顺序化方法,包括:

接收写io数据后,将所述写io数据按预设长度切割为写数据块;

从全部可用的条带中,按预设规则选取目标条带,在映射表中记录所述写数据块各自的lba与各自对应的目标条带的条带号的映射关系,并将所述写数据块填充到各自对应的目标条带中;其中,可用的条带包括未填充满对应的写数据块的目标条带;

对填充满对应的写数据块的目标条带进行数据下盘。

可选的,所述将所述写数据块填充到各自对应的目标条带中,包括:

依次将所述写数据块填充到各自对应的目标条带中。

可选的,所述从全部可用的条带中,按预设规则选取目标条带,包括:

根据所述写数据块的数量,从全部可用的条带中,依次选取使用次数最少且对应的条带号最小的所述目标条带。

可选的,所述将所述写io数据按预设长度切割为写数据块,包括:

将所述写io数据按4kb或8kb的长度切割为所述写数据块。

可选的,该方法还包括:

接收读io请求后,构建读io数据并将所述读io数据按所述预设长度切割为读数据块;

根据所述读数据块各自的lba分别查询所述映射表中是否存在对应的条带号;

若是,则读取所述条带号对应的条带的数据表,并下盘读取相应的数据;

若否,则将lba不存在对应的条带号的读数据块填充0。

此外,本发明还提供了一种基于全闪存阵列的随机io顺序化装置,包括:

写切割模块,用于接收写io数据后,将所述写io数据按预设长度切割为写数据块;

处理模块,用于从全部可用的条带中,按预设规则选取目标条带,在映射表中记录所述写数据块各自的lba与各自对应的目标条带的条带号的映射关系,并将所述写数据块填充到各自对应的目标条带中;其中,可用的条带包括未填充满对应的写数据块的目标条带;

下盘模块,用于对填充满对应的写数据块的目标条带进行数据下盘。

可选的,所述处理模块,包括:

填充子模块,用于依次将所述写数据块填充到各自对应的目标条带中。

可选的,所述处理模块,包括:

选取子模块,用于根据所述写数据块的数量,从全部可用的条带中,依次选取使用次数最少且对应的条带号最小的所述目标条带。

可选的,所述写切割模块,包括:

写切割子模块,用于将所述写io数据按4kb或8kb的长度切割为所述写数据块。

可选的,该装置还包括:

读切割模块,用于接收读io请求后,构建读io数据并将所述读io数据按所述预设长度切割为读数据块;

判断模块,用于根据所述读数据块各自的lba分别查询所述映射表中是否存在对应的条带号;若是,则向读取模块发送读取信号;若否,则向填充模块发送填充信号;

所述读取模块,用于接收所述读取信号,读取所述条带号对应的条带的数据表,并下盘读取相应的数据;

所述填充模块,用于接收所述填充信号,将lba不存在对应的条带号的读数据块填充0。

本发明所提供的一种基于全闪存阵列的随机io顺序化方法,包括:接收写io数据后,将所述写io数据按预设长度切割为写数据块;从全部可用的条带中,按预设规则选取目标条带,在映射表中记录所述写数据块各自的lba与各自对应的目标条带的条带号的映射关系,并将所述写数据块填充到各自对应的目标条带中;其中,可用的条带包括未填充满对应的写数据块的目标条带;对填充满对应的写数据块的目标条带进行数据下盘;

可见,本发明通过从全部可用的条带中,按预设规则选取目标条带,在映射表中记录写数据块各自的lba(logicblockaddress,逻辑块地址)与各自对应的目标条带的条带号的映射关系,可以使用偏移和raid条带映射的方式将数据块填充到对应的目标条带,使得目标条带中填充的内容均为数据块,不存在空的填充内容,使得随机io可以顺序化填充到目标条带中;通过对填充满对应的写数据块的目标条带进行数据下盘,可以使数据块可以顺序化存储到存储介质中,使得随机io也可以进行顺序化存储,提升了全闪存阵列的性能和使用寿命,并且实现了传统磁盘阵列和全闪存阵列的结合,减轻了传统磁盘阵列向全闪存阵列转换难度,提升了用户体验。此外,本发明还提供了一种基于全闪存阵列的随机io顺序化装置,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化方法的流程图;

图2为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化方法的映射表的示意图;

图3为本发明实施例所提供的另一种基于全闪存阵列的随机io顺序化方法的流程图;

图4为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1和图2,图1为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化方法的流程图;图2为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化方法的映射表的示意图。该方法可以包括:

步骤101:接收写io数据后,将写io数据按预设长度切割为写数据块。

其中,本步骤中接收写io数据,可以为主机直接接收用户发送的io数据,也可以为主机接收用户发送的写io请求和对应的io数据。对于主机接收写io数据的具体方式,也就是主机接收需要存储到如ssd盘的存储介质的io数据的具体方式,可以采用与现有技术相同或相似的方式,也可以由设计人员根据实用场景或用户需求自行设置,本实施例对此不做任何限制。

可以理解的是,本步骤中将写io数据按预设长度切割为写数据块,也就是将需要存储的io数据按预设长度划分为一个或多个小的数据块,对于预设长度的具体数值设置,也就是每个写数据块的具体大小的设置,可以由设计人员根据实用场景和用户需求自行设置,优选的,可以设置为4kb或8kb,本实施例对此不做任何限制。

需要说明的是,对于将写io数据按预设长度切割为写数据块的具体方式,可以采用与现有技术相似的方式,也可以采用其他设计人员自行设置的方式,本实施例对此不做任何限制。

步骤102:从全部可用的条带中,按预设规则选取目标条带,在映射表中记录写数据块各自的lba与各自对应的目标条带的条带号的映射关系,并将写数据块填充到各自对应的目标条带中;其中,可用的条带包括未填充满对应的写数据块的目标条带。

可以理解的是,本步骤中从全部可用的条带中,按预设规则选取目标条带的具体方式,可以为根据写数据块的数量,从全部可用的条带中,依次选取使用次数最少且对应的条带号最小的目标条带,也就是先选取一个目标条带,若该目标条带可以填充全部写数据块,则在映射表中记录全部写数据块各自的lba与该目标条带的条带号的映射关系,并将全部写数据块填充到该目标条带中;若该目标条带不可以填充全部写数据块,则在映射表中记录全部写数据块中可填充在该目标条带的部分写数据块各自的lba与该目标条带的条带号的映射关系,并将该部分写数据块填充到该目标条带中,然后再选取下一目标条带,执行与上述相似的步骤,直至全部写数据各自的lba与各自对应的目标条带的条带号的映射关系均记录在映射表中,并将全部写数据块填充到各自对应的目标条带中。也可以为根据写数据块的数量,从全部可用的条带中,直接选取使用次数最少且对应的条带号最小的目标条带,也就是直接选取填充全部写数据块所需的目标条带。对于从全部可用的条带中,按预设规则选取目标条带的具体方式,可以由设计人员自行设置,本实施例对此不受任何限制。

同样的,对于将写数据块填充到各自对应的目标条带中的具体方式,可以为依次将写数据块填充到各自对应的目标条带中,如若先选取出一个目标条带,则全部写数据块按顺序填充到该目标条带可填充的位置,若该目标条带已填充满而全部写数据块未填充完,则等待选取出的下一目标条带再对剩余未填充的写数据块进行填充,直至全部写数据块填充完;也可以为并行将写数据块填充到各自对应的目标条带中,如若选取出填充全部写数据块所需的目标条带后,全部写数据块按照每个目标条带可填充的位置的数量,直接将全部写数据块并行填充到对应的目标条带。对于写数据块填充到各自对应的目标条带中的具体方式,可以由设计人员自行设置,本实施例对此同样不受任何限制。

具体的,对于在映射表中记录写数据块各自的lba与各自对应的目标条带的条带号的映射关系的具体方式,可以采用与上述将写数据块填充到各自对应的目标条带中的方式相对应的方式,本实施例对此不受任何限制。其中,记录表中lba与目标条带的映射关系可以如图2所示,图中lba中深色方格可以表示为写数据块的lba,通过将写数据块的lba映射到条带(目标条带)中,可以避免现有技术中,条带存在空的填充内容的情况发生,如现有技术中可以将每5个lba的方格划分为一个条带,那么第一个条带中只存在一个写数据块的lba,存在4个空的填充内容,使得写数据块并不能顺序化存储到存储介质中。图中,stride-offset可以为每个lba对应的条带号。

需要说明的是,本步骤与步骤103并不存在逻辑上必然的先后关系,可以为在执行本步骤的过程中,执行步骤103,如本步骤选取一个目标条带后,可以在映射表中记录全部写数据块中可填充在该目标条带的部分写数据块各自的lba与该目标条带的条带号的映射关系,并将该部分写数据块填充到该目标条带中,然后执行步骤103,将填充满对应的写数据块的该目标条带进行数据下盘,等待数据下盘后再执行本步骤选取下一目标条带或在数据下盘的过程中执行本步骤选取下一目标条带;也可以在执行本步骤之后,再执行步骤103,如执行本步骤依次选取多个目标条带,并将全部数据块填充到多个目标条带后,再执行步骤103将多个目标条带中已填充满对应的写数据块的目标条带进行数据下盘。本实施例对此不受任何限制。

步骤103:对填充满对应的写数据块的目标条带进行数据下盘。

其中,数据下盘可以为将目标条带中的写数据块存储到对应的存储介质。对于本步骤中将填充满对应的写数据块的目标条带进行数据下盘的具体过程,可以采用与现有技术相同或相似的方式,也可以由设计人员自行设置其它方式,本实施例对此不受任何限制。

可以理解的是,由于步骤102中目标条带的选取可以是每填充满一个目标条带并进行本步骤的数据下盘后,再选取的下一目标条带,所以本步骤中对于全部写数据块填充的目标条带而言,可以对全部目标条带进行数据下盘,如全部写数据块刚好填充满全部目标条带;也可以为对全部目标条带中除一个未填充满的目标条带外的其他目标条带进行数据下盘,如全部写数据块的部分写数据块填充满上述其他目标条带后,剩余的写数据块未填充满下一个目标条带。本实施例对此不受任何限制。

需要说明的是,对于未填充满对应的写数据块的目标条带,可以通过步骤102等待下一次写io数据切割的写数据块再进行填充;也可以直接进行数据下盘。本实施例对此不受任何限制。

本实施例中,本发明实施例通过从全部可用的条带中,按预设规则选取目标条带,在映射表中记录写数据块各自的lba(logicblockaddress,逻辑块地址)与各自对应的目标条带的条带号的映射关系,可以使用偏移和raid条带映射的方式将数据块填充到对应的目标条带,使得目标条带中填充的内容均为数据块,不存在空的填充内容,使得随机io可以顺序化填充到目标条带中;通过对填充满对应的写数据块的目标条带进行数据下盘,可以使数据块可以顺序化存储到存储介质中,使得随机io也可以进行顺序化存储,提升了全闪存阵列的性能和使用寿命,并且实现了传统磁盘阵列和全闪存阵列的结合,减轻了传统磁盘阵列向全闪存阵列转换难度,提升了用户体验。

基于上一实施例,展示了基于全闪存阵列的随机io顺序化方法的写操作的具体流程,对于基于全闪存阵列的随机io顺序化方法的读操作的具体流程,可以通过本发明实施例进行展示。具体的请参考图3,图3为本发明实施例所提供的另一种基于全闪存阵列的随机io顺序化方法的流程图。该方法可以包括:

步骤201:接收读io请求后,构建读io数据并将读io数据按预设长度切割为读数据块。

其中,本步骤中的预设长度可以与上一实施例中的预设长度相同。

可以理解的是,对于本步骤中主机接收用户发送的读io请求后,根据读io请求构建读io数据并将读io数据按预设长度切割为读数据块的具体方式,可以采用与现有技术相同或相似的方式,本实施例对此不受任何限制。

步骤202:根据读数据块各自的lba分别查询映射表中是否存在对应的条带号;若是,则进入步骤203;若否,则进入步骤204。

可以理解的是,本步骤可以为分别根据每个读数据块的lba依次查询映射表中是否存在对应的条带号,如分别判断每个读数据块的lba是否存在对应的条带号;也可以为对全部读数据块各自的lba查询映射表中是否存在对应的条带号,如直接判断全部读数据块各自的lba是否均存在对应的条带号。本实施例对此不受任何限制。

步骤203:读取条带号对应的条带的数据表,并下盘读取相应的数据。

其中,数据表可以为上一实施例中对目标条带进行数据下盘时生成的数据表,对于数据表的具体生成方式,可以采用与现有技术相同或相似的方式,本实施例对此不受任何限制。

可以理解的是,本步骤中条带号对应的条带可以为上一实施例中写数据块填充的目标条带。对于本步骤中的具体过程,可以采用与现有技术相同或相似的方式,本实施例对此不受任何限制。

步骤204:将lba不存在对应的条带号的读数据块填充0。

可以理解的是,本步骤可以为选取出全部读数据块各自的lba中不存在对应的条带号的lba,将该lba对应的读数据块填充0。

具体的,对于将lba不存在对应的条带号的读数据块填充0的具体方式,可以采用与现有技术相同或相似的方式,本实施例对此不受任何限制。

本实施例中,本发明实施例通过根据读数据块各自的lba分别查询映射表中是否存在对应的条带号,可以根据映射表获取每个读数据块的lba对应的条带号,从而查找到对应的条带,避免了查询找不到读数据块对应的条带的情况发生。

请参考图4,图4为本发明实施例所提供的一种基于全闪存阵列的随机io顺序化装置的结构图。该装置可以包括:

写切割模块100,用于接收写io数据后,将写io数据按预设长度切割为写数据块;

处理模块200,用于从全部可用的条带中,按预设规则选取目标条带,在映射表中记录写数据块各自的lba与各自对应的目标条带的条带号的映射关系,并将写数据块填充到各自对应的目标条带中;其中,可用的条带包括未填充满对应的写数据块的目标条带;

下盘模块300,用于对填充满对应的写数据块的目标条带进行数据下盘。

可选的,处理模块200,可以包括:

填充子模块,用于依次将写数据块填充到各自对应的目标条带中。

可选的,处理模块200,可以包括:

选取子模块,用于根据写数据块的数量,从全部可用的条带中,依次选取使用次数最少且对应的条带号最小的目标条带。

可选的,写切割模块100,可以包括:

写切割子模块,用于将写io数据按4kb或8kb的长度切割为写数据块。

可选的,该装置还可以包括:

读切割模块,用于接收读io请求后,构建读io数据并将读io数据按预设长度切割为读数据块;

判断模块,用于根据读数据块各自的lba分别查询映射表中是否存在对应的条带号;若是,则向读取模块发送读取信号;若否,则向填充模块发送填充信号;

读取模块,用于接收读取信号,读取条带号对应的条带的数据表,并下盘读取相应的数据;

填充模块,用于接收填充信号,将lba不存在对应的条带号的读数据块填充0。

本实施例中,本发明实施例通过处理模块200从全部可用的条带中,按预设规则选取目标条带,在映射表中记录写数据块各自的lba(logicblockaddress,逻辑块地址)与各自对应的目标条带的条带号的映射关系,可以使用偏移和raid条带映射的方式将数据块填充到对应的目标条带,使得目标条带中填充的内容均为数据块,不存在空的填充内容,使得随机io可以顺序化填充到目标条带中;通过下盘模块300对填充满对应的写数据块的目标条带进行数据下盘,可以使数据块可以顺序化存储到存储介质中,使得随机io也可以进行顺序化存储,提升了全闪存阵列的性能和使用寿命,并且实现了传统磁盘阵列和全闪存阵列的结合,减轻了传统磁盘阵列向全闪存阵列转换难度,提升了用户体验。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的基于全闪存阵列的随机io顺序化方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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