CN106844088B - 一种raid存储系统的数据发送方法及装置 - Google Patents

一种raid存储系统的数据发送方法及装置 Download PDF

Info

Publication number
CN106844088B
CN106844088B CN201710090027.8A CN201710090027A CN106844088B CN 106844088 B CN106844088 B CN 106844088B CN 201710090027 A CN201710090027 A CN 201710090027A CN 106844088 B CN106844088 B CN 106844088B
Authority
CN
China
Prior art keywords
data
unit
stripe
parity
target
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
Application number
CN201710090027.8A
Other languages
English (en)
Other versions
CN106844088A (zh
Inventor
侯博
张小博
徐晓阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710090027.8A priority Critical patent/CN106844088B/zh
Publication of CN106844088A publication Critical patent/CN106844088A/zh
Application granted granted Critical
Publication of CN106844088B publication Critical patent/CN106844088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

本发明公开了一种RAID存储系统的数据发送方法及装置,该方法包括:接收主机发送的读取指令,并按照读取指令查找到目标条带单元;利用奇偶校验算法判断目标条带单元中的数据是否正确;如果是,则将目标条带单元中的数据发送至主机;如果否,则利用奇偶校验算法将目标条带单元中的数据进行恢复,并进入将目标条带单元中的数据发送至主机的步骤。由此可见,RAID存储系统接收到主机的读取指令时,会将相应的目标条带单元的数据进行检验,在确保数据正确的前提下,才将数据发送给主机,这样不仅避免了错误数据的发送,而且更重要的是,能够保证数据发送的有效性和提高发送的效率。

Description

一种RAID存储系统的数据发送方法及装置
技术领域
本发明涉及存储系统领域,特别是涉及一种RAID存储系统的数据发送方法及装置。
背景技术
在RAID存储系统中包含控制器和多个磁盘阵列,控制器用于执行主机发送的各种指令,磁盘阵列用于存储数据。当接收到主机发送的读取指令时,控制器就会根据读取指令,将相应的磁盘阵列中的数据返回至主机。
但是,由于软硬件的不正当操作,当数据在存储时,有可能就会出错,导致,当主机发送了读取指令后,控制器将错误的数据返回至主机。当主机接收到控制器返回的数据后,会进行相应的奇偶校验,从而确定控制器返回的数据是否正确,如果不正确,则继续向控制器发送读取指令,而控制器并不知道当前存储的数据是错误的,因此,会重复向主机返回相同的数据,最终导致主机读取数据的效率较低,有效性较差。
由此可见,在主机发出读取指令时,控制器如何能够快速有效地向主机提供正确的数据,从而保证读取的效率和有效性是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种RAID存储系统的数据发送方法及装置,用于在主机发出读取指令时,控制器如何能够快速有效地向主机提供正确的数据,从而保证读取的效率和有效性。
为解决上述技术问题,本发明提供一种RAID存储系统的数据发送方法,包括:
接收主机发送的读取指令,并按照所述读取指令查找到目标条带单元;
利用奇偶校验算法判断所述目标条带单元中的数据是否正确;
如果是,则将所述目标条带单元中的数据发送至所述主机;
如果否,则利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤。
优选地,所述利用奇偶校验算法判断所述目标条带单元中的数据是否正确具体包括:
读取所述目标条带单元的已存数据以及所述目标条带单元对应的已存第一奇偶校验数据;
按照所述奇偶校验算法将所述目标条带单元的已存数据生成新第一奇偶校验数据;
判断已存第一奇偶校验数据与所述新第一奇偶校验数据是否相同;
其中,如果是,则进入所述将所述目标条带单元中的数据发送至所述主机的步骤,否则,进入所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复的步骤。
优选地,所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复具体包括:
获取所述目标条带单元所在条带的第二奇偶校验数据以及所述目标条带单元所在条带的其余各条带单元的已存数据,并按照所述奇偶校验算法生成所述目标条带单元对应的新数据;
按照所述奇偶校验算法将所述目标条带单元对应的新数据生成对比第一奇偶校验数据;
判断所述对比第一奇偶校验数据与所述已存第一奇偶校验数据是否相同;
如果是,则将所述目标条带单元对应的新数据覆盖所述目标条带单元的已存数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
如果否,则判断所述目标条带单元对应的新数据与所述目标条带单元的已存数据是否相同;
如果否,则输出提示错误的信息;
如果是,则按照所述奇偶校验算法修改所述目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤。
优选地,所述利用奇偶校验算法判断所述目标条带单元中的数据是否正确具体包括:
按照所述奇偶校验算法计算所述目标条带单元所在条带的第二奇偶校验数据;
判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同;
其中,如果是,则进入所述将所述目标条带单元中的数据发送至所述主机的步骤,否则,进入所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复的步骤。
优选地,所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复具体包括:
设置所述目标条带单元所在条带的第一条带单元为起始单元;
按照所述奇偶校验算法将当前条带的已存第二奇偶校验数据和所述目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据;
将所述当前条带单元对应的新数据与所述目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和;
判断所述当前条带对应的新校验和与已存校验和是否相同;
如果是,则将所述当前条带单元对应的新数据覆盖当前条带单元的已存数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
如果否,则判断当前条带单元是否为最后一个存储数据的条带单元;
如果是,则输出提示错误的信息;如果否,则将当前条带单元的下一个条带单元作为当前条带单元,并返回。
为解决上述技术问题,本发明还提供一种RAID存储系统的数据发送装置,包括:
查找单元,用于接收主机发送的读取指令,并按照所述读取指令查找到目标条带单元;
判断单元,用于利用奇偶校验算法判断所述目标条带单元中的数据是否正确;
恢复单元,用于在所述判断单元的判断结果为否时,利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复;
发送单元,用于在所述判断单元的判断结果为是,或所述恢复单元将数据进行恢复后,将所述目标条带单元中的数据发送至所述主机。
优选地,所述判断单元具体包括:
读取模块,用于读取所述目标条带单元的已存数据以及所述目标条带单元对应的已存第一奇偶校验数据;
第一生成模块,用于按照所述奇偶校验算法将所述目标条带单元的已存数据生成新第一奇偶校验数据;
第一判断模块,用于判断已存第一奇偶校验数据与所述新第一奇偶校验数据是否相同,如果是,则触发所述发送单元,否则,触发所述恢复单元。
优选地,所述恢复单元具体包括:
第二生成模块,用于获取所述目标条带单元所在条带的第二奇偶校验数据以及所述目标条带单元所在条带的其余各条带单元的已存数据,并按照所述奇偶校验算法生成所述目标条带单元对应的新数据;
第三生成模块,用于按照所述奇偶校验算法将所述目标条带单元对应的新数据生成对比第一奇偶校验数据;
第二判断模块,用于判断所述对比第一奇偶校验数据与所述已存第一奇偶校验数据是否相同;
第一覆盖模块,用于在所述第二判断模块的判断结果为是时,将所述目标条带单元对应的新数据覆盖所述目标条带单元的已存数据,并触发所述发送单元;
第三判断模块,用于在所述第二判断模块的判断结果为否时,判断所述目标条带单元对应的新数据与所述目标条带单元的已存数据是否相同;
第一输出模块,用于在所述第三判断模块的判断结果为否时,输出提示错误的信息;
修改模块,用不在所述第三判断模块的判断结果为是时,按照所述奇偶校验算法修改所述目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并触发所述发送单元。
优选地,所述判断单元具体包括:
计算模块,用于按照所述奇偶校验算法计算所述目标条带单元所在条带的第二奇偶校验数据;
第四判断模块,用于判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同,如果是,则触发所述发送单元,否则,触发所述恢复单元。
优选地,所述恢复单元具体包括:
设置模块,用于设置所述目标条带单元所在条带的第一条带单元为起始单元;
第四生成模块,用于按照所述奇偶校验算法将当前条带的已存第二奇偶校验数据和所述目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据;
第五生成模块,用于将所述当前条带单元对应的新数据与所述目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和;
第五判断模块,用于判断所述当前条带对应的新校验和与已存校验和是否相同;
第二覆盖模块,用于所述第五判断模块的判断结果为是时,将所述当前条带单元对应的新数据覆盖当前条带单元的已存数据,并触发所述发送单元;
第六判断模块,用于所述第五判断模块的判断结果为否时,判断当前条带单元是否为最后一个存储数据的条带单元;
第二输出模块,用于在所述第六判断模块的判断结果为是时,输出提示错误的信息;
递增模块,用于在所述第六判断模块的判断结果为否时,将当前条带单元的下一个条带单元作为当前条带单元,并触发所述第四生成模块。
本发明所提供的RAID存储系统的数据发送方法及装置,该方法包括:接收主机发送的读取指令,并按照读取指令查找到目标条带单元;利用奇偶校验算法判断目标条带单元中的数据是否正确;如果是,则将目标条带单元中的数据发送至主机;如果否,则利用奇偶校验算法将目标条带单元中的数据进行恢复,并进入将目标条带单元中的数据发送至主机的步骤。由此可见,RAID存储系统接收到主机的读取指令时,会将相应的目标条带单元的数据进行检验,在确保数据正确的前提下,才将数据发送给主机,这样不仅避免了错误数据的发送,而且更重要的是,能够保证数据发送的有效性和提高发送的效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种RAID存储系统的数据发送方法的流程图;
图2为本发明实施例提供的一种主机与RAID存储系统的结构图;
图3为本发明实施例提供的一种数据卷与校验数据在RAID存储系统上的分布示意图;
图4为本发明实施例提供的另一种数据卷与校验数据在RAID存储系统上的分布示意图;
图5为本发明实施例提供的另一种RAID存储系统的数据发送的流程图;
图6为本发明实施例提供的另一种RAID存储系统的数据发送方法的流程图;
图7为本发明实施例提供的一种步骤S13的流程图;
图8为本发明实施例公开的一种RAID存储系统的数据发送装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种RAID存储系统的数据发送方法及装置,用于在主机发出读取指令时,控制器如何能够快速有效地向主机提供正确的数据,从而保证读取的效率和有效性。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种RAID存储系统的数据发送方法的流程图。如图1所示,RAID存储系统的数据发送方法包括:
S10:接收主机发送的读取指令,并按照读取指令查找到目标条带单元。
S11:利用奇偶校验算法判断目标条带单元中的数据是否正确;如果是,进入步骤S12,否则,进入步骤S13。
S12:将目标条带单元中的数据发送至主机。
S13:利用奇偶校验算法将目标条带单元中的数据进行恢复,并进入步骤S12。
图2为本发明实施例提供的一种主机与RAID存储系统的结构图。如图2所示,RAID存储系统10与主机12进行数据交互,RAID存储系统10中包含了多个磁盘,如图2所示,16(1)-16(6)均为磁盘,RAID存储系统10中包括RAID控制器18,用于直接与各磁盘进行数据交互。可以理解的是,图2只是一种具体示例,并不代表RAID存储系统10只有6个磁盘。
RAID控制器18可能以拥有一个或多个处理器的计算机的形式存在于系统中,该计算机能根据存于可读介质中的执行命令进行数据的处理。RAID控制器18能够同时从磁盘16(1)-16(6)中同时读取数据。磁盘16(1)-16(5)包含了1个或多个数据卷,为了便于解释,我们假设磁盘16(1)-16(5)存储了一个数据卷,此假设目的是为了便于解释,实际场景中可能存在多个数据卷。除了存储数据卷,磁盘16(1)-16(5)同时存储了第一奇偶校验数据,磁盘16(6)存储了第二奇偶校验数据。RAID存储系统10被配置后用来接收来自主机12对数据卷的各类请求。RAID存储系统10也可能被配置接收来自于其他计算机系统的请求,在此不进行过多赘述。
当RAID存储系统10接收到读取指令时,首先查找到目标条带单元,即找到与读取指令相对应的条带单元,然后再根据奇偶校验算法判断目标条带单元中的数据是否是正确的,如果是正确的,说明这个数据在写入目标条带单元是正确的,也是主机12所想要的数据,则将该数据发送至主机12。相反,当判断出目标条带单元中的数据不正确的话,则说明在对目标条带单元写入数据的过程中发生错误,则需要对目标条带单元中的数据进行恢复,从而保证发送给主机12的数据是正确的数据。
本实施例提供的RAID存储系统的数据发送方法,在RAID存储系统接收到主机的读取指令时,会将相应的目标条带单元的数据进行检验,在确保数据正确的前提下,才将数据发送给主机,这样不仅避免了错误数据的发送,而且更重要的是,能够保证数据发送的有效性和提高发送的效率。
为了更加清楚磁盘的存储状态,给出图3和图4。图3为本发明实施例提供的一种数据卷与校验数据在RAID存储系统上的分布示意图。图4为本发明实施例提供的另一种数据卷与校验数据在RAID存储系统上的分布示意图。图3与图4为两种不同的分布,下文将详细说明。需要说明的是,每个磁盘中均包含有多个条带单元,不同磁盘的条带单元构成多个条带。
对于图3来说
图3展示了条带S1-Smax在磁盘16(1)-16(6)上的分布。具体为:磁盘16(1)-16(4)这4个磁盘用来存储数据,16(5)用来存储第二奇偶校验数据,16(6)用来存储第一奇偶校验数据。不同磁盘的同一序号的条带单元构成一个条带。例如条带单元B1,1为16(1)的第一个条带单元、条带单元B1,2为16(2)的第一个条带单元、条带单元B1,3为16(3)的第一个条带单元、条带单元B1,4为16(4)的第一个条带单元,条带单元SP1为16(5)的第一个条带单元,则条带单元B1,1、条带单元B1,2、条带单元B1,3、条带单元B1,4以及条带单元SP1就构成了第一条带S1,以此类推得到第二条带S2、第三条带S3和第四条带S4。16(6)用来存储第一奇偶校验数据,包括多个条带单元,各条带单元与磁盘16(1)-16(4)中的各条带单元一一对应,即磁盘16(1)-16(4)中的各条带单元均有自己的第一奇偶校验数据,同一条带上的4个条带单元共同拥有一个第二奇偶校验数据。在图3中,第一奇偶校验数据用Py,x来表示,第二奇偶校验数据用SPy表示y和x均为由1开始的正整数。
在具体实施中,每个条带单元SPy存储了根据条带单元By,1-By,4计算得来的第二奇偶校验数据,此数据是根据条带单元By,1-By,4的逻辑亦或计算得来的。
每个条带Sy在磁盘16(6)上都有对应的第一奇偶校验数据。在图3中,每个第一奇偶校验数据都存储在单元Py,1-Py,4中,每个单元Py,x都有与之相对应的条带单元By,x。每个单元Py,x都存储着由条带单元By,x逻辑亦或计算得来的第二奇偶校验数据。
主机12与RAID存储系统10的数据交互过程为:由Py,x和SPy分别得来的第一、第二奇偶检验数据,在每次条带单元被改变后能实时更新。例如,RAID控制器18收到来自主机12在条带单元By,x上覆盖写入新数据的请求,相应的,RAID控制器18接收到请求,从已存条带单元By,x上读取数据,从Py,x和SPy读取第一、第二奇偶检验数据。接着,RAID控制器18为条带单元SPy生成新的第二奇偶校验数据,此数据通过在条带单元SPy上已存的第二奇偶校验数据,和从主机12接收到的新数据,与条带单元By,x上的已存数据得来;相应的,RAID控制器18同时也为单元Py,x生成新的第一奇偶校验数据,此数据通过Py,x已存奇偶校验数据,从主机12得到的新数据,与条带单元By,x上的已存数据得来。RAID控制器18在SPy上新生成的第二奇偶校验数据覆盖在SPy上已存的第二奇偶校验数据,使在Py,x上新生成的第一奇偶校验数据覆盖在Py,x上已存的第一奇偶校验数据,使在By,x上新接收的数据覆盖已存的数据。
图5为本发明实施例提供的另一种RAID存储系统的数据发送的流程图。如图5所示,与上述实施例相同的步骤本实施例不再赘述。在上述实施例的基础上,步骤S11具体包括:
S110:读取目标条带单元的已存数据以及目标条带单元对应的已存第一奇偶校验数据。
S111:按照奇偶校验算法将目标条带单元的已存数据生成新第一奇偶校验数据。
S112:判断已存第一奇偶校验数据与新第一奇偶校验数据是否相同。
其中,如果是,则进入步骤S12,否则,进入步骤S13。
在另一实施例中,步骤S13具体包括:
S130:获取目标条带单元所在条带的第二奇偶校验数据以及目标条带单元所在条带的其余各条带单元的已存数据,并按照奇偶校验算法生成目标条带单元对应的新数据。
S131:按照奇偶校验算法将目标条带单元对应的新数据生成对比第一奇偶校验数据。
S132:判断对比第一奇偶校验数据与已存第一奇偶校验数据是否相同,如果是,则进入步骤S133,否则,进入步骤S134。
S133:将目标条带单元对应的新数据覆盖目标条带单元的已存数据,并进入步骤S12。
S134:判断目标条带单元对应的新数据与目标条带单元的已存数据是否相同,如果是,则进入步骤S136,否则,进入步骤S135。
S135:输出提示错误的信息。
S136:按照奇偶校验算法修改目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并进入步骤S12。
当RAID控制器18接收到读取条带单元By,x上数据的请求时,作为回应,RAID控制器18读取在条带单元By,x上的已存数据Dold,在条带单元Py,x上的已存第一奇偶数据Pold。接着,RAID控制器18根据已存数据Dold生成新第一奇偶校验数据Pnew。其中,用于生成Pnew的算法与生成在磁盘16(6)中Py,x上的Pold的算法相同。RAID控制器18对Pnew与Pold进行对比,如果新第一奇偶校验数据Pnew与已存第一奇偶校验数据Pold不相同,则认为被请求的数据已经损坏,Pold被错误生成;当新第一奇偶校验数据Pnew与Pold对比相同,则说明可以将条带单元By,x上的数据被返回主机12。
如果Pnew与Pold不相等,则RAID控制器18读取本条带中除By,x的其余条带单元上的数据,与条带单元SPy上的第二奇偶校验数据,并生成目标条带单元对应的新数据Dnew,更详细地说,目标条带单元对应的新数据Dnew根据条带单元By,1-By,4上的数据与条带单元SPy上的第二奇偶校验数据生成。然后再根据新数据Dnew再生成一个对比第一奇偶校验数据P'new。用于生成P'new的算法与生成Pnew的算法相同。比较P'new与Pnew,如果P'new与Pnew相同,则在条带单元By,x上的已存数据Dold被Dnew覆盖写入。然而,当额外生成的对比第一奇偶校验数据P'new与Pnew不相同,则比较新数据Dnew与Dold是否相等。
如果Dnew与Dold比较后不相同,则向主机12返回一个错误信息,表明RAID存储系统10有过多的数据损坏。
如果Dnew与Dold比较后相同,则说明本条带中的某一个或某几个第一奇偶校验数据发生错误,需要按照奇偶校验算法进行修复。每一个第一奇偶校验数据的具体修复过程为:
根据条带单元By,x中的已存数据生成新奇偶校验数据Pnew(i)。用于生成Pnew的算法与生成Py,x上的Pold的算法相同。接着将Pnew(i)写入覆盖掉Pold(i)。重复上述过程,知道将本条带中全部的第一奇偶校验数据修改完为止。其中下标i表示多个条带单元依次循环进行。
图5展示了RAID存储系统10接收了只对条带单元By,x的读取数据请求。然而,若RAID存储系统10接收到读取多个条带单元数据的请求,则都会重复一次图5中的流程。从时间上来讲,图5流程可能比当前技术流程所用时间更长,但却增加了返回到主机12的数据的有效性和可靠性,相对于现有技术中,可能会无限制的发送错误数据来说,本发明提供的方法所用的时间也是较少的,因此在一定程度上,效率也是较高的。
对于图4来说
图4与图3相同的地方,本实施例不再赘述,磁盘16(6)上还存储了另一种数据,即校验和。与条带S1-Smax相对应的校验和CS1-CSmax,在一个系统中,每个校验和数据CSy都由条带单元By,1-By,4与和条带Sy相对应的SPy计算得来;其中,生成CSy的算法与生成SPy的算法不相同,且无论CSy是怎样的数据形式,任意条带单元By,x的数据都能根据CSy与SPy中的数据生成。
如Py,x一样,校验和数据CSy会在每次条带单元By,x改变时更新。当RAID控制器18接收到来自主机12对条带单元By,x的覆盖写请求时,RAID控制器18读取在条带单元By,x上的已有数据,SPy上的第二奇偶校验数据,CSy校验和;接着,RAID控制器18根据条带单元SPy上的第二奇偶数据,从主机12接收到的新数据,与条带单元By,x上已存的数据为SPy生成新的第二奇偶校验数据。同时,RAID控制器18也会根据CSy上的已存校验和,从主机12接收到的新数据,与条带单元By,x上的已存数据为CSy生成新的校验和。因此,RAID控制器18覆盖写入了在SPy上的新第二奇偶校验数据,在CSy上的新校验和,在By,x上的来自主机12的新数据。
图6为本发明实施例提供的另一种RAID存储系统的数据发送方法的流程图。如图6所示,与上述实施例相同的步骤,本实施例不再赘述,步骤S11具体包括:
S113:按照奇偶校验算法计算目标条带单元所在条带的第二奇偶校验数据。
S114:判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同,其中,如果是,则进入步骤S12,否则,进入步骤S13。
图7为本发明实施例提供的一种步骤S13的流程图。如图7所示,步骤S13具体包括:
S137:设置目标条带单元所在条带的第一条带单元为起始单元。
S138:按照奇偶校验算法将当前条带的已存第二奇偶校验数据和目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据。
S139:将当前条带单元对应的新数据与目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和。
S140:判断当前条带对应的新校验和与已存校验和是否相同,如果是,进入步骤S141,否则进入步骤S142。
S141:将当前条带单元对应的新数据覆盖当前条带单元的已存数据,并进入步骤S12。
S142:判断当前条带单元是否为最后一个存储数据的条带单元,如果是,则进入步骤S143,否则,进入步骤S144。
S143:输出提示错误的信息;
S144:将当前条带单元的下一个条带单元作为当前条带单元,并返回步骤S138。
RAID控制器18接受了来主机12的读取数据请求,被请求的数据存储在条带单元By,x中。RAID控制器18根据条带单元By,1-By,4的数据生成新第二奇偶校验数据Pnew。值得注意的是,Pnew的生成算法与生成条带单元SPy上的已存奇偶校验数据Pold相同。接着RAID控制器18比较Pnew与Pold
若Pnew与Pold相等,则认为条带单元By,x上的数据是有效的,并发送至主机12。
当Pnew与Pold不相同时,则认为损坏数据存在于条带单元By,1-By,4中,需要对各条带单元的数据进行恢复。在具体实施中,可以设置一个虚拟变量i,一次对每个条带单元的数据进行恢复,本实施例不再赘述,参见图6。
在步骤S139中,RAID控制器18生成新校验和CSnew。值得注意的是,生成CSnew的算法与生成在磁盘16(6)上CS1-CSmax的算法相同。
上述实施例中,公开了RAID存储系统的数据发送对应的几个实施例,下文中,将相对应的给出RAID存储系统的数据发送装置对应的实施例。由于RAID存储系统的数据发送装置与RAID存储系统的数据发送方法相对应,因此,具体实施方式参见上文的说明,本实施例不再赘述。图8为本发明实施例公开的一种RAID存储系统的数据发送装置的结构图。如图8所述,该装置包括:
查找单元1,用于接收主机发送的读取指令,并按照读取指令查找到目标条带单元;
判断单元2,用于利用奇偶校验算法判断目标条带单元中的数据是否正确;
恢复单元3,用于在判断单元的判断结果为否时,利用奇偶校验算法将目标条带单元中的数据进行恢复;
发送单元4,用于在判断单元的判断结果为是,或恢复单元将数据进行恢复后,将目标条带单元中的数据发送至主机。
作为优选的实施方式,判断单元2具体包括:
读取模块,用于读取目标条带单元的已存数据以及目标条带单元对应的已存第一奇偶校验数据;
第一生成模块,用于按照奇偶校验算法将目标条带单元的已存数据生成新第一奇偶校验数据;
第一判断模块,用于判断已存第一奇偶校验数据与新第一奇偶校验数据是否相同,如果是,则触发发送单元,否则,触发恢复单元。
作为优选的实施方式,恢复单元3具体包括:
第二生成模块,用于获取目标条带单元所在条带的第二奇偶校验数据以及目标条带单元所在条带的其余各条带单元的已存数据,并按照奇偶校验算法生成目标条带单元对应的新数据;
第三生成模块,用于按照奇偶校验算法将目标条带单元对应的新数据生成对比第一奇偶校验数据;
第二判断模块,用于判断对比第一奇偶校验数据与已存第一奇偶校验数据是否相同;
第一覆盖模块,用于在第二判断模块的判断结果为是时,将目标条带单元对应的新数据覆盖目标条带单元的已存数据,并触发发送单元;
第三判断模块,用于在第二判断模块的判断结果为否时,判断目标条带单元对应的新数据与目标条带单元的已存数据是否相同;
第一输出模块,用于在第三判断模块的判断结果为否时,输出提示错误的信息;
修改模块,用不在第三判断模块的判断结果为是时,按照奇偶校验算法修改目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并触发发送单元。
在另外一个实施例中,判断单元2具体包括:
计算模块,用于按照奇偶校验算法计算目标条带单元所在条带的第二奇偶校验数据;
第四判断模块,用于判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同,如果是,则触发发送单元,否则,触发恢复单元。
作为优选地实施方式,恢复单元3具体包括:
设置模块,用于设置目标条带单元所在条带的第一条带单元为起始单元;
第四生成模块,用于按照奇偶校验算法将当前条带的已存第二奇偶校验数据和目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据;
第五生成模块,用于将当前条带单元对应的新数据与目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和;
第五判断模块,用于判断当前条带对应的新校验和与已存校验和是否相同;
第二覆盖模块,用于第五判断模块的判断结果为是时,将当前条带单元对应的新数据覆盖当前条带单元的已存数据,并触发发送单元;
第六判断模块,用于第五判断模块的判断结果为否时,判断当前条带单元是否为最后一个存储数据的条带单元;
第二输出模块,用于在第六判断模块的判断结果为是时,输出提示错误的信息;
递增模块,用于在第六判断模块的判断结果为否时,将当前条带单元的下一个条带单元作为当前条带单元,并触发第四生成模块。
本实施例提供的RAID存储系统的数据发送装置,在RAID存储系统接收到主机的读取指令时,会将相应的目标条带单元的数据进行检验,在确保数据正确的前提下,才将数据发送给主机,这样不仅避免了错误数据的发送,而且更重要的是,能够保证数据发送的有效性和提高发送的效率。
以上对本发明所提供的RAID存储系统的数据发送方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (2)

1.一种RAID存储系统的数据发送方法,其特征在于,包括:
接收主机发送的读取指令,并按照所述读取指令查找到目标条带单元;
利用奇偶校验算法判断所述目标条带单元中的数据是否正确;
如果是,则将所述目标条带单元中的数据发送至所述主机;
如果否,则利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
所述利用奇偶校验算法判断所述目标条带单元中的数据是否正确具体包括:
读取所述目标条带单元的已存数据以及所述目标条带单元对应的已存第一奇偶校验数据;
按照所述奇偶校验算法将所述目标条带单元的已存数据生成新第一奇偶校验数据;
判断已存第一奇偶校验数据与所述新第一奇偶校验数据是否相同;
其中,如果是,则进入所述将所述目标条带单元中的数据发送至所述主机的步骤,否则,进入所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复的步骤;
所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复具体包括:
获取所述目标条带单元所在条带的第二奇偶校验数据以及所述目标条带单元所在条带的其余各条带单元的已存数据,并按照所述奇偶校验算法生成所述目标条带单元对应的新数据;
按照所述奇偶校验算法将所述目标条带单元对应的新数据生成对比第一奇偶校验数据;
判断所述对比第一奇偶校验数据与所述已存第一奇偶校验数据是否相同;
如果是,则将所述目标条带单元对应的新数据覆盖所述目标条带单元的已存数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
如果否,则判断所述目标条带单元对应的新数据与所述目标条带单元的已存数据是否相同;
如果否,则输出提示错误的信息;
如果是,则按照所述奇偶校验算法修改所述目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
或所述利用奇偶校验算法判断所述目标条带单元中的数据是否正确具体包括:
按照所述奇偶校验算法计算所述目标条带单元所在条带的第二奇偶校验数据;
判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同;
其中,如果是,则进入所述将所述目标条带单元中的数据发送至所述主机的步骤,否则,进入所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复的步骤;
所述利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复具体包括:
设置所述目标条带单元所在条带的第一条带单元为起始单元;
按照所述奇偶校验算法将当前条带的已存第二奇偶校验数据和所述目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据;
将所述当前条带单元对应的新数据与所述目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和;
判断所述当前条带对应的新校验和与已存校验和是否相同;
如果是,则将所述当前条带单元对应的新数据覆盖当前条带单元的已存数据,并进入所述将所述目标条带单元中的数据发送至所述主机的步骤;
如果否,则判断当前条带单元是否为最后一个存储数据的条带单元;
如果是,则输出提示错误的信息;如果否,则将当前条带单元的下一个条带单元作为当前条带单元,并返回。
2.一种RAID存储系统的数据发送装置,其特征在于,包括:
查找单元,用于接收主机发送的读取指令,并按照所述读取指令查找到目标条带单元;
判断单元,用于利用奇偶校验算法判断所述目标条带单元中的数据是否正确;
恢复单元,用于在所述判断单元的判断结果为否时,利用所述奇偶校验算法将所述目标条带单元中的数据进行恢复;
发送单元,用于在所述判断单元的判断结果为是,或所述恢复单元将数据进行恢复后,将所述目标条带单元中的数据发送至所述主机;
所述判断单元具体包括:
读取模块,用于读取所述目标条带单元的已存数据以及所述目标条带单元对应的已存第一奇偶校验数据;
第一生成模块,用于按照所述奇偶校验算法将所述目标条带单元的已存数据生成新第一奇偶校验数据;
第一判断模块,用于判断已存第一奇偶校验数据与所述新第一奇偶校验数据是否相同,如果是,则触发所述发送单元,否则,触发所述恢复单元;
所述恢复单元具体包括:
第二生成模块,用于获取所述目标条带单元所在条带的第二奇偶校验数据以及所述目标条带单元所在条带的其余各条带单元的已存数据,并按照所述奇偶校验算法生成所述目标条带单元对应的新数据;
第三生成模块,用于按照所述奇偶校验算法将所述目标条带单元对应的新数据生成对比第一奇偶校验数据;
第二判断模块,用于判断所述对比第一奇偶校验数据与所述已存第一奇偶校验数据是否相同;
第一覆盖模块,用于在所述第二判断模块的判断结果为是时,将所述目标条带单元对应的新数据覆盖所述目标条带单元的已存数据,并触发所述发送单元;
第三判断模块,用于在所述第二判断模块的判断结果为否时,判断所述目标条带单元对应的新数据与所述目标条带单元的已存数据是否相同;
第一输出模块,用于在所述第三判断模块的判断结果为否时,输出提示错误的信息;
修改模块,用于在所述第三判断模块的判断结果为是时,按照所述奇偶校验算法修改所述目标条带单元所在条带的各条带单元所对应的第一奇偶校验数据,并触发所述发送单元;
或所述判断单元具体包括:
计算模块,用于按照所述奇偶校验算法计算所述目标条带单元所在条带的第二奇偶校验数据;
第四判断模块,用于判断计算得到的第二奇偶校验数据与已存第二奇偶校验数据是否相同,如果是,则触发所述发送单元,否则,触发所述恢复单元;所述恢复单元具体包括:
设置模块,用于设置所述目标条带单元所在条带的第一条带单元为起始单元;
第四生成模块,用于按照所述奇偶校验算法将当前条带的已存第二奇偶校验数据和所述目标条带单元所在条带的其余各条带单元的已存第一奇偶校验数据生成当前条带单元对应的新数据;
第五生成模块,用于将所述当前条带单元对应的新数据与所述目标条带单元所在条带的其余各条带单元的已存数据生成当前条带对应的新校验和;
第五判断模块,用于判断所述当前条带对应的新校验和与已存校验和是否相同;
第二覆盖模块,用于所述第五判断模块的判断结果为是时,将所述当前条带单元对应的新数据覆盖当前条带单元的已存数据,并触发所述发送单元;
第六判断模块,用于所述第五判断模块的判断结果为否时,判断当前条带单元是否为最后一个存储数据的条带单元;
第二输出模块,用于在所述第六判断模块的判断结果为是时,输出提示错误的信息;
递增模块,用于在所述第六判断模块的判断结果为否时,将当前条带单元的下一个条带单元作为当前条带单元,并触发所述第四生成模块。
CN201710090027.8A 2017-02-20 2017-02-20 一种raid存储系统的数据发送方法及装置 Active CN106844088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710090027.8A CN106844088B (zh) 2017-02-20 2017-02-20 一种raid存储系统的数据发送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710090027.8A CN106844088B (zh) 2017-02-20 2017-02-20 一种raid存储系统的数据发送方法及装置

Publications (2)

Publication Number Publication Date
CN106844088A CN106844088A (zh) 2017-06-13
CN106844088B true CN106844088B (zh) 2020-03-27

Family

ID=59128566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710090027.8A Active CN106844088B (zh) 2017-02-20 2017-02-20 一种raid存储系统的数据发送方法及装置

Country Status (1)

Country Link
CN (1) CN106844088B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221681A (zh) * 2019-11-07 2020-06-02 华为技术有限公司 一种存储器的修复方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069381B1 (en) * 2003-07-01 2006-06-27 Veritas Operating Corporation Automated Recovery from data corruption of data volumes in RAID storage
CN101567211A (zh) * 2009-05-27 2009-10-28 杭州华三通信技术有限公司 一种提高磁盘可用性的方法和磁盘阵列控制器
CN101976177B (zh) * 2010-08-19 2012-10-03 北京同有飞骥科技股份有限公司 一种垂直型分组并行集中校验的磁盘阵列的构建方法

Also Published As

Publication number Publication date
CN106844088A (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
CN108351819B (zh) 动态调整存储设备的错误校正作用等级
US8020074B2 (en) Method for auto-correction of errors in a RAID memory system
WO2018000812A1 (zh) 数据存储方法及装置
US8930750B2 (en) Systems and methods for preventing data loss
CN107807792A (zh) 一种基于副本存储系统的数据处理方法及相关装置
CN105122213A (zh) 用于数据存储系统中的错误检测和纠正的方法和装置
CN108646982B (zh) 一种基于ubifs的数据自动修复方法及装置
US8225136B2 (en) Control method and storage device
US9727411B2 (en) Method and processor for writing and error tracking in a log subsystem of a file system
US20120117040A1 (en) Method and System for Verifying Data Stored on a Medium
CN106776122A (zh) 一种基于Flash启动过程中主备保护的方法
KR20170092537A (ko) 다수의 스토리지 디바이스에 걸친 원자 기입 동작의 수행
CN110399247B (zh) 一种数据恢复方法、装置、设备及计算机可读存储介质
WO2019210844A1 (zh) 存储设备异常检测方法及装置、分布式存储系统
US7849355B2 (en) Distributed object sharing system and method thereof
JP2002023966A (ja) 転送データを冗長化したディスクシステム
CN106844088B (zh) 一种raid存储系统的数据发送方法及装置
JP2005004753A (ja) データのバージョンチェックを行う方法及び装置
CN114974362A (zh) 存储控制器和存储控制器的操作方法
US7577804B2 (en) Detecting data integrity
CN107329699B (zh) 一种纠删重写方法及系统
CN108121509B (zh) 一种提高ssd读操作时raid效率的方法及ssd
CN105354107A (zh) NOR Flash的数据传输方法及系统
CN115129509A (zh) 一种数据传输方法、装置、介质
CN115658404A (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
GR01 Patent grant
GR01 Patent grant