协同使用纠删码和纠错码的可靠闪存存储系统构建方法

文档序号:8905180阅读:868来源:国知局
协同使用纠删码和纠错码的可靠闪存存储系统构建方法
【技术领域】
[0001] 本发明设及计算机存储系统领域,具体设及一种协同使用纠删码和纠错码的可靠 闪存存储系统构建方法。
【背景技术】
[0002] 闪存因为其优越的性能而被广泛部署在大规模存储系统中,但是,其有限的寿命 在一定程度上阻碍了闪存在写密集型负载下的推广。闪存的寿命是指每个存储单元能够承 受的擦写次数。厂商在推出一款闪存巧片时,会给出该款巧片对应的标称寿命。若每个存 储单元的擦写次数在标称寿命W内,闪存的位错误率较低,保存在闪存上的数据被认为是 可靠的。实际上,在擦写次数超过标称寿命后的很大范围内,闪存仍然可W保存数据,只是 位错误率逐步变大,可能出现数据丢失现象。但是,随着擦写次数的进一步增加,位错误率 成指数增长,最终导致闪存不可用。根据W上所述的闪存位错误率增长趋势可知,在位错误 率随擦写次数的增加成指数增长之前,闪存仍然是可用的;若采用适当的手段纠正闪存中 出现的位错误,即使每个存储单元的擦写次数超过标称寿命,保存在闪存中的数据仍然是 可靠的。
[0003] ECC巧rrorCorrectionCode,纠错码)是存储设备中一种常用的容错机制。存储 设备向存储介质中写入一页用户数据时,同时为该页数据生成若干位的纠错码。纠错码与 用户数据一同保存在存储介质中。响应上层应用的读请求时,存储设备将上层应用请求的 用户数据W及对应的纠错码同时从存储介质中取出,并利用纠错码检测和纠正用户数据中 出现的位错误,从而保证用户数据完整可靠。纠错码的特点是空间开销很低,它利用十余位 信息即可保证数百字节的数据完整可靠。但其纠错能力有限,仅适用于出错几率较低的场 景。当闪存每个存储单元的擦写次数在标称寿命W内时,位出错率较低,纠错码能够保证数 据可靠。若擦写次数超过标称寿命,位出错率不断上升,纠错码必须采用更多的校验位、并 辅W复杂的计算才能纠正用户数据中出现的位错误。纠错码计算在10关键路径上,过大的 计算开销会严重影响10性能。所W,当闪存实际使用寿命超过标称寿命时,简单利用纠错 码并不能W很低的计算开销保证闪存存储系统的可靠性。
[0004] 纠删码巧rasureCode)是一种常用于系统级的容错机制,它主要通过保存大量的 冗余数据保证数据可靠性。对于抽象为(n,k)二元组的纠删码,当响应上层应用的写请求 时,它根据n份用户数据生成k份冗余数据,该n+k份数据大小一致,被同时写到存储系统 中。响应上层应用的读请求时,只要该n+k份数据中有n份仍然完整可靠,即可正确恢复出 所有用户数据。纠删码的特点是容错能力强,其容错能力随k值的增加而增长,适用于位出 错率较高的场景。当闪存每个存储单元的擦写次数超过标称寿命时,尽管位错误率较高,只 要纠删码选择足够大的k值,即可保证闪存上的数据完整可靠,但会引入一定的计算开销 和空间开销。
[0005] 综合比较W上所述的两种容错机制可知;纠错码只适用于错误率较低的场景,当 错误率较高时,纠错码的计算开销显著增加,甚至无法保证数据的正确性;纠删码适用于错 误率较高的场景,它能够w强大的容错能力纠正数据中出现的大量位错误,且计算开销恒 定,但当位错误较少时,纠删码的计算开销高于纠错码。独立使用W上两种机制很难在保证 10性能的同时将闪存的寿命延长到厂商标称寿命W外。因此,如何实现纠错码和纠删码的 协同使用,W避免对性能产生不利影响为前提,实现当闪存实际使用寿命超过标称寿命时 保障保存在闪存存储系统中的数据的可靠性,延长闪存的实际使用寿命,已成为亟待解决 的技术问题。

【发明内容】

