首页> 中国专利> 一种三条带状态转换方法

一种三条带状态转换方法

摘要

本发明提供一种三条带状态转换方法,包括:更改三条带状态,其中三条带状态用于指示当前的逻辑条带及其位置关系;以及使纠删码位图指示更改后的纠删码条带位置和镜像条带位置上的哪些数据块构成纠删码条带。本发明降低了数据迁移导致的系统开销,提升了三条带系统的性能。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-07

    授权

    授权

  • 2015-07-22

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20150317

    实质审查的生效

  • 2015-06-24

    公开

    公开

说明书

技术领域

本发明涉及存储技术领域,更具体地,涉及条带化存储技术领域。

背景技术

三条带技术是指对于逻辑层的每个条带,其内部实现均由三个逻辑条 带组成,用于解决传统RAID技术中存在的小写性能过低以及数据写入过 程中若失败而导致的数据不一致问题(write hole问题)。参见图1,三个 逻辑条带分别为M条带、RS条带和N条带,其中:

1、M条带(镜像条带):该条带上的数据使用副本机制进行保护。镜 像条带用于存放小写数据,用以提升数据读写的性能;此外,镜像条带的 写入不覆盖纠删码条带上的数据,因此避免了写入过程中由于节点失效而 导致的数据不一致。当镜像条带的小写积累到满条带或者系统启动镜像条 带到纠删码条带的转换以腾出镜像条带占用的空间时,镜像条带会被转化 成纠删码条带。

2、RS条带(纠删码条带):该条带上的数据使用Reed–Solomon编码 机制保护。

3、N条带(空条带):不存放数据的条带。空条带是满条带写入时的 短暂存放场所,写完成后其状态立即转变为纠删码条带。空条带的存在使 得数据写入不覆盖原来镜像条带与纠删码条带上的数据,确保不会出现数 据不一致的问题。

另外,为了确保镜像条带上的数据具有不低于纠删码条带上的数据的 保护级别,镜像条带上的数据所对应的副本存储在该条带的校验块所在的 竖条带(或称副本节点)上。

尽管具备上述优点,然而现有的三条带系统并没有提及状态转换的具 体方式,如果采用将一个条带的有效数据迁移至另一条带的方式,则由于 占用额外的数据带宽和CPU时间,从而导致效率较低,进而会影响三条 带系统的性能。

发明内容

为解决上述问题,根据本发明的一个实施例,提供一种三条带状态转 换方法,包括:

更改三条带状态,其中三条带状态用于指示当前的逻辑条带及其位置关 系;以及,使纠删码位图指示更改后的纠删码条带位置和镜像条带位置上的 哪些数据块构成纠删码条带。

上述方法中,除去构成纠删码条带的数据块,更改后的纠删码条带位置 和镜像条带位置上的其他数据块构成镜像条带。

上述方法中,在执行镜像条带到纠删码条带的转换时:

互换镜像条带位置与纠删码条带位置;以及,使纠删码位图指示互换后 的纠删码条带位置和镜像条带位置上的哪些数据块构成纠删码条带。

上述方法中,与所述纠删码位图中的1对应的纠删码条带位置上的数据 块,以及与所述纠删码位图中的0对应的镜像条带位置上的数据块构成纠删 码条带。

上述方法中,在使所述纠删码位图指示哪些数据块构成纠删码条带之前, 还获得在互换前的镜像条带上写入的数据、计算校验并将该校验写入互换前 的镜像条带。

上述方法中,当满条带写入的空条带转换到纠删码条带时:

将空条带位置更改为纠删码条带位置,并且使另两个位置分别为镜像条 带位置和空条带位置;以及,使纠删码位图指示更改后的纠删码条带位置上 的数据块构成纠删码条带。

上述方法中,所述三条带状态包括:

纠删码条带位置为第一位置、镜像条带位置为第二位置且空条带位置为 第三位置;

镜像条带位置为第一位置、纠删码条带位置为第二位置且空条带位置为 第三位置;

空条带位置为第一位置、镜像条带位置为第二位置且纠删码条带位置为 第三位置;以及

空条带位置为第一位置、纠删码条带位置为第二位置且镜像条带位置为 第三位置。

上述方法中,使用2bit的位图表示所述三条带状态。

本发明提供的三条带状态转换方法仅修改三条带状态和纠删码位图, 就能实现无数据迁移、无数据覆盖的转换操作,降低了数据迁移导致的系 统开销,提升了三条带系统的性能。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是三条带结构的示意图;

图2是根据本发明一个实施例的三条带状态转换方法的流程图;

图3是根据本发明一个实施例的三条带状态转换机的示意图;

图4(a)和4(b)是根据本发明一个实施例的镜像条带写操作的示 意图;

图5(a)-5(c)是根据本发明一个实施例的镜像条带转换到纠删码 条带的示意图;

图6(a)-6(c)是根据本发明另一个实施例的镜像条带转换到纠删 码条带的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图 通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体 实施例仅用以解释本发明,并不用于限定本发明。

根据本发明的一个实施例,提供一种三条带状态转换方法。

概括而言,该方法包括:更改三条带状态,其中三条带状态用于指示 当前的逻辑条带及其位置关系;以及,使纠删码位图指示更改后的纠删码条 带位置和镜像条带位置上的哪些数据块构成纠删码条带。

现结合图2详细描述该三条带状态转换方法,需要说明的是,说明书 中描述的方法的各个步骤并非一定是必须的,而是可以根据实际情形来省 略或替换其中的一个或多个步骤,且其顺序也是可以改变的。

第一步:更改三条带状态

三条带状态用于指示当前三条带中包含哪三个逻辑条带,以及这三个 逻辑条带之间的位置关系。本文中,三条带位置的编号记为C、B、A,以 图1所示的三条带结构为例,位置C在最下面、位置B在中间且位置A 在最上面,图1中的三条带状态可表示为RS M N,指示纠删码(RS)条 带位置在位置C、镜像(M)条带位置在位置B,且空(N)条带位置在 位置A。应理解,本文中的逻辑条带位置不等同于逻辑条带。

根据三条带技术的原理,由于在同一时刻三条带中最多只允许有一条 有效的纠删码条带、最多只允许有一条镜像条带并且至少有一条空条带, 则考虑同一时刻在不同位置可能出现的逻辑条带组合,可得到如表1所示 的十四个三条带状态,其中最后一个状态ERR表示条带不可用。

表1

如果以位图的形式表示上述三条带状态,则至少需要用4个位(bit) 来进行表示。

在一个实施例中,在不考虑状态ERR的情况下,可对上述表1的状 态集合进行精简,仅用四个状态来代表所有的状态。也就是说,使用2bit 的位图就能表示所有三条带状态。

具体而言,对于位置C B A,这四个状态分别为RS M N、M RS N、N  RS M和N M RS。精简为这四个状态的原因如下:

对于表1的原始状态N N N来说,其每条逻辑条带上的数据均为0, 由于数据为0时其校验也为0,因此可将N N N表示为其他的状态,如N N  RS等。对于状态RS M N来说,如果在该状态下对三条带分别进行镜像写、 镜像条带转换到纠删码条带,以及满纠删码条带写(即满条带写入的空条 带转换到纠删码条带)三种操作,则根据三条带技术的原理,这三种操作 可相应导致如下的三种状态:RS M N、M RS N以及N N RS。其中,对于 出现两个N(即空条带位置)的状态N N RS,由于在数据都为0时,空条 带和镜像条带是等价的,因此可以将N N RS记为M N RS或者N M RS。 在一个实施例中,可采用状态N M RS来表示状态N N RS;在另一个实施 例中,也可以采用状态M N RS来表示状态N N RS,需要说明的是,后文 的实施例均采用RS与M相邻的三条带状态表示方式。同理,表1中的其 他状态(除ERR)均可以表示成这四种状态中的一种。

因此,2bit的位图就能完全描述三条带在满纠删码条带写或者镜像条 带转换到纠删码条带时涉及的条带状态转换问题,如表2所示。

表2

在其他的实施例中,也可以使用n(n为大于2的正整数)个bit的位 图作为三条带状态位图,其中以2个bit指示当前的三条带状态,剩余的 n-2个bit可留作他用。

基于上述四种状态RS M N、M RS N、N M RS和N RS M,图3示出 了在执行镜像写、镜像条带转换到纠删码条带,或者满纠删码条带写操作 后,这四种状态分别转换到哪种状态。如图3所示,其中+M表示镜像条 带写操作、+MF表示镜像条带转换到纠删码条带,且+RS表示满纠删码条 带的写操作,初始可以为任意一个状态。举例来说,如果在状态RS M N 下执行镜像条带到纠删码条带的转换,则状态变更为M RS N(即在执行 镜像条带到纠删码条带的转换时,将镜像条带位置与纠删码条带位置互 换),三条带状态位图从00变为01(参见表2),以指示转换后的逻辑条 带及其位置关系;如果在该状态下执行满纠删码条带的写操作,则状态变 更为N M RS(即在执行满纠删码条带的写操作时,空条带位置变更为纠 删码条带位置、与纠删码条带位置相邻的位置为镜像条带位置,且另一个 位置为空条带位置,应理解,这里的“相邻”仅意在说明在三条带状态的 文字表示中相邻,并非指物理上的相邻),三条带状态位图从00改变为10。 这样的表示方式比采用十四种状态的方式更为高效。

