CN115237342A - 一种由阵列磁盘进行数据校验的raid5校验方法 - Google Patents
一种由阵列磁盘进行数据校验的raid5校验方法 Download PDFInfo
- Publication number
- CN115237342A CN115237342A CN202210791790.4A CN202210791790A CN115237342A CN 115237342 A CN115237342 A CN 115237342A CN 202210791790 A CN202210791790 A CN 202210791790A CN 115237342 A CN115237342 A CN 115237342A
- Authority
- CN
- China
- Prior art keywords
- data
- command
- xdwrite
- xpwrite
- xdread
- 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.)
- Pending
Links
Images
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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/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
Abstract
本发明公开了一种由阵列磁盘进行数据校验的RAID5校验方法,该方法包括带异或计算硬件模块以及支持XDWRITE、XDREAD和XPWRITE命令的固态硬盘组成阵列,其中,XDWRITE命令为将用户数据写入数据盘并触发新写入的数据与旧数据的异或操作,异或结果存在数据盘内的buffer中;XDREAD命令为将数据盘buffer内的校验数据读出;XPWRITE命令为将读出的校验数据写入阵列中的校验盘并触发新写入的校验数据与旧的校验数据的异或操作,最后将异或操作计算出的数据写入存储介质,XPWRITE命令用于阵列中校验盘的写校验数据,而XDWRITE命令用于数据盘的写用户数据。本发明减少RAID5在写数据过程中读写成员磁盘的次数并将校验数据的计算下放到成员磁盘中从而提高RAID5的写性能。
Description
技术领域
本发明属于计算机数据处理技术领域,涉及一种由阵列磁盘进行数据校验的RAID5校验方法。
背景技术
RAID(独立磁盘冗余阵列)技术是目前为止大规模存储比较普遍的技术,该技术将大量独立的磁盘通过不同的组织方式组合形成一个存储阵列,不仅存储容量可以根据需求拓展,读写性能以及数据安全性较单盘也有很大的提高。
根据不同的读写策略和数据冗余策略,常见的RAID分类有RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6等,综合成本、性能、数据安全性等相关因素,RAID5有着广泛的应用。
参见图1为RAID5的数据分布示意图,D0、D1、D2、D3为组成RAID5的四块成员磁盘,颜色相同的区域组成阵列的基本读写单元——条带,如图一中的A1、A2、A3、P就是一个完成的条带,而在每块磁盘中组成条带的单元如A1则称为条带单元。其中A1、A2、A3为条带中的数据单元,P为校验单元,它的值由条带中的数据单元异或得到,即由于每次写操作校验数据都需要更新,并且完成一次写操作需要对所有成员盘进行多次读写,这成为了RAID5写性能相对较低的原因之一。
RAID5的写操作根据负载大小一般分为三种情况:满条带写(full-stripewrite)、读-修改-写(read-modify-write)、读-重构-写(read-construct-write)。
所谓满条带写即写入磁盘阵列的数据量正好等于条带大小,如此一来便不需要额外的读旧数据的操作就能计算出校验数据。若以四块磁盘组成的RAID5为例,完成一次满条带写只需发送四次写IO并计算一次校验数据,现有技术中满条带写逻辑示意图参见图2。
实际上,阵列控制器是多通道并行通信,写阵列所花的时间取决于最慢的那条数据通道。假设异或计算的时间为tXOR、单盘写命令完成所需时间为twrite,写入阵列的数据大小为3*A1,则由图2可计算得到满条带写的时间tfull_w=tXOR+twrite。总I/O数n=4,则该次写阵列操作的写速率
读-修改-写与读-重构-写的最大区别在于所要读取的盘不同,参见图3为现有技术中读-修改-写的示意图。
假设A1’是大小为一个条带单元的要写入磁盘D0的新数据,A1、A2、A3、P为条带中的旧数据,则需要先将D0中的旧数据A1、D3中的旧校验数据P读出再与要写入的新数据A1’进行异或,即最后再将P’写入磁盘D3。则整个写过程所需时间为 写速率若写数据大小持续增大但小于满条带大小,由于阵列中各盘可以并行读写,因此写数据时间的增加主要体现在校验时间的增加,但总体上写速率会持续增加,当写入数据大小达到满条带时写速率达到最大。
参见图4为现有技术中读-重构-写的示意图,其中A1’为将要写入的大小为一个条带单元的新数据,根据读-重构-写的逻辑,需要将磁盘D1、D2中的旧数据读出再和要写入D0的新数据进行异或得到新的校验数据,即整个写过程所需时间为 写过程时间内数据大小为A1’,则写速率
同样的,写数据大小持续增大但小于满条带大小时,写数据所需时间的增加主要体现在校验时间的增加,当写入数据大小达到满条带时写速率达到最大。
除满条带写以外,rcw和rmw两种写入方式均因校验而需要额外的读操作且频繁读写校验磁盘,而在写操作中rcw和rmw占绝大多数,因此,RAID5虽然在数据安全性上有所提高,但也相对降低了阵列的写性能。
发明内容
为解决上述问题,本发明的一种实现RAID5数据校验的新型校验方法,配合Linux系统的软RAID模块和支持XDWRITE、XDREAD、XPWRITE命令以及拥有异或计算硬件模块的SSD,减少RAID5在写数据过程中读写成员磁盘的次数并将校验数据的计算下放到成员磁盘中从而提高RAID5的写性能。技术方案包括带异或计算硬件模块以及支持XDWRITE、XDREAD和XPWRITE命令的固态硬盘组成阵列,其中,
XDWRITE命令为将用户数据写入数据盘并触发新写入的数据与旧数据的异或操作,异或结果存在数据盘内的buffer中;
XDREAD命令为将数据盘buffer内的校验数据读出;
XPWRITE命令为将读出的校验数据写入阵列中的校验盘并触发新写入的校验数据与旧的校验数据的异或操作,最后将异或操作计算出的数据写入存储介质,XPWRITE命令用于阵列中校验盘的写校验数据,而XDWRITE命令用于数据盘的写用户数据。
基于上述目的,本发明还提供了一种单条带单元RAID5写过程的数据校验方法,采用上述方法,对于只有一个条带单元大小的数据,
首先用XDWRITE命令将数据写入数据盘中的条带单元;
再用XDREAD命令将数据盘中的校验数据读出到host进行缓存;
最后将校验数据用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXPWRITE,tXDWRITE、tXDREAD、tXPWRITE分别为XDWRITE命令、XDREAD命令和XPWRITE命令完成所需时长,其中,命令XDWRITE命令和XPWRITE命令完成时间包含数据在数据盘内的校验时间。
基于上述目的,本发明还提供了一种多条带单元RAID5写过程的数据校验方法,采用上述方法,对于大于一个条带单元大小的数据,
首先用XDWRITE命令将数据写入各数据盘中的条带单元;
再用XDREAD命令将各数据盘中的校验信息读出到host中进行异或;
最后将异或的结果用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXOR+tXPWRITE,tXDWRITE、tXDREAD、tXOR、tXPWRITE分别为XDWRITE命令、XDREAD命令、进行异或和XPWRITE命令完成所需时长。
本发明有益效果至少包括:配合Linux系统的软RAID模块和支持XDWRITE、XDREAD、XPWRITE命令以及拥有异或计算硬件模块的SSD,减少RAID5在写数据过程中读写成员磁盘的次数并将校验数据的计算下放到成员磁盘中从而提高RAID5的写性能。
附图说明
图1为现有技术的RAID5数据分布示意图;
图2为现有技术的RAID5满条带写逻辑示意图;
图3为现有技术的rmw写流程示意图;
图4为现有技术的rcw写流程示意图;
图5为本发明由阵列磁盘进行数据校验的RAID5校验方法的XDWRITE命令的示意图;
图6为本发明由阵列磁盘进行数据校验的RAID5校验方法的XDREAD命令的示意图;
图7为本发明由阵列磁盘进行数据校验的RAID5校验方法的XPWRITE命令的示意图;
图8为本发明的单条带RAID5写过程的数据校验方法的示意图;
图9为本发明的多条带RAID5写过程的数据校验方法的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
参见图5-7,为本发明实施例的本发明的技术方案为由阵列磁盘进行数据校验的RAID5校验方法的XDWRITE、XDREAD和XPWRITE命令的示意图,该方法包括带异或计算硬件模块以及支持XDWRITE、XDREAD和XPWRITE命令的固态硬盘组成阵列,其中,
参见图5,XDWRITE命令为将用户数据写入数据盘并触发新写入的数据与旧数据的异或操作,异或结果存在数据盘内的buffer中;
参见图6,XDREAD命令为将数据盘buffer内的校验数据读出;
参见图7,XPWRITE命令为将读出的校验数据写入阵列中的校验盘并触发新写入的校验数据与旧的校验数据的异或操作,最后将异或操作计算出的数据写入存储介质,该命令功能与XDWRITE类似,但XPWRITE命令用于阵列中校验盘的写校验数据,而XDWRITE命令用于数据盘的写用户数据。
参见图8,本发明还提供了一种单条带单元RAID5写过程的数据校验方法,采用上述方法,对于只有一个条带单元大小的数据,
首先用XDWRITE命令将数据写入数据盘中的条带单元;
再用XDREAD命令将数据盘中的校验数据读出到host进行缓存;
最后将校验数据用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXPWRITE,tXDWRITE、tXDREAD、tXPWRITE分别为XDWRITE命令、XDREAD命令和XPWRITE命令完成所需时长,其中,命令XDWRITE命令和XPWRITE命令完成时间包含数据在数据盘内的校验时间。
从图8中可以看出,优化后的写数据过程只产生了三个IO,不需要再从校验盘中将旧的校验数据读出,且不需要在host中对数据进行异或校验,只需要对D0中的校验数据进行缓存以便写入校验盘。整个写数据过程所需时间为tw=tXDWRITE+tXDREAD+tXPWRITE,实际上命令XDWRITE、XPWRITE完成时间包含数据在盘内的校验时间,但由于是硬件进行数据校验因此校验所花时间要比软件短,而XDREAD命令是从buffer中将数据读出其完成时间比READ命令要短。对比rmw写过程和rcw写过程,优化后的写数据时间得到相应缩短,小写性能得以提升。
参见图9,本发明还提供了一种多条带单元RAID5写过程的数据校验方法,采用上述方法,对于大于一个条带单元大小的数据,
首先用XDWRITE命令将数据写入数据盘中的条带单元;
再用XDREAD命令将各数据盘中的校验信息读出到host中进行异或;
最后将异或的结果用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXOR+tXPWRITE,tXDWRITE、tXDREAD、tXOR、tXPWRITE分别为XDWRITE命令、XDREAD命令、进行异或和XPWRITE命令完成所需时长。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种由阵列磁盘进行数据校验的RAID5校验方法,其特征在于,包括带异或计算硬件模块以及支持XDWRITE、XDREAD和XPWRITE命令的固态硬盘组成阵列,其中,
XDWRITE命令为将用户数据写入数据盘并触发新写入的数据与旧数据的异或操作,异或结果存在数据盘内的buffer中;
XDREAD命令为将数据盘buffer内的校验数据读出;
XPWRITE命令为将读出的校验数据写入阵列中的校验盘并触发新写入的校验数据与旧的校验数据的异或操作,最后将异或操作计算出的数据写入存储介质,XPWRITE命令用于阵列中校验盘的写校验数据,而XDWRITE命令用于数据盘的写用户数据。
2.一种单条带单元RAID5写过程的数据校验方法,其特征在于,采用权利要求1所述的方法,对于只有一个条带单元大小的数据,
首先用XDWRITE命令将数据写入数据盘中的条带单元;
再用XDREAD命令将数据盘中的校验数据读出到host进行缓存;
最后将校验数据用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXPWRITE,tXDWRITE、tXDREAD、tXPWRITE分别为XDWRITE命令、XDREAD命令和XPWRITE命令完成所需时长,其中,命令XDWRITE命令和XPWRITE命令完成时间包含数据在数据盘内的校验时间。
3.一种多条带单元RAID5写过程的数据校验方法,其特征在于,采用权利要求1所述的方法,对于大于一个条带单元大小的数据,
首先用XDWRITE命令将数据写入各数据盘中的条带单元;
再用XDREAD命令将各数据盘中的校验信息读出到host中进行异或;
最后将异或的结果用XPWRITE命令写入校验盘;
整个写数据过程所需时长为tw=tXDWRITE+tXDREAD+tXOR+tXPWRITE,tXDWRITE、tXDREAD、tXOR、tXPWRITE分别为XDWRITE命令、XDREAD命令、进行异或和XPWRITE命令完成所需时长。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210314223 | 2022-03-28 | ||
CN202210314223X | 2022-03-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237342A true CN115237342A (zh) | 2022-10-25 |
Family
ID=83671512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210791790.4A Pending CN115237342A (zh) | 2022-03-28 | 2022-07-07 | 一种由阵列磁盘进行数据校验的raid5校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237342A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389481A (zh) * | 2023-12-08 | 2024-01-12 | 鹏钛存储技术(南京)有限公司 | 一种固态硬盘实现xor加速的方法 |
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
-
2022
- 2022-07-07 CN CN202210791790.4A patent/CN115237342A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389481A (zh) * | 2023-12-08 | 2024-01-12 | 鹏钛存储技术(南京)有限公司 | 一种固态硬盘实现xor加速的方法 |
CN117389481B (zh) * | 2023-12-08 | 2024-02-09 | 鹏钛存储技术(南京)有限公司 | 一种固态硬盘实现xor加速的方法 |
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9442802B2 (en) | Data access methods and storage subsystems thereof | |
US5530948A (en) | System and method for command queuing on raid levels 4 and 5 parity drives | |
US5315602A (en) | Optimized stripe detection for redundant arrays of disk drives | |
US5742752A (en) | Method for performing a RAID stripe write operation using a drive XOR command set | |
US6523087B2 (en) | Utilizing parity caching and parity logging while closing the RAID5 write hole | |
US5504858A (en) | Method and apparatus for preserving data integrity in a multiple disk raid organized storage system | |
CN102122235B (zh) | 一种raid4系统及其数据读写方法 | |
US7730257B2 (en) | Method and computer program product to increase I/O write performance in a redundant array | |
US6282671B1 (en) | Method and system for improved efficiency of parity calculation in RAID system | |
CN115237342A (zh) | 一种由阵列磁盘进行数据校验的raid5校验方法 | |
US7310745B2 (en) | Efficient media scan operations for storage systems | |
US20020035666A1 (en) | Method and apparatus for increasing raid write performance by maintaining a full track write counter | |
JP2007513435A (ja) | データ組織化を管理するための方法、システム、及びプログラム | |
JPH05505264A (ja) | データ記憶装置における書込みオペレーション識別子の不揮発性メモリ記憶 | |
CN103049222A (zh) | 一种raid5的写io优化处理方法 | |
KR100208801B1 (ko) | 데이타 입/출력 성능을 향상시키기 위한 기억장치 시스템 및 그에 따른 데이타 복구정보 캐시구현방법 | |
US6343343B1 (en) | Disk arrays using non-standard sector sizes | |
CN103336727B (zh) | 对nand闪存存储设备进行数据操作的方法 | |
US5896493A (en) | Raid algorithm using a multimedia functional unit | |
CN103019893A (zh) | 一种多盘容错的二维混合盘raid4系统架构及其读写方法 | |
US20040093464A1 (en) | Integrated sector format-error correction code system and method for efficient writing in a disk array system | |
CN107678690A (zh) | 一种固态硬盘及其冗余独立磁盘阵列的实现方法 | |
US6038676A (en) | Method and circuit for data integrity verification during DASD data transfer | |
US7143234B2 (en) | Bios storage array | |
CN107728943B (zh) | 一种延迟产生校验光盘的方法及其对应的数据恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |