CN106527983A - 一种数据存储方法以及磁盘阵列 - Google Patents

一种数据存储方法以及磁盘阵列 Download PDF

Info

Publication number
CN106527983A
CN106527983A CN201610944892.XA CN201610944892A CN106527983A CN 106527983 A CN106527983 A CN 106527983A CN 201610944892 A CN201610944892 A CN 201610944892A CN 106527983 A CN106527983 A CN 106527983A
Authority
CN
China
Prior art keywords
disk
array
time
write
data
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.)
Granted
Application number
CN201610944892.XA
Other languages
English (en)
Other versions
CN106527983B (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.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies 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 Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN201610944892.XA priority Critical patent/CN106527983B/zh
Publication of CN106527983A publication Critical patent/CN106527983A/zh
Application granted granted Critical
Publication of CN106527983B publication Critical patent/CN106527983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0656Data buffering arrangements

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)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种数据存储方法,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。

Description

一种数据存储方法以及磁盘阵列
技术领域
本发明涉及通信技术领域,特别涉及一种数据存储方法,本申请还特别涉及一种磁盘阵列。
背景技术
在现有技术中,存储服务器可以通过SAS(Serial Attached SCSI,即串行SCSI技术)控制器管理大量的磁盘。例如,存储服务器除本身管理的一组磁盘外,通过SAS线缆可以级联多级磁盘柜,管理所有这些磁盘,用于创建阵列,对外提供业务。
在实际的应用中发现,由于SAS控制器及磁盘这些底层处理的稳定性和可靠性不可控,一旦发生问题,将会对上层存储软件造成较大影响。特别的,在监控环境的应用中,由于SAS控制器、磁盘链路等综合因素导致大量磁盘短时间内出现问题,可能会导致出现大量磁盘同时对业务IO返回介质错误,但这些磁盘本身可能没有任何介质问题。一段时间过后,所有故障的磁盘都可以恢复到正常状态。但是,这种短暂的假性故障期间,如果阵列中有多块磁盘同时发生写介质错误,则有可能会导致阵列失败(一个条带两个或以上条块写失败)。
例如,由三块盘组成的RAID5(Redundant Array of Inexpensive Disks,廉价磁盘冗余阵列)阵列,在某一时刻所有磁盘都发生对写命令返介质错误问题,如果一个条带有多于一个条块发生写错误,此条带的命令将无法完成、对上层返回失败,阵列状态也将变为失败,上层流量中断。
在监控环境中,视频流是顺序IO模型,当存储底层发生这种问题时,非常容易产生一个条带多个写错误,导致命令返回失败、阵列失败。阵列失败之后,监控视频将无法继续存储,监控视频将会丢失,会带给用户的严重的损失。
在现有技术中,当出现上述问题时,RAID软件会按照阵列级别(RAID5、RAID6等)进行相应的处理。假设对于RAID5阵列,一个条带的一个条块发生写介质错误会导致阵列降级,申请热备盘进行重建;而一个条带的多于一个条块发生写介质错误,会导致命令返回失败、阵列变为失败状态,导致上层的流量中断。
发明人在实现本申请的过程中,发现现有技术中,至少存在以下问题:
底层的这种假的、短暂的大量磁盘介质错误,RAID软件按照阵列级别进行相应的处理,但是会大概率出现命令返回失败的情况,导致阵列变为失败状态。在监控环境中,监控视频将无法继续存储,监控视频将会丢失,会带给用户的严重的损失。
可见,如何避免由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,进而确保监控视频能够得以连续、完整、准确地储存,成为本领域技术人员亟待解决的技术问题。
发明内容
本发明提供了一种数据存储方法,用以避免由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,进而确保监控视频能够得以连续、完整、准确地储存。该方法应用于开启了写缓存的磁盘阵列中,所述磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,所述方法至少包括:
在接收到所述磁盘返回的对缓存数据的写入失败信息时,所述磁盘控制器判断所述磁盘发生故障的时间是否小于预设的第一时间阈值;
若判断结果为是,所述磁盘控制器保持所述磁盘阵列的状态不变,并向所述阵列缓存返回失败信息,其中,所述失败信息用于使所述阵列缓存继续储存所述缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送所述缓存数据。
优选的,所述缓存数据在所述失败信息到达所述阵列缓存的时间等于预设的第二时间阈值时,被所述阵列缓存发送给所述磁盘控制器。
优选的,所述判断所述磁盘发生故障的时间是否小于预设的第一时间阈值,具体为:
记录接收所述缓存数据的次数;
根据所述次数以及所述第二时间阈值确定所述磁盘发生故障的时间,并比较所述磁盘发生故障的时间与所述第一时间阈值的大小。
优选的,还包括:
若判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量小于预设的数量阈值,则将所述磁盘阵列的状态更改为降级状态,并对所述磁盘阵列进行重建;
若判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量不小于预设的数量阈值,则将所述磁盘阵列的状态更改为失败状态。
优选的,所述对所述磁盘阵列进行重建,具体为:
对所述磁盘的数据进行校验,并将校验出来的数据写入重建盘;
在接收到所述重建盘返回的写入失败信息时,判断所述校验出来的数据写入所述重建盘的次数是否小于预设的阈值;
若判断结果为是,则继续将所述校验出来的数据写入所述重建盘;
若判断结果为否,则确认所述重建盘发生介质错误,并更换新的重建盘进行重建。
相应的,本申请提出一种磁盘阵列,所述磁盘阵列开启了写缓存功能,所述磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,所述磁盘控制器包括:
判断模块,在接收到所述磁盘返回的对缓存数据的写入失败信息时,判断所述磁盘发生故障的时间是否小于预设的第一时间阈值;
保持模块,在判断结果为是时,保持所述磁盘阵列的状态不变,并向所述阵列缓存返回失败信息,其中,所述失败信息用于使所述阵列缓存继续储存所述缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送所述缓存数据。
优选的,所述缓存数据在所述失败信息到达所述阵列缓存的时间等于预设的第二时间阈值时,被所述阵列缓存发送给所述磁盘控制器。
优选的,所述判断模块具体用于:
记录接收所述缓存数据的次数;
根据所述次数以及所述第二时间阈值确定所述磁盘发生故障的时间,并比较所述磁盘发生故障的时间与所述第一时间阈值的大小。
优选的,所述磁盘控制器还包括:
重建模块,在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量小于预设的数量阈值时,将所述磁盘阵列的状态更改为降级状态,并对所述磁盘阵列进行重建,以及在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量不小于预设的数量阈值时,将所述磁盘阵列的状态更改为失败状态。
优选的,所述重建模块,具体用于:
对所述磁盘的数据进行校验,并将校验出来的数据写入重建盘;
在接收到所述重建盘返回的写入失败信息时,判断所述校验出来的数据写入所述重建盘的次数是否小于预设的阈值;
在判断结果为是时,继续将所述校验出来的数据写入所述重建盘;
在判断结果为否时,确认所述重建盘发生介质错误,并更换新的重建盘进行重建。
通过应用本申请的技术方案,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通的技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提出的一种储存方法的流程示意图;
图2为本申请具体实施例提出的一种储存方法的处理流程示意图;
图3为本申请具体实施例提出的一种磁盘阵列重建的流程示意图;
图4为本申请实施例提出的一种磁盘控制器的结构示意图。
具体实施方式
如背景技术所述,现有的磁盘阵列,由于SAS控制器、磁盘链路等综合因素可能会导致大量磁盘短时间内出现问题,但是这并不是磁盘自身的介质问题。一段时间过后,待SAS控制器、磁盘链路恢复正常,磁盘这种假性的问题也将会得到恢复。在现有技术中,会将磁盘这种短暂的、假性的故障认为是磁盘本身出现问题,而对磁盘阵列进行降级或重建处理。在监控环境的应用中,阵列失败之后,监控视频将无法继续存储,监控视频也将会丢失,会带给用户的严重的损失。
因此,为了避免由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,进而确保监控视频能够得以完整、准确地储存,本申请提出一种数据存储方法,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。
如图1所示,为本申请提出的一种数据存储方法的流程示意图,需要说明的是,本申请的步骤均需要在磁盘阵列开启写缓存功能后才能实现。并且,磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,视频数据首先写入磁盘阵列的阵列缓存,然后再通过磁盘控制器从阵列缓存写入到磁盘当中。具体的,本申请的流程至少包括以下的步骤:
S101,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值。
在本申请的实施例中,需要磁盘阵列开启写缓存功能。磁盘阵列在开启了写缓存功能之后,监控视频数据将首先写入到磁盘的阵列缓存中,然后再从阵列缓存写入到磁盘当中。
具体的,阵列缓存首先将缓存数据发送给磁盘控制器,磁盘控制器在接收到缓存数据后,再将缓存数据写入各磁盘当中。当磁盘对缓存数据的写入失败时,磁盘将会向磁盘控制器返回写入失败信息。
造成磁盘写入失败的原因主要由两种:其一,为磁盘的储存介质发生错误,在这种情况下,磁盘本身发生故障,并且故障一般难以恢复,因此磁盘阵列需要进行重建的处理,以恢复磁盘阵列的冗余性。
其二,是由于SAS控制器、磁盘链路等综合因素导致磁盘短时间内出现的假性介质故障问题,对于该类型的问题,磁盘本身的介质没有任何的故障,一段时间后,磁盘就能够自行的恢复,磁盘有能够重新的进行数据写入。在实际应用中,磁盘写入失败的原因大多数是有第二种情况造成的,本申请的技术方案也是针对第二种情况提出的。
因此,在本申请的实施例中,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器首先判断磁盘发生故障的时间是否小于预设的第一时间阈值。
对于磁盘的假性介质错误。磁盘能够自行的进行恢复,完全没有必要对磁盘阵列进行重建处理。本申请采取的方法是重复的将缓存数据写入磁盘,直到数据能够顺利的写入磁盘。因此,在本申请的实施例中,在接收到磁盘返回的数据写入失败信息时,磁盘控制器首先判断该磁盘发生故障的时间是否小于预设的第一时间阈值。
如果该磁盘发生故障的时间小于预设的第一时间阈值,则说明磁盘发生故障的时间还比较短,磁盘的故障可能是由假性磁盘介质故障导致的,磁盘能够自行的恢复。
如果该磁盘发生故障的时间不小于预设的第一时间阈值,则说明磁盘发生故障的时间已经超过了一般的假性故障时间,磁盘的故障很可能是由磁盘介质故障导致的,磁盘不能够自行的恢复。
在本申请的优选实施例中,第一时间阈值可以根据经验值进行设定,也可以通过实验测量磁盘的假性介质故障时间确定。
需要说明的是,上述提出的第一时间阈值的确定方法,只是本申请提出的一种优选实施方案,基于本申请的核心思想,本领域技术人员还可以采用其它第一时间阈值的确定方法,这并不会影响本申请的保护范围。
在本申请的优选实施例中,判断磁盘发生故障的时间是否小于预设的第一时间阈值,可以通过以下方法来实现。具体的包括以下的步骤:
(1)记录接收缓存数据的次数。
在本申请的优选实施例中,阵列缓存发送缓存数据的时间间隔是相同的,并且均等于预设的第二时间阈值。因此获取了接收缓存数据的次数后,就能够进一步获取磁盘故障的时间。
(2)根据接收缓存数据的次数以及第二时间阈值确定磁盘发生故障的时间,并比较磁盘发生故障的时间与第一时间阈值的大小。
首先根据缓存数据重复写入磁盘的次数确定磁盘故障的时间,再进一步判断判断磁盘发生故障的时间是否小于预设的第一时间阈值。
通过以上的方法,可知准确地确定磁盘发生故障的时间,进一步可判断判断磁盘发生故障的时间是否小于预设的第一时间阈值。
在本申请的优选实施例中,如果该磁盘发生故障的时间不小于预设的第一时间阈值,且磁盘阵列中发生故障的磁盘的数量小于预设的数量阈值,则将磁盘阵列的状态更改为降级状态,并对磁盘阵列进行重建。
如果该磁盘发生故障的时间不小于预设的第一时间阈值,且磁盘阵列中发生故障的磁盘的数量不小于预设的数量阈值,则将磁盘阵列的状态更改为失败状态。
如果该磁盘发生故障的时间不小于预设的第一时间阈值,这说明该磁盘已经长时间的发生故障,此时很有可能是磁盘本身的介质发生了问题。磁盘控制器将根据磁盘阵列中发生故障的磁盘的数量来对磁盘阵列的状态进行变更。
如果磁盘阵列中发生故障的磁盘的数量小于预设的数量阈值,则说明故障磁盘的数量还未超出磁盘阵列的容错能力,此时能够通过重建对磁盘阵列进行恢复。如果磁盘阵列中发生故障的磁盘的数量不小于预设的数量阈值,则说明故障磁盘的数量已经超出磁盘阵列的容错能力,此时只能将磁盘阵列的状态变更为失败。
需要说明的是上述的数量阈值是根据磁盘阵列的类型来确定的,例如,对于RAID5而言,其容错能力只允许有1块磁盘发生故障,因此数量阈值为2,对于RAID6而言,其容错能力只允许有2块磁盘发生故障,因此数量阈值为3。
然而磁盘的假性介质错误同样会发生在重建盘当中,如果重建盘发生假性介质错误,将会导致磁盘阵列误认为重建盘故障,而导致磁盘重建失败。
因此,为了避免由于重建盘的假性介质错误而导致的磁盘重建失败,在本申请的优选实施例中,将对磁盘阵列进行重建,可以通过以下的方法来实现。具体的,包括以下的步骤:
(1)对该磁盘的数据进行校验,并将校验出来的数据写入重建盘。
在读取了故障磁盘的数据后,对故障磁盘的数据进行校验。一般的校验方法为XOR(exclusive OR)校验。
在对检验成功时,则说明故障磁盘中数据可恢复。此时能够将故障磁盘中的数据写入重建盘。
(2)在接收到重建盘发送的写入失败信息时,判断校验出来的数据写入重建盘的次数是否小于预设的阈值。
同样的,在重建盘中也会存在磁盘介质的假性错误。当这种假性的磁盘介质错误发生时,会导致重建盘的数据写入失败。因此在本申请的优选实施例中,在接收到重建盘发送的写入失败信息时,首先判断该故障磁盘中的数据发送给重建盘的次数是否小于预设的阈值。
(3)若判断结果为是,继续将该故障磁盘中的数据发送给重建盘。
如果该故障磁盘中的数据发送给重建盘的次数小于预设的次数阈值,则说明重建盘发生故障的时间还比较短,重建盘的故障可能是由假性磁盘介质故障导致的,重建盘能够自行的恢复。
因此,此时继续将该故障磁盘中的数据发送给重建盘,直至数据得到正确的储存。
(4)若判断结果为否,确认重建盘发生介质错误,并更换新的重建盘进行重建。
如果该故障磁盘中的数据发送给重建盘的次数不小于预设的次数阈值,则说明重建盘发生故障的时间已经超出了一般的假性磁盘介质故障时间,重建盘的故障可能是由磁盘介质故障导致的,重建盘不能够自行的恢复。
因此,此时确认重建盘发生介质错误,需要重新的更换重建盘。
需要说明的是,上述将故障磁盘的数据写入重建盘的方法是对阵列中的每一个条带,依次执行的。首先读取阵列中其它磁盘此条带对应的条块的数据,进行异或,异或的结果写入重建盘此条带对应的条块,所有条带都重建完成后,重建盘角色变为数据盘,阵列状态恢复正常。
需要说明的是,上述将故障磁盘中的数据写入重建盘的方法,只是本申请提出的一种优选的实施方案,基于本申请的核心思想,本领域技术人员可以采用其他的方法,这并不会影响本申请的保护范围。
S102,如果磁盘发生故障的时间小于预设的第一时间阈值,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。
如果磁盘发生故障的时间小于预设的第一时间阈值,这说明该磁盘故障的时间还比较短,此时磁盘的故障很有可能是由假性磁盘介质故障导致的。一段时间过后,磁盘的故障能够自行的恢复,在磁盘恢复后,数据能够正常的储存到磁盘当中。
因此,在本申请的实施例中,如果磁盘发生故障的时间小于预设的第一时间阈值时,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。具体的,如果阵列原先处于正常状态,则保持为正常状态不变;如果阵列原先处于降级状态,则保持为降级状态不变。
其中,上述失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送缓存数据。
在本申请的优选实施例中,缓存数据在失败信息到达阵列缓存的时间等于预设的第二时间阈值时,将被阵列缓存发送给磁盘控制器。
在本申请的优选实施例中,阵列缓存在失败信息到达阵列缓存的时间等于预设的第二时间阈值时,将重新向磁盘控制器发送缓存数据。相应的,磁盘控制器在接收到缓存数据后,也将重新的将缓存数据写入磁盘中。
通过上述重复的将缓存数据写入磁盘的方法,在磁盘恢复正常后,缓存数据就能够正常的写入到磁盘当中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以完整、准确地储存。
需要说明的是,在现有技术中,当磁盘阵列中的磁盘发生缓存数据写入失败,且故障磁盘的数量在磁盘阵列的容错能力范围内时,磁盘控制器将会向阵列缓存返回成功消息,并将阵列的状态变更为降级状态。例如,RAID5阵列中有3块盘,其中2块盘返回写入成功,1块盘返回写入失败,则RAID5阵列返回写入成功消息给阵列缓存,阵列状态会变更为降级。可见,在现有技术中,无论磁盘是否发生真的故障,其处理是相同的。
而在本申请的方案中:不论阵列中有几块磁盘返回写入失败,在磁盘发生故障的时间小于预设的时间阈值时(此时,磁盘可能并非真的产生故障),磁盘控制器均会返回写入失败信息给阵列缓存,且保持阵列状态不变。此时阵列缓存将会重新的将缓存数据发送给磁盘控制器,磁盘控制器在收到缓存数据后也将重新将缓存数据写入磁盘中。
由以上具体流程的描述可知,通过应用本申请提出的技术方案,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。
为了进一步阐述本发明的技术思想,现结合具体的实施方式流程,对本发明的技术方案进行说明。
本申请主要针对在视频监控应用下,由于底层的这种假的、短暂的大量磁盘介质错误而导致磁盘阵列失败的问题,提出一种数据储存方法。RAID软件会进行容错优化处理,对发生写错误的命令进行重试,当磁盘都恢复正常时,命令重试便会成功,阵列状态不会改变,从而使得监控业务得以持续。
本申请需要配合阵列写缓存启用,以下实现均在此前提下。阵列写缓存中的数据何时刷到后端磁盘阵列,是由刷缓存策略决定的。为了性能的最优,数据在写入写换缓存后,不会立即刷到后端磁盘阵列,而是要达到条件时才会触发。其中,主要刷缓存策略有:
1、高低水位线刷缓存,阵列写缓存空间使用率达到高水位线H%时,触发向后端磁盘阵列刷数据,刷到低水位线L%时停止。
2、满条带刷缓存,阵列写缓存存在连续N个满条带,触发向后端磁盘阵列刷这部分数据。
3、老化刷缓存,数据在写缓存中存留时间达到老化时间M后,触发向后端磁盘阵列刷这部分数据。
创建阵列时,阵列写缓存对应的每种策略都会有默认值,可以根据具体业务模型,进行设置调整,以达到性能和稳定性最优。
基于以上的写缓存策略,本申请针对以下的几种具体情况,提出了相应的解决方案。
情况一、条带本身正常
处理业务写命令有一个或多个条块发生写错误,将命令返回失败,发生写介质错误磁盘不做任何处理,阵列状态保持不变。阵列写缓存收到底层返回的失败时,将不会丢弃缓存中的数据,根据刷新策略,稍后会继续重新下发此命令。如果磁盘恢复正常,则命令处理成功,命令返回成功,写缓存才丢弃数据。
如图2所示为情况一具体的处理流程,由图可知,当发生写缓存错误时,RAID阵列(本文将RAID阵列称为磁盘控制器)将返回失败。阵列写缓存在收到底层返回的失败时,将不会丢弃缓存中的数据,根据刷新策略,稍后会继续重新下发此命令。当磁盘正常运行时,RAID阵列将返回成功,数据将被成功的刷入到磁盘当中。
情况二、条带降级
处理业务写命令有一个或多个条块发生写错误,将命令返回失败,发生写介质错误磁盘不做任何处理,阵列状态保持不变。阵列写缓存收到底层返回失败,不会丢弃缓存中的数据,根据刷新策略,稍后会继续重新下发此命令,如果磁盘恢复正常,则命令处理成功,命令返回成功,写缓存才丢弃数据。
情况三、阵列正在重建或局部重建中
对业务写命令处理同上,返回失败,由阵列写缓存稍后进行重试。对于重建/局部重建命令,在写失败后进行一次或多次重试,重试均失败后方才触发踢重建/局部重建盘,重新申请热备盘进行重建。
具体的流程如图3所示,包括以下的步骤:
S301,对数据进行预读;
S302,对读取的数据进行XOR校验;
S303,校验成功后,将数据写入重建盘;
S304,判断重建盘是否写入成功,若否转到S305,若是转到S308;
S305,判断命令重试的次数是否小于预设的次数,若否转到S306,若是转到S303;
S306,命令处理失败,流程结束;
S307,命令处理成功,流程结束。
由上所述可知,无论阵列正常或降级,命令返回失败,写缓存就不会回收,会延后尝试不断刷到磁盘阵列。对返回失败的命令,写缓存有特定的刷缓存策略,主要是启动定时器,比如30S(同样参数可以设置调整),定时向后端阵列刷这部分数据,如果返回失败,会重新启动定时器,不断尝试刷这些数据。
由以上具体实施方式的描述可知,通过应用本申请提出的技术方案,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。
为了达到以上的技术目的,本申请提出一种磁盘阵列,所述磁盘阵列开启了写缓存功能,所述磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,如图4所示,所述磁盘控制器包括:
判断模块401,在接收到所述磁盘返回的对缓存数据的写入失败信息时,判断所述磁盘发生故障的时间是否小于预设的第一时间阈值;
保持模块402,在判断结果为是时,保持所述磁盘阵列的状态不变,并向所述阵列缓存返回失败信息,其中,所述失败信息用于使所述阵列缓存继续储存所述缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送所述缓存数据。
优选的,所述缓存数据在所述失败信息到达所述阵列缓存的时间等于预设的第二时间阈值时,被所述阵列缓存发送给所述磁盘控制器。
优选的,所述判断模块具体用于:
记录接收所述缓存数据的次数;
根据所述次数以及所述第二时间阈值确定所述磁盘发生故障的时间,并比较所述磁盘发生故障的时间与所述第一时间阈值的大小。
优选的,所述磁盘控制器还包括:
重建模块,在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量小于预设的数量阈值时,将所述磁盘阵列的状态更改为降级状态,并对所述磁盘阵列进行重建,以及在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量不小于预设的数量阈值时,将所述磁盘阵列的状态更改为失败状态。
优选的,所述重建模块,具体用于:
对所述磁盘的数据进行校验,并将校验出来的数据写入重建盘;
在接收到所述重建盘返回的写入失败信息时,判断所述校验出来的数据写入所述重建盘的次数是否小于预设的阈值;
在判断结果为是时,继续将所述校验出来的数据写入所述重建盘;
在判断结果为否时,确认所述重建盘发生介质错误,并更换新的重建盘进行重建。
由以上具体设备的描述可知,通过应用本申请提出的技术方案,在接收到磁盘返回的对缓存数据的写入失败信息时,磁盘控制器判断磁盘发生故障的时间是否小于预设的第一时间阈值;若判断结果为是,磁盘控制器保持磁盘阵列的状态不变,并向阵列缓存返回失败信息。其中,失败信息用于使阵列缓存继续储存缓存数据,并根据预设的刷缓存策略向磁盘控制器重新发送缓存数据。由于在磁盘故障的时间段内,磁盘控制器重复的向阵列缓存发送失败信息,使得缓存数据能够重复的写入磁盘中,在待磁盘恢复正常后,缓存数据就能顺利的储存到磁盘中。从而避免了由于短暂的大量磁盘假性介质错误而导致的磁盘阵列失败,确保监控视频数据能够得以连续、完整、准确地储存。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (10)

1.一种数据存储方法,其特征在于,应用于开启了写缓存的磁盘阵列中,所述磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,所述方法至少包括:
在接收到所述磁盘返回的对缓存数据的写入失败信息时,所述磁盘控制器判断所述磁盘发生故障的时间是否小于预设的第一时间阈值;
若判断结果为是,所述磁盘控制器保持所述磁盘阵列的状态不变,并向所述阵列缓存返回失败信息,其中,所述失败信息用于使所述阵列缓存继续储存所述缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送所述缓存数据。
2.如权利要求1所述的方法,其特征在于:
所述缓存数据在所述失败信息到达所述阵列缓存的时间等于预设的第二时间阈值时,被所述阵列缓存发送给所述磁盘控制器。
3.如权利要求2所述的方法,其特征在于,所述判断所述磁盘发生故障的时间是否小于预设的第一时间阈值,具体为:
记录接收所述缓存数据的次数;
根据所述次数以及所述第二时间阈值确定所述磁盘发生故障的时间,并比较所述磁盘发生故障的时间与所述第一时间阈值的大小。
4.如权利要求1所述的方法,其特征在于,还包括:
若判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量小于预设的数量阈值,则将所述磁盘阵列的状态更改为降级状态,并对所述磁盘阵列进行重建;
若判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量不小于预设的数量阈值,则将所述磁盘阵列的状态更改为失败状态。
5.如权利要求4所述的方法,其特征在于,所述对所述磁盘阵列进行重建,具体为:
对所述磁盘的数据进行校验,并将校验出来的数据写入重建盘;
在接收到所述重建盘返回的写入失败信息时,判断所述校验出来的数据写入所述重建盘的次数是否小于预设的阈值;
若判断结果为是,则继续将所述校验出来的数据写入所述重建盘;
若判断结果为否,则确认所述重建盘发生介质错误,并更换新的重建盘进行重建。
6.一种磁盘阵列,其特征在于,所述磁盘阵列开启了写缓存功能,所述磁盘阵列包括阵列缓存、磁盘以及磁盘控制器,所述磁盘控制器包括:
判断模块,在接收到所述磁盘返回的对缓存数据的写入失败信息时,判断所述磁盘发生故障的时间是否小于预设的第一时间阈值;
保持模块,在判断结果为是时,保持所述磁盘阵列的状态不变,并向所述阵列缓存返回失败信息,其中,所述失败信息用于使所述阵列缓存继续储存所述缓存数据,并根据预设的刷缓存策略向所述磁盘控制器发送所述缓存数据。
7.如权利要求6所述的磁盘阵列,其特征在于:
所述缓存数据在所述失败信息到达所述阵列缓存的时间等于预设的第二时间阈值时,被所述阵列缓存发送给所述磁盘控制器。
8.如权利要求7所述的磁盘阵列,其特征在于,所述判断模块具体用于:
记录接收所述缓存数据的次数;
根据所述次数以及所述第二时间阈值确定所述磁盘发生故障的时间,并比较所述磁盘发生故障的时间与所述第一时间阈值的大小。
9.如权利要求6所述的磁盘阵列,其特征在于,所述磁盘控制器还包括:重建模块,在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量小于预设的数量阈值时,将所述磁盘阵列的状态更改为降级状态,并对所述磁盘阵列进行重建,以及在判断结果为否,且所述磁盘阵列中发生故障的所述磁盘的数量不小于预设的数量阈值时,将所述磁盘阵列的状态更改为失败状态。
10.如权利要求9所述的磁盘阵列,其特征在于,所述重建模块,具体用于:
对所述磁盘的数据进行校验,并将校验出来的数据写入重建盘;
在接收到所述重建盘返回的写入失败信息时,判断所述校验出来的数据写入所述重建盘的次数是否小于预设的阈值;
在判断结果为是时,继续将所述校验出来的数据写入所述重建盘;
在判断结果为否时,确认所述重建盘发生介质错误,并更换新的重建盘进行重建。
CN201610944892.XA 2016-11-02 2016-11-02 一种数据存储方法以及磁盘阵列 Active CN106527983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610944892.XA CN106527983B (zh) 2016-11-02 2016-11-02 一种数据存储方法以及磁盘阵列

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610944892.XA CN106527983B (zh) 2016-11-02 2016-11-02 一种数据存储方法以及磁盘阵列

