CN104731526B - 一种不满条带写的方法及装置 - Google Patents
一种不满条带写的方法及装置 Download PDFInfo
- Publication number
- CN104731526B CN104731526B CN201510115467.5A CN201510115467A CN104731526B CN 104731526 B CN104731526 B CN 104731526B CN 201510115467 A CN201510115467 A CN 201510115467A CN 104731526 B CN104731526 B CN 104731526B
- Authority
- CN
- China
- Prior art keywords
- band
- mirror image
- bitmap
- write
- mirror
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Editing Of Facsimile Originals (AREA)
Abstract
本发明提供一种不满条带写的方法及装置,其中所述条带由镜像条带、纠删码条带和空条带这三个逻辑条带组成,所述方法包括:将数据写入镜像条带,以及修改所述条带对应的位图中的镜像位图指示位和镜像位图;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。本发明使不满条带写请求可以被高效地处理,并且降低了元数据的开销。
Description
技术领域
本发明涉及存储技术领域,更具体地,涉及条带化存储技术领域。
背景技术
三条带技术是一种结合了镜像与纠删码的数据分布技术,用于解决数据写入过程中若失败而导致的数据不一致问题(即write hole问题),并且可提高系统性能以及提供系统负载均衡分布的高可靠性。三条带技术是指对于逻辑层的每个条带,其内部实现均由三个逻辑条带组成。参见图1,三个逻辑条带分别为M条带、RS条带和N条带,其中:
1、M条带(镜像条带):该条带上的数据使用副本机制进行保护。镜像条带用于存放不满条带写(即小写)数据,用以提升数据读写的性能;此外,镜像条带的写入不覆盖纠删码条带上的数据,因此避免了写入过程中由于节点失效而导致的数据不一致。当镜像条带的小写积累到满条带或者系统启动镜像条带到纠删码条带的转换以腾出镜像条带占用的空间时,镜像条带会被转化成纠删码条带。
2、RS条带(纠删码条带):该条带上的数据使用Reed–Solomon编码机制保护;如N+M纠删码,其中N为原始数据块、M为校验块。
3、N条带(空条带):不存放数据的条带。空条带是满条带写入时的短暂存放场所,写完成后其状态立即转变为纠删码条带。空条带的存在使得数据写入不覆盖原来镜像条带与纠删码条带上的数据,确保不会出现数据不一致的问题。
另外,为了确保镜像条带上的数据具有不低于纠删码条带上的数据的保护级别,镜像条带上的数据所对应的副本存储在该条带的校验块所在的竖条带(或称副本节点)上。
尽管具备上述优点,但当前的三条带技术未具体说明如何处理不满条带写(尤其是不满数据块的小写)请求。如果仍采用传统的RAID做法,则一次小写会涉及多次I/O(包括读改写、重构写),即具有写惩罚(write penalty)的问题,且大量的小写会严重影响系统的性能。
发明内容
为解决上述问题,根据本发明的一个实施例,提供一种不满条带写的方法,包括:
将数据写入镜像条带;以及,修改所述条带对应的位图中的镜像位图指示位和镜像位图;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
上述方法中,所述条带对应的位图包括镜像位图指示位、镜像位图和小写粒度指示位;其中,小写粒度指示位用于指示小写请求的写粒度。
上述方法中,当小写请求的写粒度是所述条带的数据块粒度的整数倍时,使镜像位图指示位指示镜像位图中存放的是镜像条带数据信息,并且在镜像位图中存放镜像条带数据信息。
上述方法中,当小写请求的写粒度不是所述条带的数据块粒度的整数倍时,使镜像位图指示位指示镜像位图中存放的是指向镜像条带数据信息的地址、在镜像位图中存放指向镜像条带数据信息的地址,并且在该地址处存放镜像条带数据信息。
上述方法中,当所述条带的数据块粒度为64KB并且小写请求的写粒度为4KB的整数倍但不是64KB的整数倍时,还修改所述条带对应的位图中的小写粒度指示位,并且镜像位图指向的镜像条带数据信息采用16bit位图来指示镜像条带数据块上的哪些位置有数据。
上述方法中,当所述条带的数据块粒度为64KB并且小写请求的写粒度为512B的整数倍但不是64KB的整数倍时,还修改所述条带对应的位图中的小写粒度指示位,并且镜像位图指向的镜像条带数据信息采用128bit位图来指示镜像条带数据块上的哪些位置有数据。
上述方法中,除了将数据写入镜像条带,还将数据写入所述条带的校验数据所在的磁盘上。
上述方法中,镜像位图为24bit。
上述方法中,当镜像条带的不满条带写积累到满条带时,将镜像条带转化为纠删码条带。
根据本发明的一个实施例,还提供一种不满条带写的装置,包括:
用于将数据写入镜像条带的设备;以及用于修改所述条带对应的位图中的镜像位图指示位和镜像位图的设备;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
本发明具有如下的有益效果:
1、小写的数据均写到镜像条带和镜像条带的副本节点(即竖条带),避免了传统RAID的写惩罚问题;此外,即使上层下发不满条带的写请求,在块设备层也可以被高效地处理,降低了写处理过程中的读写操作所引起的系统开销。
2、采用镜像位图记录镜像条带数据信息或者指向该信息的地址,并且使用不同的小写位图来记录不同粒度的小写,降低了元数据的开销。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1示出了三条带结构的示意图;
图2示出了根据本发明一个实施例的三条带位图结构及其存储区域的示意图;
图3示出了根据本发明一个实施例的不同小写粒度对应的小写位图的结构的示意图;
图4示出了根据本发明一个实施例的满数据块写和不满数据块写的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在描述本发明提供的不满条带写方法之前,首先对基于三条带技术的满条带写步骤进行概括描述:
1、通过满条带的数据计算额外的冗余校验;
2、根据当前三条带的状态,确定空条带的位置;
3、下发对空条带的写请求;
4、写成功后,将该空条带转化为纠删码条带,其余条带清空并标为空条带。
鉴于以上满条带写过程,根据本发明的一个实施例,提供一种不满条带写的方法。
概括而言,该方法包括:将数据写入镜像条带;以及,修改所述条带对应的位图(也称作三条带位图)中的镜像位图指示位和镜像位图。其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
下面将按步骤描述本发明提供的不满条带写的方法的一个实施例。
步骤1、创建与条带对应的位图(即三条带位图)。
三条带位图包括镜像位图指示位和镜像位图,参见图2,示出了三条带位图的结构及其存放区域的一个实施例。图2包括四个部分,其中,A部分示出了用于存放三条带位图的区域,该区域可分为多个4KB大小的页,其中每个页用于存放一项或多项三条带位图;B部分示出了每个页包含的三条带位图的项数,当三条带位图的大小为64bit时,每个4KB的页可包括512项三条带位图;C和D部分详细示出了三条带位图的结构,其中,对于该64bit的三条带位图,第4位是镜像位图指示位(用M表示),第40-63位是镜像位图。此外,在该实施例中,三条带位图的第0-3位用于指示条带状态、第16-39位是RS位图,并且第6-15是保留位。
镜像位图指示位可用于区分不满条带写是满数据块的小写还是不满数据块的小写。本文中,满数据块小写和不满数据块小写的定义如下:由于三条带的每个逻辑条带可划分为多个数据块(即chunk,以N+M的三条带为例,每个逻辑条带有N+M个数据块),该数据块具有一定的粒度(称为条带的数据块粒度),如果小写请求的写粒度不是该数据块粒度的整数倍,则为不满数据块小写;如果小写请求的写粒度是数据块粒度的整数倍,则为满数据块小写。本文中,条带的数据块粒度通常为64KB,不满数据块的小写请求的写粒度通常为4KB的整数倍或者512B的整数倍(其中,512B的整数倍可能包括4KB的整数倍)。
对于满数据块的镜像条带,镜像位图指示位为0,其表示镜像位图存放的是镜像条带数据信息;对于不满数据块的镜像条带,镜像位图指示位为1,其表示镜像位图存放的是指向镜像条带数据信息的地址。应理解,镜像位图指示位也可以用1来表示镜像位图存放的是镜像条带数据信息,用0来表示镜像位图存放的是指向镜像条带数据信息的地址。
对于具有N+M个数据块的镜像条带,镜像位图的大小可以是N+Mbit,也可以大于N+M bit。当镜像位图存放镜像条带数据信息时,其中的N+M个bit中的每个bit可表示镜像条带中对应的数据块是否有数据,例如为1可表示对应的数据块有数据,为0则表示对应的数据块没有数据。图2中的镜像位图为24bit,本领域技术人员应理解,该镜像位图也可以大于或小于24bit。由于条带的数据块个数通常为(6+3)或者(10+4),在镜像位图存储镜像条带数据信息时,24bit足够用来指示9个或14个数据块;而在镜像位图存储地址信息时,由于首地址可以是已知的,镜像位图可以仅存储首地址的偏移,因此24bit也足够用了。
在一个实施例中,还要创建小写位图,用于存放镜像条带数据信息(针对不满数据块的镜像条带)。当镜像位图存储地址时,该地址指向存储镜像条带数据信息的位图,即小写位图。
在进一步的实施例中,三条带位图还包括小写粒度指示位(如图2的C或者D部分中的三条带位图中的第5位),用于指示小写请求的写粒度。一般而言,上层下发的不满数据块的小写请求通常为4KB的整数倍或者512B的整数倍,并以前者居多。在一个实施例中,小写粒度指示位为0时,指示小写粒度为4KB的整数倍;小写粒度指示位为1时,指示小写粒度为512B的整数倍。此外,针对这两种小写粒度,为了节省存储开销,在一个实施例中,可使用粒度不同的两种小写位图(即16bit与128bit)分别表示。参见图3,图3的上半部分为16bit(以4K-SW-bitmap表示)的小写位图区域,下半部分为128bit(以512B-SW-bitmap表示)的小写位图区域,其中每个小写位图区域的可分配空闲空间可通过对应的空闲链表头描述。对于64KB的数据块,当粒度为4KB的整数倍且不是64KB的整数倍时,可使用16个位(64KB/4KB=16),即一个4K-SW-bitmap来表示该数据块,例如:“0100101101100010”,其中,1表示对应的位置有数据。对于64KB的数据块,当粒度为512B的整数倍且不是64KB的整数倍时,可使用128个位(64KB/512B=128),即一个512B-SW-bitmap来表示该数据块。
步骤2、将数据写入镜像条带,并且修改对应的三条带位图。
图4示出了将数据写入镜像条带的示意图,其中,三条带系统中的读写处理模块在接收到上层(如用户卷)下发的小写请求后,根据镜像条带在三条带中的位置将相应数据写入镜像条带。其中,无论是不满粒度写(即不满数据块小写)还是满粒度写(即满数据块小写),均写入镜像条带。
本领域技术人员应理解,在将数据写入镜像条带的同时,还要写入竖条带。继续参考图4,其中用竖条带表示的校验数据所在的磁盘中,也存储了不满粒度和满粒度写入的数据。
在修改对应的三条带位图时,根据上文中数据块粒度为64KB的实施例,可包括以下三种情况:
2.1、当不满条带写的写粒度是数据块粒度的整数倍时,将镜像位图指示位标记为0,并且在镜像位图中存放镜像条带数据信息,用于表示镜像条带上的哪些位置有数据。
2.2、当不满条带写的写粒度不是数据块粒度(64KB)的整数倍,且上层下发的写粒度是4KB的整数倍时,将镜像位图指示位标记为1、将小写粒度指示位标记为0、在16bit小写位图中存放镜像条带数据信息,并且在镜像位图中存放指向镜像条带数据信息的地址。
2.3、当不满条带写的写粒度不是数据块粒度(64KB)的整数倍,且上层下发的写粒度是512B的整数倍时,将镜像位图指示位标记为1、将小写粒度指示位标记为1,在128bit小写位图中存放相应的镜像条带数据信息,并且在镜像位图中存放指向镜像条带数据信息的地址。
上文描述了本发明提供的不满条带写的方法的一个实施例,应理解,除了在系统初始化时预先创建空的三条带位图或者小写位图,并且在写入镜像条带时修改该三条带位图或小写位图,在其他实施例中,可以在写入镜像条带的同时创建对应的三条带位图或者小写位图。
本领域技术人员还应理解,当镜像条带的小写积累到满条带或者系统启动镜像条带到纠删码条带的转换以腾出镜像条带占用的空间时,镜像条带会被转化成纠删码条带。
根据本发明的一个实施例,还提供一种不满条带写的装置,包括:用于将数据写入镜像条带的设备,以及用于修改条带对应的位图中的镜像位图指示位和镜像位图的设备;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
应当理解,虽然本说明书是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围。任何本领域的技术人员,在不脱离本发明的构思和原则的前提下所作的等同变化、修改与结合,均应属于本发明保护的范围。
Claims (10)
1.一种不满条带写的方法,其中所述条带由镜像条带、纠删码条带和空条带这三个逻辑条带组成,所述方法包括:
将数据写入镜像条带,以及
修改所述条带对应的位图中的镜像位图指示位和镜像位图;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
2.根据权利要求1所述的方法,其中,所述条带对应的位图包括镜像位图指示位、镜像位图和小写粒度指示位;其中,小写粒度指示位用于指示小写请求的写粒度。
3.根据权利要求1或2所述的方法,其中,当小写请求的写粒度是所述条带的数据块粒度的整数倍时,使镜像位图指示位指示镜像位图中存放的是镜像条带数据信息,并且在镜像位图中存放镜像条带数据信息。
4.根据权利要求1或2所述的方法,其中,当小写请求的写粒度不是所述条带的数据块粒度的整数倍时,使镜像位图指示位指示镜像位图中存放的是指向镜像条带数据信息的地址、在镜像位图中存放指向镜像条带数据信息的地址,并且在该地址处存放镜像条带数据信息。
5.根据权利要求4所述的方法,其中,当所述条带的数据块粒度为64KB并且小写请求的写粒度为4KB的整数倍但不是64KB的整数倍时,还修改所述条带对应的位图中的小写粒度指示位,并且镜像位图指向的镜像条带数据信息采用16bit位图来指示镜像条带数据块上的哪些位置有数据。
6.根据权利要求4所述的方法,其中,当所述条带的数据块粒度为64KB并且小写请求的写粒度为512B的整数倍但不是64KB的整数倍时,还修改所述条带对应的位图中的小写粒度指示位,并且镜像位图指向的镜像条带数据信息采用128bit位图来指示镜像条带数据块上的哪些位置有数据。
7.根据权利要求1或2所述的方法,其中,还将数据写入所述条带的校验数据所在的磁盘上。
8.根据权利要求1或2所述的方法,其中,镜像位图为24bit。
9.根据权利要求1或2所述的方法,其中,当镜像条带的不满条带写积累到满条带时,将镜像条带转化为纠删码条带。
10.一种不满条带写的装置,其中所述条带由镜像条带、纠删码条带和空条带这三个逻辑条带组成,所述装置包括:
用于将数据写入镜像条带的设备,以及
用于修改所述条带对应的位图中的镜像位图指示位和镜像位图的设备;其中,镜像位图指示位用于指示镜像位图中存放的是镜像条带数据信息还是指向镜像条带数据信息的地址,镜像条带数据信息用于指示镜像条带上的哪些位置有数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115467.5A CN104731526B (zh) | 2015-03-17 | 2015-03-17 | 一种不满条带写的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115467.5A CN104731526B (zh) | 2015-03-17 | 2015-03-17 | 一种不满条带写的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731526A CN104731526A (zh) | 2015-06-24 |
CN104731526B true CN104731526B (zh) | 2017-11-03 |
Family
ID=53455460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510115467.5A Expired - Fee Related CN104731526B (zh) | 2015-03-17 | 2015-03-17 | 一种不满条带写的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731526B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109814807B (zh) * | 2018-12-28 | 2022-05-06 | 曙光信息产业(北京)有限公司 | 一种数据存储方法及装置 |
CN111414271B (zh) * | 2020-03-17 | 2023-10-13 | 上海爱数信息技术股份有限公司 | 一种基于自适应存储冗余策略的存储方法 |
CN111708742B (zh) * | 2020-05-24 | 2022-11-29 | 苏州浪潮智能科技有限公司 | 一种分布式文件系统的输入输出预读方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
CN104040515A (zh) * | 2011-09-30 | 2014-09-10 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937421B2 (en) * | 2002-11-14 | 2011-05-03 | Emc Corporation | Systems and methods for restriping files in a distributed file system |
-
2015
- 2015-03-17 CN CN201510115467.5A patent/CN104731526B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
CN104040515A (zh) * | 2011-09-30 | 2014-09-10 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
Non-Patent Citations (1)
Title |
---|
RAID技术综述;华山;《计算机技术》;20030331;第41卷(第3期);45-49 * |
Also Published As
Publication number | Publication date |
---|---|
CN104731526A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503706B (zh) | 一种基于磁盘阵列的数据存储及读取方法 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
US8862818B1 (en) | Handling partial stripe writes in log-structured storage | |
CN104583930B (zh) | 数据迁移的方法、控制器和数据迁移装置 | |
CN109416666A (zh) | 具有压缩数据和标签的缓存 | |
CN104461391A (zh) | 一种存储设备元数据管理处理方法及系统 | |
CN104881370B (zh) | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 | |
CN104899114B (zh) | 一种固态硬盘上的连续时间数据保护方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN103150128A (zh) | 基于ssd和磁盘的可靠混合存储系统实现方法 | |
CN110347613A (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
CN108874321A (zh) | 一种独立冗余磁盘阵列数据重构方法、装置及设备 | |
CN103729149A (zh) | 一种存储数据的方法 | |
CN104731526B (zh) | 一种不满条带写的方法及装置 | |
US10642508B2 (en) | Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media | |
US11093339B2 (en) | Storage utilizing a distributed cache chain and a checkpoint drive in response to a data drive corruption | |
CN104268097B (zh) | 一种元数据处理方法及系统 | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
CN103645997B (zh) | 一种数据保护的方法与系统 | |
CN116737060A (zh) | 非易失性存储器器件中的基于超级块的写入管理 | |
CN100492323C (zh) | 对缓存内容进行保护的方法和装置以及缓存控制器 | |
CN103544097A (zh) | 嵌入式系统的日志存储方法、系统及日志读取方法和系统 | |
WO2019037587A1 (zh) | 一种数据恢复方法及装置 | |
CN108376121B (zh) | 一种Flash存储器的数据存储方法 | |
CN104793904B (zh) | 逻辑卷设定硬盘禁区并利用硬盘禁区备份配置信息的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171103 |
|
CF01 | Termination of patent right due to non-payment of annual fee |