首页 / 专利库 / 资料储存系统 / 大容量存储 / 基于SSD的大规模存储系统中的文件布局方法

基于SSD的大规模存储系统中的文件布局方法

阅读:32发布:2024-02-28

专利汇可以提供基于SSD的大规模存储系统中的文件布局方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于SSD的大规模存储系统中的文件布局方法,该方法向存储系统写入文件时,采用范德蒙德矩阵将用户数据利用非对称纠删码分成n份,n份数据写到n个SSD上;向存储系统读取文件时,根据n个SSD上n份数据中的任意k份(k<n),利用范德蒙德矩阵即可计算出整个文件,其中k为可恢复用户数据的最低数量,而且读取文件时,向n个SSD发送读 请求 ,最先返回的k份数据被用来恢复用户数据。只要n个SSD中的k个没有进行垃圾回收,读请求就不受SSD垃圾回收的影响。本发明具有可靠性高、容错性能好、SSD使用寿命长、SSD垃圾回收对读请求影响低的优点。,下面是基于SSD的大规模存储系统中的文件布局方法专利的具体信息内容。

1.一种基于SSD的大规模存储系统中的文件布局方法,其特征在于实施步骤如下:
1)建立范德蒙德矩阵,跳转执行下一步;
2)接收应用程序的读写请求,跳转执行下一步;
3)判定所述读写请求的请求类型,若请求类型为写请求则跳转执行步骤4),若请求类型为读请求则跳转执行步骤8);
4)将待写入文件进行分得到k个用户数据分块,其中k为可恢复用户数据的最低数量,跳转执行下一步;
5)根据范德蒙德矩阵和所述k个用户数据分块计算获取待写入SSD的n份数据,其中n为大于k的整数:首先将所述k个用户数据分块组成如式(1)所示的向量,然后根据式(2)计算获取待写入SSD的n份数据;最后跳转执行下一步;
式(1)中,D为得到的向量,d0~dk-1为所述k个用户数据分块;
式(2)中,C为得到的待写入SSD的n份数据的向量,c0~cn-1即为待写入SSD的n份数据;G为范德蒙德矩阵,G的每个元素是一个位串;D为所述k个用户数据分块组成的向量;×为异或运算符;
6)根据所述待写入SSD的n份数据选择n个目标SSD:首先记录存储系统中所有SSD的容量信息,然后根据记录的所有SSD的容量信息计算出各个SSD的空间利用率,再从所有SSD中选择一组任意两个SSD之间的空间利用率差异最大的n个目标SSD;最后,跳转执行下一步;
7)将所述待写入SSD的n份数据分别写入所述n个目标SSD中,并在写入文件的元信息中记录所述n个目标SSD的信息,写请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2);
8)根据所述读请求的读取目标文件的元信息中记录的SSD信息找到n个目标SSD,跳转执行下一步;
9)向所述n个目标SSD发送读请求,初始化用于记录所述n个目标SSD返回的数据个数的计数器,跳转执行下一步;
10)每收到一个目标SSD返回的数据,则将所述计数器加1,跳转执行下一步;
11)当计数器的数值等于可恢复用户数据的最低数量k时,跳转执行下一步,否则继续返回执行步骤10);
12)根据各个目标SSD返回的k份数据恢复用户数据并返回给读请求:首先将根据各个目标SSD返回的k份数据组成如式(3)所示的向量,然后将根据各个目标SSD返回的k份数据,在范德蒙德矩阵中选择相应的可恢复用户数据的最低数量行组成子矩阵,并将所述子矩阵转置得到转置子矩阵,最后根据式(4)恢复用户数据并返回给读请求;读请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2);
式(3)中,R为各个目标SSD返回的数据组成的向量,其中r0~rk-1为各个目标SSD返回的数据;
式(4)中,U为恢复得到的用户数据向量,其中u0~uk-1即为恢复得到的k个用户数据分量,k个用户数据分量即组成最终恢复得到的用户数据;AT为所述子矩阵转置得到的转置T T
子矩阵, 为转置子矩阵A 中的元素,所述转置子矩阵A 中的元素是一个位串;R为各个目标SSD返回的数据组成的向量。

说明书全文

基于SSD的大规模存储系统中的文件布局方法

技术领域

[0001] 本发明涉及大规模存储系统领域,具体涉及一种基于SSD的大规模存储系统中,能够同时提高可靠性和读性能的文件布局方法。

背景技术