第二步:修改纠删码位图以指示纠删码条带

为了实现在满纠删码条带写以及镜像条带到纠删码条带的转换中不 发生实际的数据迁移,以便提高系统性能,本方法使用纠删码位图(即 RS位图)来指示逻辑条带位置上的哪些数据块构成逻辑的纠删码条带。 基于上述四种状态,可使用纠删码位图来指示纠删码条带位置和镜像条带 位置上的哪些数据块构成纠删码条带,而这两个逻辑条带位置上的其他数 据块构成镜像条带。

根据上述四种状态RS M N、M RS N、N M RS和N RS M,针对镜像 条带到纠删码条带的转换,在执行镜像条带位置与纠删码条带位置的互换 后(参见第一步),使纠删码位图指示互换后的纠删码条带位置和镜像条带 位置上的哪些数据块构成纠删码条带。例如,对于大小为N+M的三条带, 采用N+M bit的纠删码位图,其中,与1对应的纠删码条带位置上的数据块 以及与0对应的镜像条带位置上的数据块构成纠删码条带。

在一个实施例中,在执行镜像条带到纠删码条带的转换之前,在执行镜 像条带的写操作时,如图4(a)和4(b)所示,需要一个镜像位图(即M 位图)来指示镜像条带的哪些数据块上存在有效的镜像数据。例如,1指示 镜像条带上对应的数据块存在有效的镜像数据,而0指示对应的数据块不存 在有效的镜像数据。具体而言,在执行镜像条带到纠删码条带的转换时,在 更改三条带状态前,可根据镜像位图来获得有效的镜像数据、根据镜像数据 和纠删码条带上的部分数据计算校验、将校验写入镜像条带(本文中,将校 验块与数据块一起描述为数据块,并且根据本发明提供的方法,校验块总是 位于同一个逻辑条带上),并且修改镜像位图以指示镜像数据和校验所在的 数据块。此时,镜像位图指示的数据块和纠删码条带上的部分数据块构成转 换后的纠删码条带。接着,互换纠删码条带位置与镜像条带位置,并且修改 纠删码位图以指示互换后的逻辑条带位置上的哪些数据块构成纠删码条带。

根据上述四种状态RS M N、M RS N、N M RS和N RS M,针对满纠 删码条带的写操作(即满条带写入的空条带转换到纠删码条带),将空条带 位置更改为纠删码条带位置,使另外的两个位置分别为镜像条带位置和空条 带位置(对于本实施例来说,镜像条带位置与纠删码条带位置在三条带状态 中表示为相邻的);以及,使纠删码位图指示更改后的纠删码条带位置上的 数据块构成纠删码条带。

下面结合三个具体的例子来描述本发明提供的三条带状态转换方法。

示例一、镜像条带到纠删码条带的首次转换。

1、参见图5(a),纠删码条带为全0,镜像条带新写入数据D2’、D4’ 及D5’,当前三条带状态为RS M N。

2、在执行镜像条带到纠删码条带的转换之前,根据镜像条带新写入的 D2’、D4’及D5’计算校验,并写入镜像条带,如图5(b)所示。

3、参见图5(c),更改三条带状态,即将三条带状态从RS M N更改为 M RS N。此外,修改纠删码位图(RS位图),得到1010111010001000,其 指示由图5(c)的灰色数据块构成纠删码条带,镜像条带位置和纠删码条带 位置的非灰色数据块构成镜像条带。

示例二、在示例一的转换后,发生镜像条带写和镜像条带到纠删码条带 的转换。

1、参见图6(a),新写了D1”和D4”到镜像条带。

2、根据当前镜像条带上的新数据块以及纠删码条带上的部分数据块, 计算新的校验(P1”,P2”,P3”,P4”),写入当前镜像条带,如图6(b) 所示。

3、参见图6(c),将条带状态M RS N更改为RS M N,并且将纠删码 位图修改为1001110111111111,以指示由图6(c)的灰色数据块构成转换后 的纠删码条带,而镜像条带位置和纠删码条带位置的非灰色数据块构成镜像 条带。

示例三、在示例二的转换后发生满纠删码条带写。

直接写到空条带(即写到空条带位置),将空条带位置与纠删码条带位 置互换,状态从RS M N更改为N M RS,同时丢弃原镜像条带和原纠删码 条带上的数据。

应当理解,虽然本说明书是按照各个实施例描述的,但并非每个实施 例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见, 本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可 以经适当组合,形成本领域技术人员可以理解的其他实施方式。

以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的 范围。任何本领域的技术人员,在不脱离本发明的构思和原则的前提下所 作的等同变化、修改与结合,均应属于本发明保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号