CN102184080B - 一种基于固化条带的raid系统扩容后的数据读写方法 - Google Patents
一种基于固化条带的raid系统扩容后的数据读写方法 Download PDFInfo
- Publication number
- CN102184080B CN102184080B CN201110111831A CN201110111831A CN102184080B CN 102184080 B CN102184080 B CN 102184080B CN 201110111831 A CN201110111831 A CN 201110111831A CN 201110111831 A CN201110111831 A CN 201110111831A CN 102184080 B CN102184080 B CN 102184080B
- Authority
- CN
- China
- Prior art keywords
- band
- data
- data cell
- numbering
- disk
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明提供了一种基于固化条带的RAID系统扩容后的数据写入方法,该方法首先利用每个磁盘中偏移量最小的空闲数据单元构建新增条带,并对新增条带中的每个数据单元进行局部编号,其次把数据写入新增条带。本发明还提供了数据读取方法,首先确定数据所在数据单元的全局编号;其次由该全局编号确定该数据单元的局部编号S-U;最后通过该局部编号S-U,找到该数据单元读取数据。本发明采用固化条带的方法,使得在磁盘增加时,条带的大小不变,扩容后,每次对RAID的访问不需要访问所有的磁盘,只要针对原始RAID的数据单元进行访问,不受新增磁盘的影响,使得磁盘IO操作数大幅减少,适用于多种RAID级别,具有良好的适应性。
Description
技术领域
本发明属于数据存储技术领域,特别是涉及一种基于固化条带的RAID系统扩容后的数据读写方法。
背景技术
存储系统革命性变化表现为其容量的急剧膨胀,根据权威机构统计数据表明:2006年全球每年制造、复制出的数字信息量攻击1.61*1012GB,而人类开始记录历史以来,到2006年为止,全部的书本文字加起来大约50PB,显然2006年信息产生量大约是2006年为止图书信息总量的300万倍。
随着信息量的急剧增加,现今主要用以存储信息的设备——磁盘的容量也相应不满足需求。RAID的发明使得用户可以以比较低的成本保存大量的数据,但是RAID一旦配置好,存储容量也就确定了,当数据量达到或者接近RAID的存储容量时,RAID扩容也就成为了比较现实的问题。
如果原始磁盘空间不够,那么用户希望加一个磁盘上去,这个就是扩容。但是整个数据从原始阵列分布到新的阵列,必定会导致大量的数据迁移行为,这种行为往往是需要大量时间的。比如单盘512GB,10个硬盘组成的5TB的磁盘,假如数据已经存放了90%,也就是4.5TB,现在增加了两个512GB的硬盘后,理论上最少需要移动约768GB的数据,利用Ultra 320标准的SCSI传输速率320MB/s,两个盘并行存放数据,那么需要40分钟,这个时间只是算数据传输时间,并没有加上本磁盘上数据移动时间,本磁盘上移动的数据基本上达到了4.5TB,考虑由于机械磁头寻道等因素,迁移这么大的数据需要几天时间。
以往的扩容方法都是采用离线或者在线扩容方式,离线扩容方式使得RAID在扩容期间不能响应外部的存储请求,这种方式一般在要求不是很严格的解决方案中使用;而在线扩容方式一边响应外部的存储请求,一边进行扩容,这种扩容方式是普遍采用的一种扩容方式。目前在线扩容方式基本上移动了原有RAID中所有的数据,这种方式一般需要几个小时甚至几天的时间来把老磁盘上的数据迁移到新磁盘上。要使得扩容后磁盘访问量大致上均衡,那么对原有m个磁盘,扩容n个磁盘,使得总磁盘数增加到m+n的方法理论上迁移数据量最小值为数据总量的n/(m+n)(参见:RogerZimmermann,Beomjoo Seo,“Efficient Disk Replacement and Data MigrationAlgorithms for Large Disk Subsystems”,the Proceedings of the 2004International Conference on Parallel and Distributed Processing Techniques andApplications(PDPTA2004),June 21-24,2004,Las Vegas,Nevada)。
现有的RAID中的条带都是一致的,在进行扩容后,条带的大小也随着磁盘的增加而相应增加,对数据进行读写时,需要访问扩容后的所有磁盘。
发明内容
本发明的目的在于提供一种基于固化条带的RAID系统扩容后的数据读写方法,该数据读写方法对RAID系统的访问不需要访问扩容后的所有磁盘,只要针对原始RAID系统的数据单元进行访问,不受新增磁盘的影响。
本发明提供了一种基于固化条带的RAID系统扩容后的数据写入方法,包括以下步骤:
(1)利用每个磁盘中偏移量最小的空闲数据单元构建新增条带,并对新增条带中的每个数据单元进行局部编号;
(2)把数据写入新增条带。
进一步的,新增条带中每个数据单元的局部编号为该数据单元所在的条带编号与该数据单元所在的磁盘号的组合,其中该数据单元所在的条带编号为当前RAID系统所有的条带个数减1。
本发明还提供了一种基于固化条带的RAID系统扩容后的数据读取方法,包括以下步骤:
(1)确定待读取数据所在数据单元的全局编号;
(2)由该全局编号确定该数据单元的局部编号S-U;
(3)通过该局部编号S-U,找到该数据单元读取数据。
进一步的,采用如下步骤由数据单元的全局编号确定该数据单元的局部编号:
(a)判断数据单元的全局编号是否小于所有固化条带的数据单元总数,如果是,进入步骤(b);如果否,转入步骤(c);其中固化条带是指RAID系统扩容前的条带;
(b)用全局编号除以固化条带长度,商为S,余数为U,转入步骤(d);其中固化条带长度是指一个固化条带中包含的数据单元个数;
(c)用(全局编号-所有固化条带的数据单元总数)除以新增条带长度,所得的结果中商为S,余数为U,进入步骤(d);其中新增条带长度是指一个新增条带中包含的数据单元个数;
(d)得到数据单元的局部编号S-U。
本发明所述的数据读写方法相对于传统的数据读写方法来说具有以下优势:
1、本发明采用固化条带的方法,使得在磁盘增加时,条带的大小不变,扩容后,每次对RAID的访问不需要访问所有的磁盘,只要针对原始RAID的数据单元进行访问,不受新增磁盘的影响,使得磁盘IO操作数大幅减少。
2、本发明所述的数据读写方法适用于多种RAID级别,可以应用于大多数场合,具有良好的适应性。
附图说明
图1条带和数据单元的概念;
图2固化条带扩容方法中数据迁移的过程;
图3建立迁移之前条带记录表;
图4建立新数据写入后的条带记录表;
图5新条带写入过程;
图6数据读取示意图。
具体实施方式
本发明首先提出一种基于固化条带的RAID扩容方法,其核心就是通过不修改旧数据的条带分条,特别对于有校验块的RAID来说,可以实现不修改校验块进行扩容。
RAID中存储数据的基本结构是条带(stripe),条带化存储能够拆分数据成大小相等的数据单元(stripe unit),并将不同的数据单元同时写入不同的磁盘,而且一个条带在每个磁盘中只能有一个数据单元。
为了便于对本发明所述的扩容方法进行说明,下面对条带和数据单元进行编号,图1所示为由4个磁盘组成的RAID,最上面的一个条带,设置其条带编号为0(在计算机专业中,对存储介质的编址都是从0开始的),对于其下面的条带依次设置编号为1、2、3等,同样设置磁盘编号依次为0、1、2、3等。数据单元的局部编号即其在条带内的编号,设置其为条带编号加上磁盘编号,即0-1、1-0、2-0等。图1中0-0、0-1、0-2、0-3这四个数据单元分别放在编号为0、1、2和3的四个硬盘上,这四个数据单元构成条带0。每个数据单元又有一全局编号,该编号由要访问的LBA地址除以数据单元的大小得到。本文中在不引起误解的情况下,将数据单元的局部编号简称为数据单元编号。
校验数据单元是指在一个条带中,某个数据单元的值是由本条带中其余数据单元的值通过异或运算得到的,设置校验数据单元的目的是为了在一个磁盘损坏后,能够通过校验数据单元与其它数据单元恢复损坏的数据。
现有RAID中的每个条带中数据单元的个数是磁盘个数,磁盘增加,则条带中数据单元个数就增加。固化条带的方法是相对于现有RAID而言,该方法中每个条带的数据单元个数是确定的,不随着磁盘的个数变化而变化。
下面介绍基于固化条带的RAID扩容方法,如图2所示,开始的磁盘阵列中有4个磁盘,分别编号为0到3,新增加了一个磁盘,编号为磁盘4。为了负载均衡,必须要把数据写入新的磁盘,使得每个磁盘的数据量近似相同,这样每个磁盘的访问量才能近似相同。在本发明中,数据迁移时可以不考虑数据单元的内容到底是数据还是校验值,因此在图中没有具体区分数据单元和校验单元。在本发明中并不需要移动所有数据,每个条带选取一个单元移动到新的磁盘,老磁盘的空白区域就空余出来,可以填充新的数据。迁移过程采用循环方式进行,也就是对于第i个条带,迁移的数据单元在条带内的编号是i对5取模得到的数(i mod 5)。第0个条带,因为0mod 5=0,所以需要迁移的数据单元就在第0个硬盘上,编号为0-0。又比如第3个条带,3mod 5=3,因此需要迁移的数据就是编号为3-3的单元。在条带4中,由于4mod5=4,条带4没有4-4这个数据单元,因此不移动任何数据。在图2中,采用的是4个原始磁盘,所以要迁移的块是模5操作,如果原始盘是m个,那么就是模m+1操作。
根据上面的分析,需要迁移的数据单元的编号S-U由两部分构成:条带编号S和数据单元在条带内的编号U,U=S mod(m+1)。
本发明所述的方法可以扩容多个硬盘,在此仅以扩容一个磁盘为例进行说明,对于图2所示的原始磁盘为四个的情况,理论上的迁移数据最小比值为1/(4+1)=0.2,而实际是在20个数据单元上迁移了4个数据单元,实际迁移数据比值为4/20=0.2,达到了理论上的最小值。
本发明采用条带记录表来实现固化条带的方法,保证原始的条带不变,新增的数据形成新的条带。条带记录表分为两列:第一列记录条带的大小,条带的大小就是指该条带包含的数据单元的个数;第二列记录条带的个数。条带记录表在RAID创建的时候创建,并添加一条记录,即记录RAID的初始条带大小和条带个数。条带记录表在扩容过程中不改变,每一次扩容后且有新数据写入时,条带记录表增加一行,即记录扩容后的RAID的条带大小和总条带个数。如图3所示,在扩容前条带大小为4,个数为5个,因此条带记录表中第一个项写入数据单元个数4,第二项写入数据单元个数为4的所有条带数量5。下面进行一次扩容,增加一个磁盘,如图4所示,根据上面说的方法进行数据单元的迁移,迁移充之后在老磁盘的空闲位置放置了新的条带,新条带的数据单元大小是5,那么对于条带记录表要增加一行,新行的第一项为新条带中数据单元的个数,也就是5,第二项为本RAID中所有条带数目,即为6。
在数据迁移完成,RAID系统扩容之后,新的数据要写入扩容之后的RAID,那么只能往迁移之后的空闲区域填充。对于原始磁盘为m个,新增磁盘为n个的情况,扩容后新条带共有m+n个数据单元,这些数据单元由每个磁盘的偏移量最小位置的空闲区域组成,即共m+n个空闲区域。偏移量表示该条带与磁盘起始条带之间的条带数量。新的数据使用新的条带,对新增条带中数据单元的进行局部编号,首先确定该新增条带在RAID系统中的编号,其次确定该数据单元所在的磁盘号,两者组合即为该数据单元的局部编号。如图5所示,新增条带5有5个数据单元(局部编号分别为5-0、5-1、5-2、5-3、5-4),每个新数据单元的大小和原始条带的数据单元大小一致。
在数据迁移完成,RAID系统扩容之后,读取数据的方法如图6所示,数据读取实际上是通过文件系统给出的LBA地址,计算出数据单元编号S-U,找出它在哪个磁盘,并且找出它在磁盘中偏移量。磁盘中偏移量指的是数据单元距离最上方,也就是磁盘中起始位置数据单元的相对位置,比如图6中4-0这个数据单元处于磁盘0中,因为距离磁盘0中起始数据单元0-0有4个数据单元,所以4-0的偏移量是4。文件系统给出的LBA地址是一个线性地址,得到数据单元编号的方法如下:
1)查询条带记录表,计算固定条带的数据单元总个数和新增条带的数据单元总个数,如图6中,有4个数据单元的条带共10个,每个条带4个数据单元,因此总数是40个;有5个数据单元的条带共12-10=2个,因此数据单元总个数是10个。对于RAID4、RAID5等有校验数据单元的RAID,每个条带数据单元个数要减1,在此不详细说明。
2)得到LBA地址对应的全局数据单元编号A,可以用LBA地址除以数据单元大小得到。
3)比较A与(1)中得到的数量,得到LBA给出的地址对应哪个条带。具体比较方法为:首先比较A与四个条带数据单元总数40,如果小于40,则LBA给出的地址是属于条带数据单元为4的条带内;如果大于40,小于四个条带数据单元总数与五个条带数据单元总数之和,即50,则说明LBA给出的地址是属于条带数据单元为5的条带内。
4)如果LBA给出的地址属于四个条带数据单元中的条带,那么把A除以4,商就是条带号S,余数就是条带内编号U;如果LBA给出的地址属于五个条带数据单元的条带,则用(A-40)除以5,商就是条带号S,余数就是条带内编号U。
数据单元的读取分为扩容之前的条带读取与扩容之后的条带读取两个部分。扩容之前条带数量是条带记录表中第一行第二项所给出的值,扩容之后的条带数量是由条带记录表中第二行第二项的值减去第一行第二项得到的。为了方便说明,条带记录表中第一行第一项记为T00,第一行第二项记为T01,第二行第一项记为T10,第二行第二项记为T11。根据文件系统给出的LBA地址计算出数据单元编号S-U,首先应该比较S与条带记录表中第一行第二项T01。因为所有条带在存入磁盘的时候是从0开始连续编号的,中间没有跳跃编号的情况,所以如果S<T01,说明S是扩容之前的条带,在图6中它应该属于条带数据单元个数为4的那些老条带;如果S≥T01,说明S是扩容之后的条带,它对应条带记录表中第二行表示的条带数据单元个数为5的那些新条带。因为条带数据单元的分布是有规律的,因此根据条带编号和数据单元编号,可以找到该数据单元所在磁盘及磁盘内的偏移量。
磁盘号的确定分三种情况,如果是新条带,则S-U中U的值就是磁盘号,如果是老条带中没有迁移过的数据单元,那么U的值也是磁盘号,如果是老条带中经过迁移了的数据,那么这些数据一定满足前面提到的迁移公式,S mod(m+1)=U,这些数据都放在新磁盘中,在图6中就是磁盘4中。
磁盘内偏移量的确定分为两种情况。对于新条带,数据单元是向右下方倾斜放置的,所以磁盘内偏移量可以通过公式(S-T01)×(m+1)+U确定,如图6中11-2这个数据单元,根据公式得到的磁盘内偏移量为(11-10)×(4+1)+2=7,而10-0这个数据单元磁盘内偏移量为(10-10)×(4+1)+0=0。对于老条带,磁盘内偏移量就是条带编号S。
由上面的分析得到读取数据所在位置的公式如下:
公式中D表示磁盘号,offset表示数据单元在磁盘内的偏移量。
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式实施本发明,比如本发明中提到的数据迁移方式,为了达到多个磁盘能够负载均衡的目的,实际上会有多种数据迁移方式。因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
Claims (3)
1.一种基于固化条带的RAID系统扩容后的数据写入方法,包括以下步骤:
(1)进行数据迁移,迁移过程采用循环方式进行,也就是对于第i个条带,迁移的数据单元在条带内的编号是i对5取模得到的数(i mod 5);
(2)利用每个磁盘中偏移量最小的空闲数据单元构建新增条带,并对新增条带中的每个数据单元进行局部编号;
(3)把数据写入新增条带。
2.根据权利要求1所述的数据写入方法,其特征在于,新增条带中每个数据单元的局部编号为该数据单元所在的条带编号与该数据单元所在的磁盘号的组合,其中该数据单元所在的条带编号为当前RAID系统所有的条带个数减1。
3.一种基于固化条带的RAID系统扩容后的数据读取方法,包括以下步骤:
(1)确定待读取数据所在数据单元的全局编号;
(2)由该全局编号确定该数据单元的局部编号S-U;
(3)通过该局部编号S-U,找到该数据单元读取数据;
步骤(2)中采用如下步骤由数据单元的全局编号确定该数据单元的局部编号:
(a)判断数据单元的全局编号是否小于所有固化条带的数据单元总数,如果是,进入步骤(b);如果否,转入步骤(c);其中固化条带是指RAID系统扩容前的条带;
(b)用全局编号除以固化条带长度,商为S,余数为U,转入步骤(d);其中固化条带长度是指一个固化条带中包含的数据单元个数;
(c)用(全局编号-所有固化条带的数据单元总数)除以新增条带长度,所得的结果中商为S,余数为U,进入步骤(d);其中新增条带长度是指一个新增条带中包含的数据单元个数;
(d)得到数据单元的局部编号S-U;
并采用如下公式由局部编号S-U找到数据单元所在的磁盘号和偏移量:
其中,D表示磁盘号,offset表示数据单元在磁盘内的偏移量,S表示数据单元所在的条带编号,U表示数据单元在条带内的编号,T01表示RAID系统扩容前的条带数量,m表示RAID系统扩容前的磁盘个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110111831A CN102184080B (zh) | 2011-04-29 | 2011-04-29 | 一种基于固化条带的raid系统扩容后的数据读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110111831A CN102184080B (zh) | 2011-04-29 | 2011-04-29 | 一种基于固化条带的raid系统扩容后的数据读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102184080A CN102184080A (zh) | 2011-09-14 |
CN102184080B true CN102184080B (zh) | 2012-10-10 |
Family
ID=44570261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110111831A Expired - Fee Related CN102184080B (zh) | 2011-04-29 | 2011-04-29 | 一种基于固化条带的raid系统扩容后的数据读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102184080B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268202B (zh) * | 2013-04-23 | 2017-02-08 | 华为技术有限公司 | 一种扩容方法和设备 |
CN103513938B (zh) * | 2013-09-16 | 2016-06-29 | 华为技术有限公司 | 一种独立磁盘冗余阵列raid系统扩容方法及装置 |
CN103858092B (zh) * | 2013-12-19 | 2016-03-09 | 华为技术有限公司 | 一种数据迁移方法和装置 |
CN107562377A (zh) * | 2017-08-25 | 2018-01-09 | 长沙曙通信息科技有限公司 | 一种存储系统硬盘扩容实现方法 |
CN112130768B (zh) * | 2020-09-18 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 磁盘阵列在线扩容方法、装置及计算机可读存储介质 |
CN112783689B (zh) * | 2021-02-08 | 2022-09-02 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN113296702B (zh) * | 2021-05-20 | 2023-01-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种磁盘阵列扩容方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615352A (en) * | 1994-10-05 | 1997-03-25 | Hewlett-Packard Company | Methods for adding storage disks to a hierarchic disk array while maintaining data availability |
CN101546249A (zh) * | 2008-03-26 | 2009-09-30 | 中兴通讯股份有限公司 | 磁盘阵列在线容量扩展方法 |
-
2011
- 2011-04-29 CN CN201110111831A patent/CN102184080B/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
Data migration in raid based on stripe unit heat;Yan Liu et al;《Advances in machine learning and cybernetics》;20060505;614-623 * |
RAID中零拷贝技术研究;刘瑞芳等;《华中科技大学学报》;20051231;第33卷;161-163 * |
Yan Liu et al.Data migration in raid based on stripe unit heat.《Advances in machine learning and cybernetics》.2006,614-623. |
刘瑞芳等.RAID中零拷贝技术研究.《华中科技大学学报》.2005,第33卷 |
Also Published As
Publication number | Publication date |
---|---|
CN102184080A (zh) | 2011-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102184080B (zh) | 一种基于固化条带的raid系统扩容后的数据读写方法 | |
CN100565530C (zh) | 一种快照系统及其使用方法 | |
CN101916173B (zh) | 一种基于raid的数据读写方法及其系统 | |
CN104503706B (zh) | 一种基于磁盘阵列的数据存储及读取方法 | |
CN101625627B (zh) | 写入数据的方法、磁盘冗余阵列的控制器及磁盘冗余阵列 | |
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及系统 | |
CN101587425B (zh) | 一种增加独立磁盘冗余阵列冗余性的方法及装置 | |
CN101527142B (zh) | 一种磁盘冗余阵列中数据的读写方法和设备 | |
CN104182176A (zh) | 一种独立磁盘冗余阵列raid5的快速扩容方法 | |
CN101556802B (zh) | 一种raid阵列转换的方法及装置 | |
CN102682012A (zh) | 一种文件系统内读写数据的方法及装置 | |
CN104035830A (zh) | 一种数据恢复方法和装置 | |
CN108958656B (zh) | 基于raid5固态硬盘阵列的动态条带系统设计方法 | |
CN102591795A (zh) | 确定存储在磁带介质上的数据的访问序列的方法和系统 | |
CN101504623A (zh) | 独立磁盘冗余阵列构建方法及装置 | |
CN111782439B (zh) | 一种基于水平编码的双盘循环校验方法 | |
CN105787109A (zh) | 支付清算系统的对账方法及装置 | |
CN104375784A (zh) | 一种降低虚拟磁盘管理复杂度的方法和装置 | |
CN104714758B (zh) | 一种基于校验raid加入镜像结构的阵列构建方法及读写系统 | |
CN102968361A (zh) | 一种raid数据自修复的方法 | |
CN106095330B (zh) | 一种元数据的存储方法和装置 | |
CN1627425B (zh) | 数据记录/再现装置、方法、程序及记录介质 | |
CN108334277A (zh) | 一种日志写入及同步方法、装置、系统、计算机存储介质 | |
CN106293543A (zh) | 一种基于捎带回收的瓦记录raid写顺序化方法及装置 | |
CN104112011A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121010 |
|
CF01 | Termination of patent right due to non-payment of annual fee |