[0002] 基于闪存的SSD(Solid State Drive,固态盘)是一种新型的大规模存储设备,它因为低延迟、高带宽、低功耗等特性而被广泛应用于高端存储系统中。但是,基于闪存的SSD也有儿点固有的缺陷。首先,基于闪存的SSD寿命有限。闪存的每个存储单元写入次数有限,一旦写入次数超过限制,该存储单元变得不可靠,可能引起数据丢失。SSD需要采用一些技术保证数据的可靠性。其次,SSD内部会周期性地进行垃圾回收,垃圾回收时,SSD的读写延迟急骤上升。在包含大量SSD的存储系统中,任何时刻都有SSD在进行垃圾回收,上层应用会因此受到剧烈的影响。针对闪存寿命有限的问题,目前已经出现了以下儿种解决方案:
[0003] 1.闪存内部的ECC技术。ECC(Error Correction Code,纠错码)是一种传统的提高可靠性的方法。向闪存的每个存储单元写入数据时,都需计算该数据的纠错码。从该存储单元读出数据时,根据纠错码检测是否出现错误。如果出现错误的位数较少,可通过纠错码纠正错误。纠错码的纠错能有限,如果一个存储单元中大量的位出错,纠错码不能恢复数据,且纠错码不能解决整个设备失效的问题。
[0004] 2.SSD内部的损耗均衡技术。闪存每个存储单元的寿命有限,为了防止一些存储单元因为写入次数过多而过早的损坏,可以在闪存的所有存储单元上均衡的写入数据,保证所有存储单元写入的次数相等,这就是SSD内部采用的损耗均衡机制。损耗均衡能够提高SSD的整体寿命,但并不能保证所有的存储单元都不损坏,因为每个存储单元的寿命是不同的。即使在所有的存储单元上均衡的写入数据,也不能避免寿命较短的存储单元过早的损坏,数据丢失的情况仍然会出现。且损耗均衡机制涉及SSD内部数据的迁移,数据迁移过程中会在SSD内部产生大量的读写请求,这些内部读写请求会延长SSD对用户请求的响应时间。
[0005] 3.基于SSD的RAID技术。RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列)是一种传统的提高可靠性的技术。RAID根据待写入的用户数据计算校验信息,并将用户数据和校验信息写到不同的存储设备上。若保存用户数据的存储设备失效,可根据校验信息恢复用户数据。RAID技术要求用户数据和校验信息同步地写入存储设备。在基于SSD的RAID阵列中,任何时刻都可能有SSD在垃圾回收,垃圾回收时SSD的写延迟很大。向两个SSD同步地写入用户数据和校验信息时,如果其中一个SSD在垃圾回收,写入用户数据和校验信息的延迟以最慢的SSD为准。所以,基于SSD的RAID技术写延迟很大。
[0006] 针对垃圾回收时SSD性能下降的问题,目前已经有以下几点方案:
[0007] 1.在SSD空闲时垃圾回收。在SSD内部配备一个定时器,在SSD没有接收到读写请求时开始计时,计时达到阈值说明SSD空闲,此时可触发垃圾回收。这种方法根据一段时间内主机端没有发送读写请求而断定在以后一段时间内也不会发送读写请求,实现简单但过于武断,不能取得预期的效果。
[0008] 2.强制整个存储系统中的所有SSD同时垃圾回收。在整个存储系统中,任何一个SSD的垃圾回收都可能影响上层应用程序的执行时间。所以可以选择在没用应用程序执行时,强制所有SSD同时垃圾回收。这种做法保证应用程序的执行不受SSD垃圾回收的影响,但需要其它的机制预测主机端的应用程序执行情况,且要求改变SSD的接口,向SSD内部发送强制垃圾回收的命令。
[0009] 综上所述,以上各项现有技术都只关注其中一个问题,不能将可靠性和读性能这两方面结合起来,不能满足基于SSD的大规模存储系统的需要。

发明内容

