CN105930097B - 一种消除局部并行中小写操作的分布校验式磁盘阵列 - Google Patents
一种消除局部并行中小写操作的分布校验式磁盘阵列 Download PDFInfo
- Publication number
- CN105930097B CN105930097B CN201610230187.3A CN201610230187A CN105930097B CN 105930097 B CN105930097 B CN 105930097B CN 201610230187 A CN201610230187 A CN 201610230187A CN 105930097 B CN105930097 B CN 105930097B
- Authority
- CN
- China
- Prior art keywords
- data
- band
- block
- write
- sub
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种消除局部并行中小写操作的分布校验式磁盘阵列,适用于连续数据存储,属于独立硬盘冗余阵列技术领域。本发明针对连续数据存储的特点,设计实现一种可消除局部并行中小写操作的单盘容错分布校验式硬盘阵列Ripple‑RAID 5,主要包括:存储数据在Ripple‑RAID 5上的布局方式、基于流水技术渐进生成校验的写操作方法、数据容错等内容。硬盘阵列Ripple‑RAID 5在单盘容错条件下,既保持了局部并行的节能性,又解决了局部并行带来的小写问题,能够极大提高写性能和整体性能,具有突出的节能效率。
Description
技术领域
本发明涉及一种消除局部并行中小写操作的分布校验式磁盘阵列,适用于连续数据存储,属于独立硬盘冗余阵列技术领域。
背景技术
硬盘包括磁盘和固态盘(Solid State Disk,SSD),由于磁盘是海量数据存储的主体,因此这里的硬盘主要指磁盘。
为了提高存储数据的安全性,改善存储系统的输入、输出性能,人们设计了各种类型的独立硬盘冗余阵列(Redundant Arrays of Independent Disks,RAID)。RAID技术使用特定的硬件或软件,把多个物理存储设备如磁盘、SSD联合起来,形成一个统一的逻辑存储设备。
RAID中常用的技术术语如下:
条带:磁盘阵列中不同盘上的位置相关的分块的集合,是组织不同盘上条块的单位。
条带化:把一段连续数据分割成相同大小的数据块,把每块数据分别写入到磁盘阵列的不同盘上的方法。
镜像:把原数据复制到一个或更多盘上。
容错:利用某种运算,如异或运算,生成冗余的校验数据并保存。当硬盘出现故障丢失数据时,可利用校验数据进行数据恢复。异或运算通常用表示。
单盘容错:利用校验数据和其它盘上的数据,可恢复RAID中任意一块故障盘上的数据。
分布校验:校验数据按一定规律分布在构成RAID的各个盘上。
局部并行:阵列中仅部分硬盘并行,而不是全部硬盘并行,能够提供合适的性能,并且便于调度其余硬盘待机节能。
RAID中的写操作分3种情况:①写数据恰好与RAID中的整个条带对齐,称为完全写;②写数据不能覆盖整个条带,但不少于整个条带的1/2时,称为重构写;③写数据不足整个条带1/2时,称为小写,也叫“读-改-写”,写新数据时需要先读取对应的旧数据、旧校验数据,与新数据一起生成新校验数据后,再写入新校验数据。
常用的RAID有RAID0、RAID1、RAID5等。其中RAID0不具有冗余校验 能力,RAID1只对硬盘做镜像。RAID5以条带的方式向阵列中的硬盘写数据,校验数据分布存储在阵列中的各个盘上,通过全局并行提高访问速度和保证读写并发性,具有单盘容错能力。
然而,视频监控、备份、归档等连续数据存储应用,以顺序数据访问为主,对随机性能要求较低,不需要全局并行提供的高性能。为此,发明专利ZL201010256899.5、ZL201010256665.0、ZL201010256711.7、ZL201010256908.0、ZL201010256679.2、ZL201010256699.X、ZL201010575578.1、ZL201010575625.2、ZL201010575611.0等提出多种局部并行数据布局,把采用该类局部并行数据布局的节能RAID统称为S-RAID。
S-RAID基本思想是:①把阵列中的存储区分成若干组,组内并行以提供合适的性能,分组便于调度部分硬盘运行而其余硬盘待机节能;②采用贪婪编址法,在顺序访问模式下,保证读写操作在较长时间内分布在部分确定的硬盘上,其它硬盘可以长时间待机节能。
S-RAID基本执行小写操作,原因如下:局部并行节能的核心是把读写操作集中在部分并行工作的硬盘上,从而调度其它硬盘待机节能。小写可有效减少活动硬盘的数量,即使有机会执行重构写,也依然会执行小写,因为重构写需要启动所有硬盘,会使S-RAID丧失节能性。小写中写操作引入了等量的、额外的读操作,因此严重降低写性能。
S-RAID主要面向视频监控、备份、归档等连续数据存储应用,该类应用以写操作为主,这导致S-RAID的小写问题异常突出。小写使S-RAID中单位硬盘的有效写带宽,极限值(100%顺序写时)不到其最大写带宽的一半。为了提供额定的写性能,S-RAID必须运行更多硬盘弥补小写带来的性能损失,会消耗更多能量,其节能效率亟待提高。
发明内容
本发明的目的是克服已有技术存在的不足,在提高存储系统节能效率、改善存储性能的前提下,提出一种消除局部并行中小写操作的分布校验式磁盘阵列。所述消除局部并行中小写操作的分布校验式磁盘阵列,记作Ripple-RAID 5。
本发明的目的是通过下述技术方案实现的。
本发明提出的一种消除局部并行中小写操作的分布校验式磁盘阵列,实现主要包括数据布局、写操作方法、数据容错等3方面内容,其中写操作方法又包括地址映射、异地数据更新、基于流水技术渐进生成校验等内容。
1.数据布局
硬盘阵列Ripple-RAID 5包含N块硬盘,N≥3且为正整数。每个硬盘平均分成k×N+1个存储块,k为大于0的整数(一般在1到几十范围内取值),偏移量相同的N个存储块组成一个条带,共组成k×N+1个条带,任取其中一个条带作为影子条带,其余为基本条带。
每个基本条带包含1个校验存储块(简称校验块),N-1个数据存储块(简称数据块)。基本条带i中的校验块位于硬盘N-1-j;如果j+v<N-1,则第v个数据块位于硬盘v,否则位于硬盘v+1,其中0≤i<(k×N),j=i MOD N(MOD为模运算),0≤v<N-1。
每个数据块、校验块进一步划分为M个大小相等的子块,每个子块包含若干个地址连续的扇区,分别称为数据子块(记作Strip)和校验子块(记作PStrip)。每个基本条带中偏移量相同的子块组成一个子条带(记作Stripe),这样每个基本条带中包含M个大小相同的子条带。子条带Stripe m的校验子块PStrip m由其N-1个数据子块Strip m异或生成,见式(1)。
其中,0≤m<M。
为了提供合适的性能,把基本条带中的N-1个数据块按顺序分成P组,每组包含Q个数据块(P、Q为大于0的整数,且满足P×Q=N-1,Q值根据实际存储带宽需求确定),这样每个子条带中的数据子块也被分成P组,每组包含Q个数据子块,每个子条带中仅组内的Q个数据子块提供并行性,不是全部数据子块提供并行性。
Ripple-RAID 5采用适度贪婪的地址分配策略,从基本条带0内、组0内的首个数据子块开始,按如下规则编址:①同一组内,同一子条带内、编号相邻数据块内的数据子块的地址相邻;②同一基本条带内,编号相邻的两个子条带,前一个在组内的末尾数据子块,与后一个在该组内的起始数据子块的地址相邻;③同一基本条带内,编号相邻的组的地址相邻;④编号相邻的基本条带的地址相邻。(注:上述基本条带、组、数据块均从0开始编号)
Ripple-RAID 5仅对基本条带进行编址,影子条带不参与编址,仅供Ripple-RAID5内部使用,对上层应用是透明的,其功能在写操作方法中会详细介绍。上述数据布局和编址方式,既具有局部并行的节能性,又通过引入特殊 功能的影子条带,同时具有解决局部并行中小写问题的基本条件。
2写操作方法
Ripple-RAID 5的写操作,综合运用了地址映射、异地数据更新、渐进式生成校验等方法,生成校验数据时不需读取旧数据;进一步采用流水技术读取已有校验(与旧校验不同)、写入新校验时,可有效解决局部并行带来的小写问题。此外,地址映射把非顺序写转换为顺序写,可进一步提升Ripple-RAID 5的写性能。
2.1地址映射
上层应用程序发来的读写请求地址,称为虚拟地址;数据在Ripple-RAID 5存储空间内的存储地址(Ripple-RAID 5在RAID级的编址,不包括影子条带),称为物理地址。地址映射实现虚拟地址到物理地址的转换:把非连续(可能部分连续)的虚拟地址映射为连续的物理地址,并记录映射关系到地址映射表。地址映射后,写操作在物理地址空间内完全连续,Ripple-RAID 5完全执行顺序写。
Ripple-RAID 5非常适合进行地址映射,原因如下:①连续数据存储应用以写操作为主,顺序写可以显著提高写性能和整体性能;②读操作以数据回放为主,即重复以前某时间段内的写操作,例如视频回放等,通常可获得与写性能接近的读性能;③以写新数据为主,很少进行改写操作,可以忽略改写操作引发的垃圾回收,或在负载较轻时进行垃圾回收。
以若干个连续扇区为单位进行地址映射,称为扇区组映射方式。该方式多扇区映射时效率高,但改写组中部分数据时,需要读取未修改数据,与改写数据一起重新映射。Ripple-RAID 5很少进行改写操作,适合采用该映射方式。地址映射信息需要作为元数据保存,大小为存储容量的8/(1024×x),其中8个字节记录一个扇区组地址,x为扇区组大小,以KB为单位。
2.2异地数据更新
Ripple-RAID 5内部执行异地数据更新,具体执行过程如下。
(1)向物理地址A所在的基本条带i写数据时,数据并不直接写入该条带,而是写入地址A的影子地址A'(位于影子条带,与地址A具有相同的条带内地址偏移量);
(2)如果影子条带没写满,转到(1);
(3)否则,用影子条带替换基本条带i,即把影子条带作为基本条带i参与编址,实现影子地址到物理地址的转换,本次循环结束;
(4)被替换的原基本条带i,此时没有参与编址,在下一循环中作为影子条带。
地址映射后Ripple-RAID 5执行顺序写,依次向每个基本条带写数据,不会同时向两个基本条带写数据,也不会在一个基本条带没有写满的情况下,向另一个基本条带写数据。
2.3渐进式生成校验
影子条带的校验数据是根据本次循环中已写数据生成的,称为局部校验数据(不同于旧校验)。写操作时,根据写数据、已有局部校验数据计算新的局部校验数据,不需要读取旧数据。随着写数据的增加,局部校验数据的校验范围逐渐扩大,直至覆盖整个影子条带。新数据的写入、局部校验数据的校验范围,如水中涟漪一样向前推进,因此该硬盘阵列称为Ripple-RAID 5。
Ⅰ.相关流水方式
渐进生成校验数据时,不需读取旧数据,仅需读取局部校验数据。可以增加一个辅助存储设备,与影子条带中局部校验数据所在磁盘,以流水方式生成新校验,可有效消除读局部校验数据对写性能的影响。影子条带中校验数据所在磁盘,与辅助存储设备一起进行流水,称该流水方式为相关流水。
假设每个基本条带被分成3个组,分别记作组0、组1和组2,辅助存储设备简称辅存,容量与校验块相同,基于相关流水渐进生成校验的写过程如下:
(1)向任一基本条带(称原条带)的组0写数据时,数据实际写入影子条带的组0,并生成组0的校验,写入影子条带的校验块;
(2)组0写满后,向原条带的组1写数据时,数据实际写入影子条带的组1,并根据写数据、局部校验(组0的校验,在影子条带的校验块),生成新校验(组0、组1的校验)写入辅存;
(3)组1写满后,向原条带的组2写数据时,数据实际写入影子条带的组2,并根据写数据、局部校验(组0、组1的校验,在辅存),生成新校验(组0、组1、组2的校验)写入影子条带的校验块;
(4)影子条带写满后,令其替换原条带参与编址,被替换的原条带不参与编址,作为下一循环中的影子条带。
为保证最后生成的校验数据写入影子条带的校验块,需按如下规则流水:若影子条带的组数为奇数,首先向校验块写校验数据;否则首先向辅存写校验数据。当辅存采用低功耗的SSD时,其能耗增加可忽略。
Ⅱ.基于SSD的非流水方式
优选的,采用低功耗的SSD作为辅存时,可不采用流水方式生成校验数据:从辅存读局部校验数据,新校验数据也写入辅存,直至写影子条带的最后一组时,从辅存读局部校验数据,并将新校验数据写入影子条带的校验块,称该方式为基于SSD的非流水方式。该方式中校验块所在磁盘也可待机节能,节能效果将进一步提升。生成校验时需要同时读、写辅存,因此辅存可能成为性能瓶颈。该方式中的辅存也可采用磁盘。
Ⅲ.无关流水方式
优选的,为了使影子条带中校验块所在硬盘大部分时间也可待机节能,进一步提高节能效率,同时又不影响性能,可采用如下流水方式:设置两个辅助存储设备,分别记作辅存1和辅存2,容量均与校验块相同,轮流从其中之一读局部校验数据,向另一个写新校验数据,直至生成影子条带的最终校验数据,再将其写入影子条带的校验块。
影子条带中校验块所在磁盘不参与流水,称该流水方式为无关流水。当辅存1、辅存2采用低功耗的SSD时,可忽略其能耗增加。无关流水与相关流水相似,仅有以下几点不同:
(1)向组0写数据时,生成的局部校验数据写入辅存1;
(2)向组1写数据时,根据写数据、已有校验数据(在辅存1),生成新校验数据写入辅存2;
(3)向组2写数据时,根据写数据、已有校验数据(在辅存2),生成新校验数据,并把最终校验数据写入影子条带的校验块。
3数据容错
由数据布局得,Ripple-RAID 5包含N个基本条带和1个影子条带。按当前状态(是否正在被更新)把基本条带进一步分为活跃条带和睡眠条带,影子条带的数据组织方式与活跃条带相同。由于地址映射后执行顺序写,在确定时间内只有1个基本条带正在被更新,即只有1个活跃条带,其余基本条带为睡眠条带。
对于故障盘中的每个存储子块,根据其不同位置,按如下方法进行恢复。
情况1:故障盘中的存储子块位于睡眠条带,由Ripple-RAID 5的写操作方法得,当根据式(1)建立校验关系后,该睡眠条带没有进行任何修改,已建立的校验关系完整有效。对同一子条带内的其它盘上的存储子块异或运算,可恢复该存储子块。
情况2:故障盘中的存储子块位于活跃条带,由写操作方法得,当根据式(1)建立校验关系后,活跃条带也没有被真正修改过(对应的新数据实际写入了影子条带的对应位置),已建立的校验关系完整有效。对同一子条带内的其它盘上的存储子块异或运算,也可恢复该存储子块。
情况3:故障盘中的存储子块位于影子条带,对于影子条带,以最后一次局部并行写为分界线,分界线之前为已写区,其后为待写区,设分界线位于组p中偏移量为m的数据子块Strip m之后,0≤p<P,0≤m<M。特别强调:当p≥1时,影子条带校验块均为已写区。
Ⅰ.故障盘中的存储子块位于影子条带的已写区
影子条带的已写区数据,在影子条带中具有完整、有效的校验关系,设存储子块位于影子条带中的子条带Stripe k,当0≤k≤m时,校验关系见式(2):
当m<k<M时(仅当p≥1时存在),校验关系见式(3):
此时,可根据所在子条带的位置,利用式(2)或式(3)恢复故障盘中的存储子块。
Ⅱ.故障盘中的存储子块位于影子条带的待写区
由Ripple-RAID 5的写操作方法得,该部分数据不是有效数据,并且没有参与所在子条带的异或运算,因此数据恢复时不需要考虑。
综上,Ripple-RAID 5具有单盘容错能力,其中任意一块硬盘出现故障丢失数据时,可按上述方法恢复该盘数据。分界线(最后一次局部并行写位置)、影子条带位置,对数据恢复至关重要,需要记录到元数据中,至少同时存储在2块盘上,以确保数据恢复正确执行。
4读操作
对Ripple-RAID 5进行读操作时,需要根据上层应用程序发来的虚拟地址,查找地址映射表,获得该虚拟地址对应的物理地址A,①如果地址A位于活跃条带的已写区(与影子条带已写区具有相同的条带内起始、终止偏移地址),则从地址A的影子地址A'读取数据;②否则,直接从地址A读取数据。
5节能调度
Ripple-RAID 5需要对硬盘进行节能调度,调度空闲硬盘待机节能,当任务到来时唤醒待机硬盘工作。
有益效果
本发明提出的硬盘阵列Ripple-RAID 5的构建方法,与已有技术比较,具有以下优点:
(1)保持节能性的同时,具有突出的写性能。采用新的局部并行数据布局,通过综合运用异地数据更新、基于流水技术渐进生成校验等策略,既保持了局部并行的节能性,又解决了局部并行中严重影响写性能的小写问题,极大提高了写性能。
(2)可充分发挥磁盘性能优势。通过地址映射把非顺序写转换为顺序写,可充分发挥磁盘善于顺序读写的性能优势,进一步提高写性能。在连续数据存储中,由于读操作以回放为主,即重复先前某段时间内的写操作,因此通常可获得与写性能接近的读性能。
(3)具有突出的节能效率。单位磁盘的写性能极大提高后,当存储应用需要额定的写性能时,Ripple-RAID 5运行更少的磁盘就能够满足性能需求,会节省更多能量;反之,在运行磁盘数相同的条件下,Ripple-RAID 5具有更高的性能裕量。
附图说明
图1为本发明的具体实施方式中的硬盘阵列Ripple-RAID 5的总体数据布局;
图2为本发明的具体实施方式中的基本条带0的子块划分与校验关系示意图;
图3为本发明的具体实施方式中的硬盘阵列Ripple-RAID 5的地址分配示意图;
图4为本发明的具体实施方式中的基于相关流水的写操作示意图;
图5为本发明的具体实施方式中的基于SSD的非流水写操作示意图;
图6为本发明的具体实施方式中的基于无关流水的写操作示意图;
图7为本发明的具体实施方式中的数据容错示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
本实施例中,硬盘阵列Ripple-RAID 5由5块磁盘组成,每块磁盘容量为3TB,Ripple-RAID 5的实现主要包括数据布局、写操作方法、数据容错3部分。
1数据布局
如图1所示,对5块磁盘进行条带划分,分成6个条带,任取其一作为影子条带(这里取第1个),其余为基本条带(编号0~4)。每个基本条带上有5个存储块,每个存储块大小为500GB,其中1个存储块为校验块,其余4个存储块为数据块。基本条带0的校验块位于磁盘4、基本条带1的校验块位于磁盘3、……、基本条带4的校验块位于磁盘0。(注:1TB=103GB=106MB=109KB,1KB=1024B)
每个数据块、校验块分成M=1,2500,0000个相等的子块,子块大小为4KB(包含8个地址连续的扇区,扇区大小为512字节),分别称为数据子块、校验子块。每个基本条带中偏移量相同的子块组成M=1,2500,0000个子条带。为提供合适性能,每个子条带的数据子块被分成2组,每组包含2个数据子块,子条带内仅组内的2个数据子块并行编址,不是全部数据子块并行编址。
图2为基本条带0的子块划分情况,子条带1的校验子块由该子条带的4个数据子块异或运算生成,其数据子块被分成2组,组内的2个数据子块可并行访问。
采用适度贪婪的地址分配策略,从基本条带0内、组0内的首个数据子块开始分配地址,具体情况见图3,箭头连接线两端的数据子块的地址相邻,且地址由小到大,影子条带不参与编址,仅供Ripple-RAID 5内部使用,对上层应用是透明的。
2写操作方法
地址映射时,采用扇区组映射方式,总存储容量为10TB(每盘3TB×5块盘 ×2/3,去除的1/3为校验块和影子条带存储块,见图3),扇区组大小为64KB,8个字节记录1个扇区组地址,则地址映射信息为10TB×8B/(64×1024B)≈1.22GB,运行时基本可以完全调入内存。
本实施例中,每个基本条带分成了2个组,每组包含2个存储块。为了充分说明写操作过程,这里以3个组为例进行说明,分别记作组0、组1和组2。
Ⅰ.相关流水方式
基于相关流水的写操作,需要1个辅助存储设备,简记为辅存,容量与校验块相同,具体过程如下:
(1)向任一基本条带(称原条带)的组0写数据时,数据实际写入影子条带的组0,并异或运算生成组0的校验数据,写入影子条带的校验块,见图4(a);
(2)组0写满后,向原条带的组1写数据时,数据实际写入影子条带的组1,并根据写数据、局部校验(组0的校验,在影子条带的校验块),生成新校验(组0、组1的校验)写入辅存,见图4(b);
(3)组1写满后,向原条带的组2写数据时,数据实际写入影子条带的组2,并根据写数据、局部校验(组0、组1的校验,在辅存),生成新校验(组0、组1、组2的校验)写入影子条带的校验块,见图4(c);
(4)影子条带写满后,令其替换原条带参与编址,被替换的原条带不参与编址,作为下一循环中的影子条带。
图4中,阴影部分为本次循环中写入影子条带的新数据、以及根据写入新数据生成的局部校验数据,随着写入数据的增加,局部校验数据的校验范围逐渐扩大,最终覆盖整个影子条带。
Ⅱ.基于SSD的非流水方式
优选的,采用低功耗的SSD作为辅存时,可不采用流水方式生成校验数据,具体过程与相关流水相似,仅有以下几点不同:
(1)向组0写数据时,生成的校验数据写入辅存,见图5(a);
(2)向组1写数据时,根据写数据、已有校验数据(在辅存),生成新校验数据写入辅存,见图5(b);
(3)向组2写数据时,根据写数据、已有校验数据(在辅存),生成新校验数据,并把最终校验数据写入影子条带的校验块,见图5(c)。
图5中阴影部分的含义,与图4相同。
Ⅲ.无关流水方式
优选的,基于无关流水的写操作,需要2个辅助存储设备,分别记作辅存1、辅存2,容量均与校验块相同,具体过程与相关流水相似,仅有以下几点不同:
(1)向组0写数据时,生成的局部校验数据写入辅存1,见图6(a);
(2)向组1写数据时,根据写数据、已有校验数据(在辅存1),生成新校验数据写入辅存2,见图6(b);
(3)向组2写数据时,根据写数据、已有校验数据(在辅存2),生成新校验数据,并把最终校验数据写入影子条带的校验块,见图6(c)。
图6中阴影部分的含义,与图4相同。
3数据容错
恢复Ripple-RAID 5中任意一块故障盘上的数据时,首先读取分界线(最后一次局部并行写位置)、影子条带的位置,这2个数据至少同时存储在2块盘上,1块磁盘坏后仍可读出。对于故障盘上的每个存储子块,根据其不同位置,按如下方法进行恢复。
情况1、情况2:故障盘上的存储子块位于基本条带(包括睡眠条带和活跃条带)。此时,对同一子条带内的其它盘上的存储子块异或运算,即可恢复该存储子块。例如,图7中磁盘0出现故障,磁盘0在基本条带中的数据子块8,可通过对子条带8内磁盘1、磁盘2、磁盘3、磁盘4上的子块异或运算进行恢复。
情况3:故障盘上的存储子块位于影子条带,对于影子条带,分界线之前为已写区,其后为待写区,设分界线位于组1(p=1)中数据子块8之后,此时满足p≥1条件,因此影子条带校验块均为已写区。
Ⅰ.故障盘上的存储子块位于影子条带的已写区
可利用影子条带中的校验关系恢复数据,待写区数据子块不参与数据恢复。例如,图7中磁盘2出现故障,磁盘2在影子条带中的数据子块0,可通过对子条带0内磁盘0、磁盘1、磁盘3、磁盘4上的子块异或运算进行恢复。
又如,图7中磁盘1出现故障,磁盘1在影子条带中的数据子块M-1,可通过对子条带M-1内磁盘0、磁盘4上的子块异或运算进行恢复。子条带M-1在磁盘2、磁盘3中的数据子块(×表示)位于待写区,没有参与子条带M-1的校验运算,因此不参与数据恢复。
Ⅱ.故障盘中的存储子块位于影子条带的待写区
该部分数据不是有效数据,并且没有参与所在子条带的校验运算,不需要恢复。
综上,Ripple-RAID 5具有单盘容错能力,其中任意一块磁盘出现故障丢失数据时,可按上述方法恢复该盘数据。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
Claims (5)
1.一种消除局部并行中小写操作的分布校验式磁盘阵列,其特征在于:其结构布局为,
硬盘阵列Ripple-RAID 5包含N块硬盘,N≥3且为正整数;每个硬盘平均分成k×N+1个存储块,k为大于0的整数,偏移量相同的N个存储块组成一个条带,共组成k×N+1个条带,任取其中一个条带作为影子条带,其余为基本条带;
每个基本条带包含1个校验存储块,简称校验块,N-1个数据存储块,简称数据块;基本条带i中的校验块位于硬盘N-1-j;如果j+v<N-1,则第v个数据块位于硬盘v,否则位于硬盘v+1,其中0≤i<(k×N),j=i MOD N;MOD为模运算,0≤v<N-1;
每个数据块、校验块划分为M个大小相等的子块,每个子块包含若干个地址连续的扇区,分别称为数据子块Strip和校验子块PStrip;每个基本条带中偏移量相同的子块组成一个子条带Stripe,这样每个基本条带中包含M个大小相同的子条带;子条带Stripe m的校验子块PStrip m由其N-1个数据子块Strip m异或生成,见式(1);
其中,0≤m<M;
为了提供合适的性能,把基本条带中的N-1个数据块按顺序分成P组,每组包含Q个数据块;P、Q为大于0的整数,且满足P×Q=N-1,Q值根据实际存储带宽需求确定;这样每个子条带中的数据子块也被分成P组,每组包含Q个数据子块,每个子条带中仅组内的Q个数据子块提供并行性,不是全部数据子块提供并行性;
Ripple-RAID 5采用适度贪婪的地址分配策略,从基本条带0内、组0内的首个数据子块开始,按如下规则编址:①同一组内,同一子条带内、编号相邻数据块内的数据子块的地址相邻;②同一基本条带内,编号相邻的两个子条带,前一个在组内的末尾数据子块,与后一个在该组内的起始数据子块的地址相邻;③同一基本条带内,编号相邻的组的地址相邻;④编号相邻的基本条带的地址相邻;基本条带、组、数据块均从0开始编号;
Ripple-RAID 5仅对基本条带进行编址,影子条带不参与编址,仅供Ripple-RAID 5内部使用,对上层应用是透明的。
2.如权利要求1所述的一种消除局部并行中小写操作的分布校验式磁盘阵列,其特征在于:其写操作方法具体为,
Ripple-RAID 5的写操作,综合运用了地址映射、异地数据更新、渐进式生成校验方法,生成校验数据时不需读取旧数据;采用流水技术读取已有校验、写入新校验时,可有效解决局部并行带来的小写问题;此外,地址映射把非顺序写转换为顺序写,可提升Ripple-RAID5的写性能;
步骤2.1地址映射
上层应用程序发来的读写请求地址,称为虚拟地址;数据在Ripple-RAID 5存储空间内的存储地址,称为物理地址;地址映射实现虚拟地址到物理地址的转换:把非连续的虚拟地址映射为连续的物理地址,并记录映射关系到地址映射表;地址映射后,写操作在物理地址空间内完全连续,Ripple-RAID 5完全执行顺序写;
Ripple-RAID 5非常适合进行地址映射,原因如下:①连续数据存储应用以写操作为主,顺序写可以显著提高写性能和整体性能;②读操作以数据回放为主,即重复以前某时间段内的写操作,可获得与写性能接近的读性能;③以写新数据为主,可以忽略改写操作引发的垃圾回收,或在负载较轻时进行垃圾回收;
以若干个连续扇区为单位进行地址映射,称为扇区组映射方式;该方式多扇区映射时效率高,但改写组中部分数据时,需要读取未修改数据,与改写数据一起重新映射;Ripple-RAID 5适合采用该映射方式;地址映射信息需要作为元数据保存,大小为存储容量的8/(1024×x),其中8个字节记录一个扇区组地址,x为扇区组大小,以KB为单位;
步骤2.2异地数据更新
Ripple-RAID 5内部执行异地数据更新,具体执行过程如下;
(1)向物理地址A所在的基本条带i写数据时,数据并不直接写入该条带,而是写入地址A的影子地址A',A'位于影子条带,与地址A具有相同的条带内地址偏移量;
(2)如果影子条带没写满,转到(1);
(3)否则,用影子条带替换基本条带i,即把影子条带作为基本条带i参与编址,实现影子地址到物理地址的转换,本次循环结束;
(4)被替换的原基本条带i,此时没有参与编址,在下一循环中作为影子条带;
地址映射后Ripple-RAID 5执行顺序写,依次向每个基本条带写数据,不会同时向两个基本条带写数据,也不会在一个基本条带没有写满的情况下,向另一个基本条带写数据;
步骤2.3渐进式生成校验
影子条带的校验数据是根据本次循环中已写数据生成的,称为局部校验数据,不同于旧校验;写操作时,根据写数据、已有局部校验数据计算新的局部校验数据,不需要读取旧数据;随着写数据的增加,局部校验数据的校验范围逐渐扩大,直至覆盖整个影子条带;新数据的写入、局部校验数据的校验范围,如水中涟漪一样向前推进,因此该硬盘阵列称为Ripple-RAID 5;
Ⅰ相关流水方式
渐进生成校验数据时,不需读取旧数据,仅需读取局部校验数据;增加一个辅助存储设备,与影子条带中局部校验数据所在磁盘,以流水方式生成新校验,可有效消除读局部校验数据对写性能的影响;影子条带中校验数据所在磁盘,与辅助存储设备一起进行流水,称该流水方式为相关流水;
假设每个基本条带被分成3个组,分别记作组0、组1和组2,辅助存储设备简称辅存,容量与校验块相同,基于相关流水渐进生成校验的写过程如下:
(1)向任一基本条带的组0写数据时,数据实际写入影子条带的组0,并生成组0的校验,写入影子条带的校验块;所述任一基本条带称为原条带;
(2)组0写满后,向原条带的组1写数据时,数据实际写入影子条带的组1,并根据写数据、局部校验,生成新校验写入辅存;此时,局部校验为组0的校验,在影子条带的校验块;新校验为组0、组1的校验;
(3)组1写满后,向原条带的组2写数据时,数据实际写入影子条带的组2,并根据写数据、局部校验,生成新校验写入影子条带的校验块;此时,局部校验为组0、组1的校验,在辅存;新校验为组0、组1、组2的校验;
(4)影子条带写满后,令其替换原条带参与编址,被替换的原条带不参与编址,作为下一循环中的影子条带;
为保证最后生成的校验数据写入影子条带的校验块,需按如下规则流水:若影子条带的组数为奇数,首先向校验块写校验数据;否则首先向辅存写校验数据;当辅存采用低功耗的SSD时,其能耗增加可忽略;
Ⅱ基于SSD的非流水方式
采用低功耗的SSD作为辅存时,可不采用流水方式生成校验数据:从辅存读局部校验数据,新校验数据也写入辅存,直至写影子条带的最后一组时,从辅存读局部校验数据,并将新校验数据写入影子条带的校验块,称该方式为基于SSD的非流水方式;该方式中校验块所在磁盘也可待机节能,节能效果将提升;生成校验时需要同时读、写辅存,因此辅存可能成为性能瓶颈;该方式中的辅存也可采用磁盘;
Ⅲ无关流水方式
为了使影子条带中校验块所在硬盘大部分时间也可待机节能,提高节能效率,同时又不影响性能,可采用如下流水方式:设置两个辅助存储设备,分别记作辅存1和辅存2,容量均与校验块相同,轮流从其中之一读局部校验数据,向另一个写新校验数据,直至生成影子条带的最终校验数据,再将其写入影子条带的校验块;
影子条带中校验块所在磁盘不参与流水,称该流水方式为无关流水;当辅存1、辅存2采用低功耗的SSD时,可忽略其能耗增加;无关流水与相关流水相似,仅有以下几点不同:
(1)向组0写数据时,生成的局部校验数据写入辅存1;
(2)向组1写数据时,根据写数据、已有校验数据,生成新校验数据写入辅存2;此时,已有校验数据位于辅存1;
(3)向组2写数据时,根据写数据、已有校验数据,生成新校验数据,并把最终校验数据写入影子条带的校验块;此时,已有校验数据位于辅存2。
3.如权利要求1或2所述的一种消除局部并行中小写操作的分布校验式磁盘阵列,其特征在于:其数据容错方法具体为,
由数据布局得,Ripple-RAID 5包含N个基本条带和1个影子条带;按当前状态是否正在被更新,把基本条带分为活跃条带和睡眠条带,影子条带的数据组织方式与活跃条带相同;由于地址映射后执行顺序写,在确定时间内只有1个基本条带正在被更新,即只有1个活跃条带,其余基本条带为睡眠条带;
对于故障盘中的每个存储子块,根据其不同位置,按如下方法进行恢复;
情况1:故障盘中的存储子块位于睡眠条带,由Ripple-RAID 5的写操作方法得,当根据式(1)建立校验关系后,该睡眠条带没有进行任何修改,已建立的校验关系完整有效;对同一子条带内的其它盘上的存储子块异或运算,可恢复该存储子块;
情况2:故障盘中的存储子块位于活跃条带,由写操作方法得,当根据式(1)建立校验关系后,活跃条带也没有被真正修改过,对应的新数据实际写入了影子条带的对应位置,已建立的校验关系完整有效;对同一子条带内的其它盘上的存储子块异或运算,也可恢复该存储子块;
情况3:故障盘中的存储子块位于影子条带,对于影子条带,以最后一次局部并行写为分界线,分界线之前为已写区,其后为待写区,设分界线位于组p中偏移量为m的数据子块Strip m之后,0≤p<P,0≤m<M;当p≥1时,影子条带校验块均为已写区;
Ⅰ故障盘中的存储子块位于影子条带的已写区
影子条带的已写区数据,在影子条带中具有完整、有效的校验关系,设存储子块位于影子条带中的子条带Stripe k,当0≤k≤m时,校验关系见式(2):
当m<k<M且p≥1时,校验关系见式(3):
此时,可根据所在子条带的位置,利用式(2)或式(3)恢复故障盘中的存储子块;
Ⅱ故障盘中的存储子块位于影子条带的待写区
由Ripple-RAID 5的写操作方法得,影子条带的待写区数据不是有效数据,并且没有参与所在子条带的异或运算,因此数据恢复时不需要考虑;
综上,Ripple-RAID 5具有单盘容错能力,其中任意一块硬盘出现故障丢失数据时,可按上述方法恢复故障盘数据;分界线,即最后一次局部并行写位置以及影子条带位置,对数据恢复至关重要,需要记录到元数据中,至少同时存储在2块盘上,以确保数据恢复正确执行。
4.如权利要求1或2所述的一种消除局部并行中小写操作的分布校验式磁盘阵列,其特征在于:其读操作方法具体为,
对Ripple-RAID 5进行读操作时,需要根据上层应用程序发来的虚拟地址,查找地址映射表,获得该虚拟地址对应的物理地址A,①如果地址A位于活跃条带的已写区,即如果地址A与影子条带已写区具有相同的条带内起始、终止偏移地址,则从地址A的影子地址A'读取数据;②否则,直接从地址A读取数据。
5.如权利要求1或2所述的一种消除局部并行中小写操作的分布校验式磁盘阵列,其特征在于:其节能调度方法具体为,
Ripple-RAID 5需要对硬盘进行节能调度,调度空闲硬盘待机节能,当任务到来时唤醒待机硬盘工作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510260732 | 2015-05-20 | ||
CN2015102607329 | 2015-05-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105930097A CN105930097A (zh) | 2016-09-07 |
CN105930097B true CN105930097B (zh) | 2019-01-29 |
Family
ID=56839034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610230187.3A Active CN105930097B (zh) | 2015-05-20 | 2016-04-14 | 一种消除局部并行中小写操作的分布校验式磁盘阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105930097B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108008909B (zh) * | 2016-10-31 | 2019-11-22 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法、装置及系统 |
CN106528003A (zh) * | 2016-12-09 | 2017-03-22 | 曙光信息产业(北京)有限公司 | 一种磁盘阵列的重建方法和装置 |
CN111095217B (zh) * | 2017-11-13 | 2024-02-06 | 清华大学 | 资源全局共享的基于raid机制的数据存储系统 |
CN109634523A (zh) * | 2018-12-10 | 2019-04-16 | 深圳市网心科技有限公司 | 一种磁盘管理方法、系统及电子设备和存储介质 |
CN110427156B (zh) * | 2019-07-16 | 2020-09-08 | 华中科技大学 | 一种基于分片的mbr的并行读方法 |
TWI715162B (zh) * | 2019-08-26 | 2021-01-01 | 點序科技股份有限公司 | 記憶體驗證方法及記憶體驗證系統 |
CN112732167B (zh) * | 2019-10-28 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428691B2 (en) * | 2003-11-12 | 2008-09-23 | Norman Ken Ouchi | Data recovery from multiple failed data blocks and storage units |
KR100827677B1 (ko) * | 2006-06-20 | 2008-05-07 | 한국과학기술원 | 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법 |
CN101976175B (zh) * | 2010-08-19 | 2011-12-14 | 北京同有飞骥科技股份有限公司 | 一种水平型分组并行集中校验的磁盘阵列的构建方法 |
CN101976178B (zh) * | 2010-08-19 | 2012-09-05 | 北京同有飞骥科技股份有限公司 | 一种垂直排布集中校验的节能型磁盘阵列的构建方法 |
-
2016
- 2016-04-14 CN CN201610230187.3A patent/CN105930097B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105930097A (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105930097B (zh) | 一种消除局部并行中小写操作的分布校验式磁盘阵列 | |
CN101676882B (zh) | 存储器装置的内嵌映射信息 | |
CN104794070B (zh) | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 | |
CN104102585B (zh) | 映射信息记录方法、存储器控制器与存储器储存装置 | |
CN103049222B (zh) | 一种raid5的写io优化处理方法 | |
CN101329656B (zh) | 一种Nand-Flash存储系统的管理方法 | |
US7574560B2 (en) | Methods, systems, and computer program products for dynamic mapping of logical units in a redundant array of inexpensive disks (RAID) environment | |
CN101777016B (zh) | 一种连续数据保护系统的快照存储和数据恢复方法 | |
CN111158587B (zh) | 基于存储池虚拟化管理的分布式存储系统及数据读写方法 | |
CN104731717B (zh) | 存储器装置及存储器管理方法 | |
CN102779096B (zh) | 一种基于页块面三维的闪存地址映射方法 | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
CN101587425B (zh) | 一种增加独立磁盘冗余阵列冗余性的方法及装置 | |
CN105930099B (zh) | 一种消除局部并行中小写操作的双盘容错盘阵列 | |
TWI494761B (zh) | 分割實體區塊之方法及記憶體系統 | |
CN106775476A (zh) | 混合内存系统及其管理方法 | |
CN107391391A (zh) | 在固态硬盘的ftl实现数据拷贝的方法、系统及固态硬盘 | |
CN104765575A (zh) | 信息存储处理方法 | |
CN105718217A (zh) | 一种精简配置存储池数据一致性维护的方法及装置 | |
CN101777017A (zh) | 一种连续数据保护系统的快速恢复方法 | |
CN104765574A (zh) | 数据云端存储方法 | |
CN112596673A (zh) | 具有双重raid数据保护的多活多控存储系统 | |
CN104375784A (zh) | 一种降低虚拟磁盘管理复杂度的方法和装置 | |
CN103544124B (zh) | Nand Flash存储器的访问方法 | |
CN105930098B (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 |