Publications (2)

Publication Number Publication Date
CN106527983A true CN106527983A (zh) 2017-03-22
CN106527983B CN106527983B (zh) 2020-06-19

Family

ID=58292198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610944892.XA Active CN106527983B (zh) 2016-11-02 2016-11-02 一种数据存储方法以及磁盘阵列

Country Status (1)

Country Link
CN (1) CN106527983B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874312A (zh) * 2018-05-30 2018-11-23 郑州云海信息技术有限公司 数据存储方法以及存储设备
CN109799960A (zh) * 2019-01-23 2019-05-24 郑州云海信息技术有限公司 一种提高存储系统稳定性的方法,系统,设备及可读存储介质
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174562A1 (en) * 2002-03-12 2003-09-18 Hitachi, Ltd. Disk control apparatus and its control method
CN1503224A (zh) * 2002-11-22 2004-06-09 华为技术有限公司 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法
CN1950792A (zh) * 2004-07-12 2007-04-18 株式会社东芝 存储器件和主机装置
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174562A1 (en) * 2002-03-12 2003-09-18 Hitachi, Ltd. Disk control apparatus and its control method
CN1503224A (zh) * 2002-11-22 2004-06-09 华为技术有限公司 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法
CN1950792A (zh) * 2004-07-12 2007-04-18 株式会社东芝 存储器件和主机装置
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874312A (zh) * 2018-05-30 2018-11-23 郑州云海信息技术有限公司 数据存储方法以及存储设备
CN109799960A (zh) * 2019-01-23 2019-05-24 郑州云海信息技术有限公司 一种提高存储系统稳定性的方法,系统,设备及可读存储介质
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质
CN111427859B (zh) * 2020-03-25 2024-04-05 京东科技控股股份有限公司 一种消息处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN106527983B (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
JP4754852B2 (ja) ストレージ制御装置および方法
JP4815825B2 (ja) ディスクアレイ装置及びその再構築方法
US7640452B2 (en) Method for reconstructing data in case of two disk drives of RAID failure and system therefor
CN102270161B (zh) 一种基于纠删码的多等级容错数据存储、读取和恢复方法
CN102508733B (zh) 一种基于磁盘阵列的数据处理方法及磁盘阵列管理器
CN106527983A (zh) 一种数据存储方法以及磁盘阵列
US20090106491A1 (en) Method for reducing latency in a raid memory system while maintaining data integrity
CN101436149B (zh) 磁盘阵列数据重建方法
CN102521058A (zh) Raid组磁盘数据预迁移方法
GB2414592A (en) Decreasing failed disk reconstruction time in a RAID data storage system
EP2271986B1 (en) Video media data storage system and related methods
US20060242540A1 (en) System and method for handling write commands to prevent corrupted parity information in a storage array
CN1746854A (zh) 用于控制存储的装置、方法和程序
CN107329708A (zh) 一种分布式存储系统实现缓存数据的方法及系统
CN110750213A (zh) 一种硬盘管理方法及装置
CN110399247A (zh) 一种数据恢复方法、装置、设备及计算机可读存储介质
US10324782B1 (en) Hiccup management in a storage array
CN106980468A (zh) 触发raid阵列重建的方法及装置
CN109032513B (zh) 基于ssd和hdd的raid架构及其备份、重建方法
CN113190377B (zh) 一种基于分布式存储系统的可靠冗余方法及设备
CN101251812A (zh) 一种应用于集群系统数据容错的方法
CN103593260A (zh) 一种元数据的保护方法和装置
KR101163265B1 (ko) 저장 시스템의 오류 허용오차 증가 방법, 저장 유닛 어레이의 오류 허용오차 증가 방법, 데이터 저장 시스템 및 데이터 처리 시스템
CN103544995B (zh) 一种坏道修复方法及装置
CN105138280A (zh) 数据写入方法、装置及系统

Legal Events

Date Code Title Description
C06 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