[0010] 本发明要解决的技术问题是提供一种可靠性高、容错性能好、SSD使用寿命长、SSD垃圾回收对读请求影响低的基于SSD的大规模存储系统中的文件布局方法。
[0011] 为了解决上述技术问题,本发明采用的技术方案为:
[0012] 一种基于SSD的大规模存储系统中的文件布局方法,其实施步骤如下:
[0013] 1)建立范德蒙德矩阵,跳转执行下一步;
[0014] 2)接收应用程序的读写请求,跳转执行下一步;
[0015] 3)判定所述读写请求的请求类型,若请求类型为写请求则跳转执行步骤4),若请求类型为读请求则跳转执行步骤8);
[0016] 4)将待写入文件进行分得到k个用户数据块,其中k为可恢复用户数据的最低数量,跳转执行下一步;
[0017] 5)根据范德蒙德矩阵和所述k个用户数据分块计算获取待写入SSD的n份数据,其中n为大于k的整数,跳转执行下一步;
[0018] 6)根据所述待写入SSD的n份数据选择n个目标SSD,跳转执行下一步;
[0019] 7)将所述待写入SSD的n份数据分别写入所述n个目标SSD中,并在写入文件的元信息中记录所述n个目标SSD的信息,写请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2);
[0020] 8)根据所述读请求的读取目标文件的元信息中记录的SSD信息找到n个目标SSD,跳转执行下一步;
[0021] 9)向所述n个目标SSD发送读请求,初始化用于记录所述n个目标SSD返回的数据个数的计数器,跳转执行下一步;
[0022] 10)每收到一个目标SSD返回的数据,则将所述计数器加1,跳转执行下一步;
[0023] 11)当计数器的数值等于可恢复用户数据的最低数量k时,跳转执行下一步,否则继续返回执行步骤10);
[0024] 12)根据各个目标SSD返回的k份数据恢复用户数据并返回给读请求;读请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2)。
[0025] 作为本发明上述技术方案的进一步改进:
[0026] 所述步骤5)的详细步骤如下:
[0027] 5.1)将所述k个用户数据分块组成如式(1)所示的向量;
[0028]
[0029] 式(1)中,D为得到的向量,d0~dk-1为所述多个用户数据分块;
[0030] 5.2)根据式(2)计算获取待写入SSD的多份数据;
[0031]
[0032] 式(2)中,C为得到的待写入SSD的n份数据的向量,c0~cn-1即为待写入SSD的n份数据;G为范德蒙德矩阵,G的每个元素是一个位串;D为所述多个用户数据分块组成的向量;×为异或运算符;
[0033] 5.3)跳转执行步骤6)。
[0034] 所述步骤12)的详细步骤如下:
[0035] 12.1)将根据各个目标SSD返回的k份数据组成如式(3)所示的向量;
[0036]
[0037] 式(3)中,R为各个目标SSD返回的数据组成的向量,其中r0~rk-1为各个目标SSD返回的数据;
[0038] 12.2)将根据各个目标SSD返回的k份数据,在范德蒙德矩阵中选相应的可恢复用户数据的最低数量行组成子矩阵,并将所述子矩阵转置得到转置子矩阵;
[0039] 12.3)根据式(4)恢复用户数据并返回给读写请求;
[0040]
[0041] 式(4)中,U为恢复得到的用户数据向量,其中u0~uk-1即为恢复得到的k个用户T数据分量,k个用户数据分量即组成最终恢复得到的用户数据;A 为所述子矩阵转置得到的转置子矩阵,R为各个目标SSD返回的数据组成的向量;
[0042] 12.4)读写请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2)。
[0043] 所述步骤6)的详细步骤如下:
[0044] 6.1)记录存储系统中所有SSD的容量信息;
[0045] 6.2)根据记录的所有SSD的容量信息计算出各个SSD的空间利用率;
[0046] 6.3)从所有SSD中选择一组任意两个SSD之间的空间利用率差异最大的n个目标SSD;
[0047] 6.4)跳转执行步骤7)。
[0048] 本发明基于SSD的大规模存储系统中的文件布局方法具有下述优点:
[0049] 1、本发明保证了基于SSD的存储系统中数据的可靠性。本发明在写入文件时,将文件生成的具有容错功能的n份数据写到n个SSD中,只要其中的k个SSD是完好的,即可恢复用户数据,因此本发明提出的方法可以容忍n-k个SSD失效。相比之下,现有技术的RAID5只能容忍一个存储设备失效,现有技术的RAID6只能容忍两个存储设备失效,因此本发明具有可靠性高、容错性能好的优点。
[0050] 2.本发明可以延长SSD的寿命。随着写入的数据量逐步增加,SSD每个存储单元的出错儿率逐步变大。为了将每个存储单元的出错率限制在ECC可恢复的范围之内,闪存芯片厂商规定了每个存储单元能够写入的次数。实际上,超过了厂商规定的次数,闪存的每个存储单元仍然可以写入数据,只是出错几率变大。本发明在上层提高了整个存储系统的可靠性,闪存芯片内部可以容忍较高的出错几率,每个存储单元可以写入的次数变多,因此SSD的寿命能够得到延长。
[0051] 3.本发明降低了SSD垃圾回收对读请求的影响。本发明再响应读请求向n个SSD发出读请求后,仅仅通过收集最先返回的k份数据即可立刻进行数据恢复,因此只要正在垃圾回收的SSD数目不超过n-k个,就会有k份数据快速返回。根据最先返回的k份数据可恢复用户数据并迅速返回给用户,这种做法保证了少数SSD的垃圾回收不会影响用户读请求,具有SSD垃圾回收队读请求影响低的优点。附图说明
[0052] 图1为本发明实施例的方法流程示意图。

具体实施方式

[0053] 本实施例基于SSD的大规模存储系统中的文件布局方法的基本原理为:向存储系统写入文件时,采用范德蒙德矩阵计算文件的非对称纠删码(Non-systematic erasure codes),将用户数据利用对应的非对称纠删码分成n份,n份数据写到n个SSD上;向存储系统读取文件时,根据文件在n个SSD上的n份数据中的任意k份(k<n),利用范德蒙德矩阵即可计算出整个文件,其中k为可恢复用户数据的最低数量,而且读取文件时,向n个SSD发送读请求,最先返回的k份数据被用来恢复用户数据。只要n个SSD中的k个没有进行垃圾回收,读请求就不受SSD垃圾回收的影响。
[0054] 如图1所示,本实施例基于SSD的大规模存储系统中的文件布局方法的实施步骤如下:
[0055] 1)建立范德蒙德矩阵G,跳转执行下一步。
[0056] 基于上述基本原理,本实施例中产生一个n×k的范德蒙德(Vandermonde)矩阵G。
[0057]
[0058] G的每个元素是一个位串,矩阵中元素间的加法和乘法通过异或实现。
[0059] 2)接收应用程序的读写请求Req,跳转执行下一步。
[0060] 如果SSD的最小读写单位为P,则本实施例中要求写请求的数据量至少为P×k,其中k为可恢复用户数据的最低数量。
[0061] 3)判定读写请求Req的请求类型,若请求类型为写请求则跳转执行步骤4),若请求类型为读请求则跳转执行步骤8)。
[0062] 4)将待写入文件进行分块得到k个用户数据块,其中k为可恢复用户数据的最低数量,跳转执行下一步。i
[0063] 本实施例中,每个用户数据块包含的位数为2的整数次幂2。若文件不能划分成i每块2 位的k个部分,可在文件尾部添0。
[0064] 5)根据范德蒙德矩阵和k个用户数据分块计算获取待写入SSD的n份数据,其中n为大于k的整数,跳转执行下一步。
[0065] 本实施例中,步骤5)的详细步骤如下:
[0066] 5.1)将k个用户数据分块组成如式(1)所示的向量;
[0067]
[0068] 式(1)中,D为得到的向量,d0~dk-1为多个用户数据分块;
[0069] 5.2)根据式(2)计算获取待写入SSD的多份数据;
[0070]
[0071] 式(2)中,C为得到的待写入SSD的n份数据的向量,c0~cn-1即为待写入SSD的n份数据;G为范德蒙德矩阵,G的每个元素是一个位串;D为多个用户数据分块组成的向量;×为异或运算符;
[0072] 5.3)跳转执行步骤6)。
[0073] 6)根据待写入SSD的n份数据选择n个目标SSD,跳转执行下一步。
[0074] 本实施例中,步骤6)的详细步骤如下:
[0075] 6.1)记录存储系统中所有SSD的容量信息;
[0076] 6.2)根据记录的所有SSD的容量信息计算出各个SSD的空间利用率;
[0077] 6.3)从所有SSD中选择一组任意两个SSD之间的空间利用率差异最大的n个目标SSD;
[0078] 6.4)跳转执行步骤7)。
[0079] 由于当SSD的空间利用率达到一定阈值时,SSD触发垃圾回收,响应读写请求的延迟变大,因此若选择的n个SSD空间利用率相同,它们可能在同一时间内垃圾回收此时,若根据一个文件计算出n份数据写入这些SSD时,写延迟很大。本实施例通过从所有SSD中选择一组任意两个SSD之间的空间利用率差异最大的SSD作为目标SSD,因此能够尽可能保证n个SSD的空间利用率不同,能够避免不同SSD在同一时间内进行垃圾回收,从而能够降低SSD的写延迟。
[0080] 由于存储系统中的存储设备可能是异构的,需要掌握所有SSD的容量,便于空间分配,因此本实施例中,步骤6.1)是放在步骤1)之前进行,此外也可以根据需要进行调整在步骤6)之前的任意步骤执行,或者在步骤6.1)中实时执行同样也能够实现,只是实时执行可能会引起写入的延迟,导致SSD的写入性能下降。
[0081] 7)将待写入SSD的n份数据(待写入SSD的n份数据的向量C的n个分量)分别写入n个目标SSD中,并在写入文件的元信息中记录n个目标SSD的信息,写请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2)响应后续的读写请求。
[0082] 8)根据读请求的读取目标文件的元信息中记录的SSD信息找到n个目标SSD,跳转执行下一步。
[0083] 参见步骤7)可知,写入文件的元信息中记录n个目标SSD的信息,因此在文件的元信息中记录文件的n个部分保存在哪些SSD上,可根据元信息确定读取数据的n个SSD。
[0084] 9)向n个目标SSD发送读请求,初始化用于记录n个目标SSD返回的数据个数的计数器Count为0(Count<-0),跳转执行下一步。
[0085] 参见本实施例的基本原理可知,对于每一个文件存在n个目标SSD中的n份数据中,只要获取n份数据中的任意k份(k<n),即可计算出整个文件,因此本实施例中步骤9)虽然向n个目标SSD发送读请求,但是同时通过计数器进行计数,只要通过计数器判断已经接收到最先返回的k份数据,即可立即根据最先返回的k份数据来恢复用户数据,因此只要n个SSD中的k个没有进行垃圾回收,读请求就不受SSD垃圾回收的影响,读请求的数据即可迅速返回。因此能够避免SSD垃圾回收对读请求的影响,SSD的读性能更高。
[0086] 10)每收到一个目标SSD返回的数据,则将计数器Count加1(Count<-Count+1),跳转执行下一步;
[0087] 11)当计数器Count的数值等于可恢复用户数据的最低数量k时,跳转执行下一步,否则继续返回执行步骤10);
[0088] 12)根据各个目标SSD返回的k份数据恢复用户数据并返回给读请求;读请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2)。
[0089] 本实施例中,步骤12)的详细步骤如下:
[0090] 12.1)将根据各个目标SSD返回可恢复用户数据的最低数量的数据组成如式(3)所示的向量R;
[0091]
[0092] 式(3)中,R为各个目标SSD返回的数据组成的向量,其中r0~rk-1为各个目标SSD返回的数据,k为可恢复用户数据的最低数量;
[0093] 12.2)将根据各个目标SSD返回可恢复用户数据的最低数量的数据,在范德蒙德矩阵中选相应的可恢复用户数据的最低数量行组成子矩阵A,并将子矩阵A转置得到转置T子矩阵A ;
[0094] 12.3)根据式(4)恢复用户数据并返回给读写请求;
[0095]
[0096] 式(4)中,U为恢复得到的用户数据向量,其中u0~uk-1即为恢复得到的k个用户T数据分量;A 为子矩阵转置得到的转置子矩阵,R为各个目标SSD返回的数据组成的向量;
k个用户数据分量即组成最终恢复得到的用户数据U;结果的用户数据U是一个k元向量,其中的k个元素拼接成用户数据;
[0097] 12.4)读写请求处理完毕,等待在下一个读写请求到来时跳转执行步骤2)。
[0098] 本实施例中,步骤12.2)将根据各个目标SSD返回可恢复用户数据的最低数量的数据时,根据返回的k份数据,选取范德蒙德矩阵中相应的k行,组成子矩阵A,并将子矩阵TA转置得到转置子矩阵A。例如,假定返回的k份数据对应范德蒙德矩阵G中的k行为j0,j1,j2,…jk-1,则子矩阵A如式(5)所示。
[0099]
[0100] 式(5)中, 为子矩阵A中的元素。T T
[0101] 将子矩阵A转换得到转置子矩阵A 后,转置子矩阵A 为如式(6)所示。
[0102]
[0103] 式(6)中, 为转置子矩阵AT中的元素。
[0104] 综上所述,针对SSD可靠性较低,垃圾回收时读延迟增大的问题,本实施例向存储系统写入文件时,通过范德蒙德矩阵将文件分割为n份数据并写到n个SSD上;向存储系统读取文件时,根据文件在n个SSD上的n份数据中最先返回的k份数据(k<n)利用范德蒙德矩阵恢复出整个文件。因此,只要n个SSD中的k个没有进行垃圾回收,读请求就不受SSD垃圾回收的影响,既能够保证数据的可靠性,同时又减少SSD垃圾回收对读请求的影响。
[0105] 以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