[0006] 本发明要解决的技术问题是:针对现有技术的上述问题,提供一种计算开销低、10 速度快、实现当闪存实际使用寿命超过标称寿命时保障保存在闪存存储系统中的数据的可 靠性、闪存寿命延长效果显著的协同使用纠删码和纠错码的可靠闪存存储系统构建方法。
[0007] 为了解决上述技术问题,本发明采用的技术方案为:
[0008] -种协同使用纠删码和纠错码的可靠闪存存储系统构建方法,步骤包括:
[0009] 1)初始化接收10请求的缓冲区;
[0010] 2)接收10请求R,判定10请求R的读写类型,若读写类型为写请求,则跳转执行 步骤3);否则若读写类型为读请求,则跳转执行步骤4);
[0011] 3)将10请求R的写数据按照条带为单位进行选取,将选取的每一个条带的S个 用户数据页面采用纠删码生成k个冗余数据页面,分别计算所述S个用户数据页面和k个 冗余数据页面组成的s+k个页面的校验和、纠错码,并将所述s+k个页面及各个页面的校验 和、纠错码一同写入存储设备;
[0012] 4)将10请求R划分为分别属于不同条带的子请求,针对每一个子请求,读取子请 求的各个页面及其校验和、纠错码,计算各个页面的校验和并识别各个页面的位错误,找出 位错误最多的页面,判断位错误最多的页面的位错误数量是否大于所使用的纠错码能够纠 正的最大错误位数T,如果位错误最多的页面的位错误数量不大于所使用的纠错码能够纠 正的最大错误位数T,则使用纠错码纠正子请求中各个页面中出现的位错误;如果位错误 最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误位数T,则使用纠删码 纠正子请求中各个页面中出现的位错误,返回子请求各个页面所包含的数据。
[0013] 优选地,所述步骤1)还包括初始化用于记录待写入存储设备的页面总数的写请 求计数器Count,为0的步骤,所述步骤3)的详细步骤包括:
[0014] 3. 1)将写请求R包含的页面数累加到写请求计数器Count,中;
[0015] 3. 2)判断写请求计数器Count,是否超过预设的阔值h,其中h为大于一个完整条 带中包含的页面数量n的整数;如果写请求计数器Count,超过预设的阔值h,则跳转执行步 骤3.3);如果写请求计数器Count,不超过预设的阔值h,则跳转执行步骤2);
[0016] 3.3)根据页面编号为待写入的Count,个写数据页面作升序排序,将待写入的 Count,个写数据页面划分到不同的条带中,使得编号为X的页面被划分到第x/n个条带中, 其中n表示一个完整条带中包含的页面数量;从待写入的Count,个写数据页面中选取一个 完整条带,如果选取完整条带成功,则跳转执行步骤3. 4);否则如果选取完整条带不成功, 则选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3. 4);
[0017] 3. 4)将选取的完整条带或不完整条带中的S个用户数据页面采用纠删码生成k个 冗余页面共得到s+k个页面,分别计算所述s+k个页面中各个页面的校验和、纠错码,将所 述s+k个页面及所述s+k个页面中各个页面的纠错码和校验和一同写入存储设备;最终从 写请求计数器Count,中减去本次写入存储设备的用户数据页面数量S,跳转步骤3. 2)。
[001引优选地,所述步骤3. 2)中的阔值h为一个完整条带中包含的页面数量n的10倍。
[0019] 优选地,所述步骤3. 3)的详细步骤包括:
[0020] 3. 3. 1)从待写入的写请求计数器Count,个写数据页面中选取一个完整条带,如果 选取完整条带成功,则跳转执行步骤3. 4);否则如果选取完整条带不成功,则跳转执行步 骤 3. 3. 2);
[0021] 3. 3. 2)判断10请求R是否为连续的写请求,如果10请求R为连续的写请求,则跳 转执行步骤2);否则如果10请求R并非连续的写请求,则跳转执行步骤3.3.3);
[0022] 3. 3. 3)选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3. 4)。
[0023] 优选地,所述步骤3. 4)中将所述s+k个页面及所述s+k个页面中各个页面的纠错 码和校验和一同写入存储设备时,存储设备为所述s+k个页面中每个待写入的页面分配一 个空闲的物理页面,所述s+k个页面中每一个页面的数据被写入分配的物理页面的数据区 域,所述s+k个页面中每一个页面的纠错码和校验和被写入分配的物理页面的额外区域。
[0024] 优选地,所述步骤3. 4)中分别计算所述s+k个页面中各个页面的校验和具体是指 将待计算页面中的比特流划分为固定大小的字Word,每个字Word包含64个比特,然后将该 些字Word作异或计算得到的结果作为该页面的校验和。
[00巧]优选地,所述步骤4)的详细步骤包括:
[0026] 4. 1)将10请求R划分为分别属于不同条带的m个子请求;
[0027] 4. 2)初始化设置子请求计数器i为0;
[0028] 4.3)读取子请求而所包含的各个页面,一同读取各个页面对应的纠错码和校验 和;
[0029] 4. 4)计算子请求Ri所包含的各个页面的校验和,根据计算得到的校验和和步骤 4. 3)中读取得到的校验和进行比较识别子请求而所包含的各个页面中的位错误;
[0030] 4. 5)找出子请求而所包含的各个页面中错误位最多的页面,将所述错误位最多的 页面的错误位数和所采用的纠错码能够纠正的最大错误位数T进行比较,如果位错误最多 的页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T,则跳转执行步骤 4. 6);否则如果位错误最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误 位数T,则跳转步骤4.
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1