CN100407166C - 改善数据读取效率的方法及其储存系统 - Google Patents
改善数据读取效率的方法及其储存系统 Download PDFInfo
- Publication number
- CN100407166C CN100407166C CN2005100873526A CN200510087352A CN100407166C CN 100407166 C CN100407166 C CN 100407166C CN 2005100873526 A CN2005100873526 A CN 2005100873526A CN 200510087352 A CN200510087352 A CN 200510087352A CN 100407166 C CN100407166 C CN 100407166C
- Authority
- CN
- China
- Prior art keywords
- data
- reading requirement
- reading
- redundant data
- redundant
- 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
Images
Classifications
-
- 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
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Abstract
本发明是有关于一种改善数据读取效率的方法及其储存系统。其是传送一读取要求至储存装置后,开始对读取要求计时,若读取要求未在预设时间内成功读取数据,则透过产生与待读取数据相同的冗余数据来达成读取数据动作,且该读取要求在重建冗余数据时仍并行执行,使当其中一种方式先完成数据的读取,则以该种方式完成的数据回传给数据读取端。
Description
技术领域
本发明涉及一种读取储存数据技术,特别是涉及一种改善数据读取效率的方法及其储存系统。
背景技术
随着电脑系统的普及,人们越来越依赖电脑系统来处理事务,然而在透过电脑系统来处理事务时往往会产生一些数据,该等数据通常会被储存于一储存装置中。目前常见的储存装置有磁带(Tape)、磁碟机(Disk Drive)、可读写光碟(CD-R/W)、影音光碟(Digital Versatile Disc,DVD)等各种储存装置。然而,数据储存于储存装置一段时间后,由于该储存装置可能因为其本身的特性、寿命等缘故或其他操作上的因素(如连接线路不良),而造成无法由该储存装置读取数据,或着需要花费比较久的时间来成功读取数据。如此将会造成存取数据的效能降低。
请参阅图1所示,其显示习知读取数据示意图,其是以磁碟机作为储存装置,图1是包括主机11、磁碟机D1、D2、D3、D4。当主机11读取磁碟机D2中的数据D21时,磁碟机D2有可能发生问题(例如:磁碟机D2发生媒体错误(Media Error)等情形)而导致读取数据有一段时间无法回传至主机11。如此将使得整个系统的处理程序停在此一处理点。例如:应用在视讯播放系统时,当该视讯播放系统欲播放此一画面数据而开始读取储存装置中的画面数据时,若发生上述无法读取数据的情形,则将因磁碟机D2未送回读取画面数据而使得整个系统显示画面有可能停格数秒,直到成功读取画面数据或放弃读取该笔画面数据后,整个系统显示画面才会继续显示下一个画面。
虽然目前已有相关文献(例如:美国专利案号5758057)揭露在此这种情况时,是会于读取要求送至储存装置一段时间后,径行产生与待读取数据相同的冗余数据。
然而,在读取数据时会发生许多情况是目前技术无法克服的,下述是举出常见的例子。目标储存装置上可能已经有逾时未完成的读取要求,且其可能无法在短时间内完成读取要求,然而若由其他储存装置读取数据来产生与待读取数据相同的冗余数据时,若该等其他储存装置的至少一个已有逾时未完成的读取要求时,若此时再送出读取要求至该等其他储存装置(不是原目标储存装置),则仍必须再等待该逾时未完成的读取要求完成,如此将有可能需要花费更长的时间来完成重建与待读取数据相同的冗余数据,且将这些读取要求传送给该等其他储存装置反而会让这些储存装置有太多冗余读取而影响其正常的读取要求。
是故,如何提供一种改善由储存装置读取数据的效率的手段,已成为一亟需解决的课题。
本发明人基于从事此类产品设计制造多年丰富的实务经验及专业知识,并配合学理的运用,积极加以研究创新,以期创设一种新的改善数据读取效率的方法及其储存系统,能够改进一般现有的数据读取的方法及其储存系统,使其更具有实用性。经过不断的研究、设计,并经反复试作及改进后,终于创设出确具实用价值的本发明。
发明内容
本发明的目的在于,克服现有的数据读取的方法存在的缺陷,而提供一种改善数据读取效率的方法,所要解决的技术问题是使其能改善数据读取效率,从而更加适于实用。
本发明的另一目的在于,克服现有的储存系统存在的缺陷,而提供一种新型结构的改善数据读取效率的储存系统,所要解决的技术问题是使其具有新型结构而改善数据读取效率,从而更加适于实用。
依据本发明的一特色,所提供的改善数据读取效率的方法,包括下述步骤:一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;一产生冗余数据步骤,若该第一读取要求于该第一预设时间后未完成,则产生一与该第一数据相同的第一冗余数据;以及一回传数据步骤,若该第一冗余数据产生完成的时而该第一读取要求未完成,则回传该第一冗余数据至一需求端;若在该第一冗余数据产生的过程中,该第一读取要求先成功读取该第一数据,则回传该第一数据至该需求端。
依据本发明的一特色,所提供的改善数据读取效率的方法,是应用于有多同位数据(multi-parity)的一磁碟阵列(RAID)中,是包括下述步骤:一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;以及一产生冗余数据步骤,若该第一读取要求于该第一预设时间后未完成,则产生一与该第一数据相同的第一冗余数据,以供选择回传给一需求端;其中,该磁碟阵列具有多个同位数据(multi-parity),且于产生该第一冗余数据时,若所需读取的其他相关数据已足以产生该第一冗余数据,即使有其他相关储存装置的数据较慢回复,亦可予以忽略。
依据本发明的一特色,所提供的改善数据读取效率的方法,是包括下述步骤:一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;一第二判断步骤,若该第一读取要求于该第一预设时间后未完成,则判断具有与建立该第一数据所需的相关数据的其他相关储存装置是否具有逾时未完成的读取要求;以及一产生冗余数据步骤,若该其他相关储存装置具有逾时未完成的读取要求,则等待直到该其他相关储存装置没有逾时未完成的读取要求时,产生一与该第一数据相同的第一冗余数据;或者,若该其他相关储存装置没有逾时未完成的读取要求,则产生一与该第一数据相同的第一冗余数据,以供选择回传给一需求端。
依据本发明的一特色,所提供的储存系统,其具有一控制器,该控制器连接于一需求端与复数储存装置之间,该控制器依据该需求端的读取要求而送出一第一读取要求至储存有一第一数据的目标储存装置,该控制器包括一冗余数据产生单元,若该第一读取要求于一第一预设时间后未完成,则该冗余数据产生单元产生一与该第一数据相同的第一冗余数据,同时该第一读取要求亦持续进行,该控制器等待该第一冗余数据或该第一读取要求两者其中的一最早成功完成者,而回传该第一冗余数据或该第一数据的其中之一至该需求端。
借由上述技术方案,本发明改善数据读取效率的方法及其储存系统至少具有下列优点:
本发明是在储存装置读取要求送至储存装置一段时间后,开始透过产生冗余数据来提供一与待读取数据相同的冗余数据,且在产生冗余数据期间,若成功读取数据,则以读取的数据回传至存取要求应用端;若冗余数据已经产生,且目标储存装置未成功读取数据,则以冗余数据回传至存取要求应用端;若冗余数据已经产生,则控制器中止读取要求且以冗余数据回传至存取要求应用端。通过上述步骤能够改善数据读取效率。
综上所述,本发明特殊的改善数据读取效率的方法及其储存系统,确实改善了数据读取效率。其具有上述诸多的优点及实用价值,并在同类方法及产品中未见有类似的方法及结构设计公开发表或使用而确属创新,其不论在方法、产品结构或功能上皆有较大的改进,在技术上有较大的进步,并产生了好用及实用的效果,且较现有的数据读取效率的方法及其储存系统具有增进的多项功效,从而更加适于实用,而具有产业的广泛利用价值,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1是习知读取数据示意图。
图2是本发明的系统架构示意图。
图3A、3B及3C是本发明的动作流程图。
图3D是本发明的媒体错误修复程序的动作流程图。
图4是本发明的第一实例的示意图。
图5是本发明的第二实例的示意图。
图6是本发明的第三实例的示意图。
图7是本发明的第四实例的示意图。
图8是本发明的第五实例的示意图。
图9是本发明的第六实例的示意图。
11:主机 D1、D2、D3、D4:磁碟机
21:存取要求应用端 22:储存子系统
221:控制器 2211:控制单元
2213:冗余数据产生单元 222:储存设备
D5、D6、D7、D8、D9:磁碟机
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的改善数据读取效率的方法及其储存系统其具体实施方式、方法步骤、结构、特征及其功效,详细说明如后。
本发明改善数据读取效率的方法、控制装置、储存子系统及储存系统是能改善读取数据时发生储存装置未回传数据的情形,其中储存装置可为磁带(Tape)、磁碟机(Disk Drive)、记忆体(Memory)或光储存记录媒体(例如:可读写光碟(CD-R/W)、影音光碟(Digital Versatile Disc,DVD))或同一颗磁碟机中的不同读写头或其他等效的储存装置,亦即本发明所适用的储存装置具有下述特性:在复数个储存装置之间不会因为其中一个储存装置发生无法读取而造成其他装置无法读取。且该等储存装置所储存的数据间存在一种相互冗余(Redundant)的关系。
本发明在读取要求送至目标储存装置一预设时间后,若该读取要求未完成,则透过读取其他的相关储存装置,以产生与待读取数据相同的冗余数据(Redundant Data)(亦可称为重建(Regenerate)与待读取数据相同的数据),且前述的送至目标储存装置的读取要求与冗余数据的重建是可以并行进行。若其中一种方式先完成数据的读取,则以该种方式完成的数据回传给存取要求应用端,并取消尚未完成的另一种数据读取,以避免过多的冗余读取而降低正常的读取速度。例如:若送至原目标储存装置的读取要求先完成,则取消正在重建与待读取数据相同的冗余数据的程序;若冗余数据的重建比送至原目标储存装置的读取要求先完成,则取消原目标储存装置的读取要求;然而,在某些实施例中,有些储存装置的读取要求可能没有办法取消,因此必须等该储存装置完成读取动作。
另外,本发明并透过中止读取要求,来避免过多的冗余读取。例如:对于某些储存装置而言,其是有可能一次无法接收太多的读取要求,而存取要求应用端却有可能一次会有多个读取要求,因而对该特定储存装置而言,其将有可能无法接收所有的读取要求。因此这些无法送至储存装置的读取要求会先被置放于记忆体内并以先进先出(First In First Out,FIFO)或其他排列方式排序,以等候该储存装置可接收读取要求时,再送给该储存装置,要取消这些被暂时置放的读取要求只要将排序于记忆体内的读取要求删除。
本发明在产生与待读取数据相同的冗余数据前,会先判断具有与待读取数据相关的其他储存装置上是否有逾时未完成的读取要求,直到该等其他储存装置没有逾时未完成的读取要求时,才开始进行冗余数据产生动作。本发明产生冗余数据的方式可透过互斥或运算(XOR Operation)、读取镜像的备援数据或其他各种可以获得与待读取数据相同的等效手段来进行。此外,为了方便说明本发明的特征,本发明中的储存装置是以磁碟机为例,但在实际的应用中,储存装置不限制为磁碟机,可为任何可达成等效目的的储存装置。
图2显示本发明实施例的系统架构示意图,其是包括存取要求应用端(Application I/O Request Unit)21与储存子系统22,其中存取要求应用端21可为一主机(Host)或需要读取储存系统中的数据的应用设备,储存子系统22包括控制器221与储存设备222。控制器22则更包括控制单元2211,该控制单元2211具有冗余数据产生单元2213。储存设备222具有复数个磁碟机D5、D6、D7及D8。在本发明的实施例中,控制单元2211内并设有复数个与该等磁碟机D5、D6、D7及D8相对应的伫列(Queues)Q5、Q6、Q7及Q8,其是用以存放暂时无法送至该等磁碟机D5、D6、D7及D8的读取要求。当然,在其他实施例中,该等伫列Q5、Q6、Q7及Q8亦可能位于该等磁碟机D5、D6、D7及D8上。
当上述的存取要求应用端21为一主机时,是可透过储存区域网路(SAN)、乙太网路(区域网路(LAN))或序列先进技术(Serial ATA,SATA)介面、光纤通道(Fiber Channel,FC)、小型电脑标准介面(Small ComputerSystem Interface,SCSI)等传输介面或PCI Express等输出入(I/O)介面与储存子系统22相连接。而在一些场合中,存取要求应用端21可为一特殊积体电路(IC)或其他能够送出输出入读取要求的等效装置,其是能依据其他装置的命令(或请求)而送出输出入读取要求至控制器221,使供透过控制器221读取储存设备222中的数据。
上述的储存子系统22中的控制器221及储存设备222可同时包括于一箱体(Enclosure)中,亦可独立分开而容置于不同的箱体中。控制器221可透过序列连接SCSI(Serial-Attached SCSI,SAS)、SCSI、SATA、平行ATA(PATA,或称IDE)等传输介面来与储存设备222相连接,储存设备222中的该等磁碟机D5、D6、D7及D8可为SCSI、SATA、PATA、FC等各种不同类型的磁碟机。上述的控制器221是可为磁碟阵列控制器(RAIDController)或是具有能够产生冗余数据(Redundant Data)的储存系统的控制器,其中磁碟阵列技术广义地包括RAID1~6及其延伸与组合;其中,在本发明中RAID6是指具有复数个同位数据的磁碟阵列组态。
控制单元2211中的冗余数据产生单元2213是能产生(重建)与待读取数据相同的冗余数据,在本实施例中,是以RAID4为说明,所以在RAID4中的冗余数据产生单元2213是透过互斥或运算来产生冗余数据。当然,在其他实施例中,冗余数据产生单元2213亦可采用其他各种手段来达到提供与待读取数据相同的冗余数据的功效,且冗余数据产生单元2213亦可视需求而设计于控制单元2211的外部。此外,在其他实施例中,亦可采用其他等效的模组来取代冗余数据产生单元2213,以提供一与待读取数据相同的冗余数据。在某些实施例中,是能透过读取备援数据方式来成为与待读取数据相同的冗余数据,则此时冗余数据产生单元2213或其他等效的产生模组可不设置。
图3A、图3B、图3C显示本发明较佳实施例的动作流程图,有关其说明,敬请一并参照图2。当存取要求应用端21送出一读取输出入(I/O)要求至储存子系统22时,储存子系统22的控制器221是先接收该读取输出入要求(步骤S301)。继而,控制器221对该读取输出入要求进行处理,使供产生至少一个用以在相对应目标磁碟机上读取数据的读取要求,以发送(Dispatch)至储存设备222中的该等磁碟机D5、D6、D7及D8中的至少一个目标磁碟机,使能由该等磁碟机D5、D6、D7及D8中读取数据(步骤S302)。
接着,控制器221设定一第一预设时间(例如:160ms)(步骤S309),并将该读取要求送至目标磁碟机(步骤S310)。在本实施例中,预设时间可以根据磁碟机实际的I/O状态来动态调整,亦可以为事先计算的参数设定。另外,在本实施例中,控制器221将读取要求送至目标磁碟机(或其他非目标磁碟机)时,若目标磁碟机因其本身的特性而无法接收读取要求,则此时读取要求会被暂时置放于记忆体内,且被排序来等候,以等候目标储存装置可接收读取要求时,再送给该目标储存装置,当然,在其他实施例中,读取要求亦可能以其他方式排序于记忆体中。上述的目标磁碟机本身的特性例如为:有些目标磁碟机一次仅能接收一个输出入要求以执行数据存取,若此时该目标磁碟机正在执行数据存取,则其便无法再接收新的读取要求;而有些目标磁碟机一次是能接收复数个输出入要求(例如:5个)以执行数据存取,若此时该目标磁碟机正执行5个输出入要求,则其便无法再接收新的读取要求。在本实施例中,上述的记忆体是可包括于控制器221内(图未示),其部份空间可用来规划为上述的该等伫列Q5、Q6、Q7及Q8,以用来暂时置放无法被目标储存装置接收的读取要求。当然,在其他实施例中,读取要求亦可以置放于目标储存装置上,以等候目标储存装置执行该读取要求。
控制器221在送出读取要求时,即开始对发送的读取要求计时,若读取要求未能在第一预设时间(例如:160ms)内完成,则进行冗余数据产生阶段,并于送出读取要求后,判断该目标储存装置有无逾时未完成的读取要求(步骤S311、S315)。若目标储存装置有逾时未完成的读取要求,且其他可产生冗余数据的相关储存装置没有逾时未完成的读取要求,则不等待第一预设时间的逾时,视为逾时(Timeout)已发生,直接进入冗余数据产生阶段。若目标磁碟机在第一预设时间(160ms)内完成读取要求,则控制器221会结束该读取要求的第一预设时间的计时,并执行图3C中的该等步骤(有关其详细说明,敬请参照图3C)。
由于习知的控制器仅会等待磁碟机回传读取数据,若磁碟机发生故障或因其他缘故而无法立即回传数据给控制器时,控制器仍然持续等待磁碟机回传数据,如此将使得读取效率降低,因此,本发明在送出读取要求至目标磁碟机后,若该目标磁碟机在经过第一预设时间后未完成该读取要求,则立即开始准备产生冗余数据。此外,目标磁碟中若已经有逾时未完成的读取要求,则新发送的读取要求势必会先被存在伫列Q5、Q6、Q7及Q8中等待执行,此时再等待第一预设时间就显得意义不大;且当该磁磷机有一段时间无法回复,将造成此段时间所有的输出/输入要求(I/O request)均必须增加等候一等待逾时(Timeout)时间。因此,为加强执行的效率,本实施例在送出读取要求至目标磁碟机后,若发现目标磁碟中已经有逾时未完成的读取要求,则不等待第一预设时间,径自进入产生冗余数据的程序。在本实施例中,产生冗余数据的方式是透过互斥或运算及读取与待读取数据相关的其他数据来进行。
所以,须先判断具有与该待读取数据相关的其他磁碟机上是否具有逾时未完成的读取要求(步骤S312),是因该等相关的其他磁碟机上没有逾时未完成的读取要求时,才可由其读取数据,因此在产生冗余数据之前须先进行此一判断,以避免与该待读取数据相关的其他数据的读取要求直接送至该等其他磁碟机,而造成过多的冗余读取要求,进而影响整体效能。若该等其他磁碟机的至少一个磁碟机具有逾时未完成的读取要求,则设定一第二预设时间(例如:50ms),并判断该等其他磁碟机是否能在第二预设时间完成其读取要求(亦即每隔50ms检查一次该等其他磁碟机是否具有逾时未完成的读取要求);无论在第一预设时间或第二预设时间的等待时间,皆持续判断已发送至目标磁碟机的读取要求是否完成。若该等其他磁碟机在50ms后仍未完成其逾时未完成的读取要求,且目标磁碟机在50ms内亦未完成其读取要求,则再继续判断该等其他磁碟机及/或目标磁碟机是否能在另一个50ms完成(步骤S313、S315、S311、S312)。若该等其他磁碟机在设定的时间内完成其逾时未完成的读取要求,而目标磁碟机仍未完成其读取要求;或若该等其他磁碟机皆没有逾时未完成的读取要求时,控制器221是开始产生与待读取数据相同的冗余数据(步骤S314)。若在该等其他磁碟机等待其逾时未完成的读取要求完成的期间(例如:第40ms或第70ms时),目标磁碟机完成读取要求,则控制器221将停止执行下一个产生冗余数据的步骤S314,改而执行图3C中的该等相关的步骤,有关其说明,请参照图3C的处理。在某些实施例中,上述的第二预设时间亦可以不设定,超过第一预设时间后,只要等待至其他相关的磁碟机没有逾时读取要求,即可以开始产生与待读取数据相同的冗余数据,不需等待一固定时间。
图3B是显示本发明冗余数据产生程序的流程图,当开始执行冗余数据的产生时(步骤S300),须先得到与待读取数据有关的相关数据(例如:与待读取数据对应到同一储存分割带(stripe)的相关数据),然后再透过互斥或运算,产生与待读取数据相同的冗余数据(步骤S318)。得到上述相关数据的方法有数种,较有效率的方式是先至快取(cache)中读取该相关数据,若快取中现有的数据足以提供产生该冗余数据,则不需再到磁碟机中读取数据;若快取中现有的数据不足以产生与待读取数据相同的冗余数据,则再到对应的磁碟中读取其缺少的部分。当然,在其他实施例中,控制器221亦可忽略快取(cache)的存在,直接对该目标磁碟机以外的其他磁碟机下读取要求,以读取产生冗余数据所需的相关数据。在RAID5的应用,若已经有一颗储存装置无法读取(可能已经故障),此时又有一颗储存装置发生读取逾时(Timeout),则将无法产生冗余数据。若是磁碟阵列的型态是RAID6、或其他具有多同位数据(multi-parity)的磁碟阵列组态,则可以选择只对足以产生冗余数据的磁碟机数量下读取要求即可,若是那些下读取要求的其他磁碟机亦发生有读取逾时的状况,则可再对其他之前还未下读取要求的磁碟机下读取要求,以凑足产生该冗余数据所需的数据。同样是RAID6的组态,另一种情况是选择对所有目标磁碟机以外的其他磁碟机下读取要求,但只要取得足以产生冗余数据的相关数据,即利用该相关数据产生冗余数据,至于其他较晚回复或未回复的数据可予以忽略。
在执行完冗余数据产生步骤S318后,控制器221判断是否成功产生冗余数据(步骤S320),若成功地产生冗余数据,则控制器221判断先前送至目标磁碟机的读取要求是否执行完成(步骤S330)。若先前送至目标磁碟机的读取要求已执行完成,则控制器221再判断该读取要求是否成功读取数据(步骤S331),若该读取要求成功读取数据,则控制器221丢弃其所产生的冗余数据,并停止后续的相关读取数据操作(步骤S334);若该读取要求没有成功读取数据,则控制器221回传其所产生的冗余数据至存取要求应用端21(步骤S332)。
若送至目标磁碟机的读取要求尚未执行完成,则控制器221中止(Abort)该读取要求(步骤S333);其中该读取要求是有可能暂时被存放在配置于记忆体的伫列中等候,或着该读取要求有可能暂时被存放在目标磁碟机中而尚未被执行,或着该读取要求正在被目标磁碟机执行。然而在某些实施例中,正在被目标磁碟机执行的读取要求有可能无法被中止,例如:某些SATA磁碟机,在实际应用上,若采用此类无法支援中止正在执行的读取要求的储存装置,则控制器221会等待储存装置完成读取要求;而在某些实施例中,正在被目标磁碟机执行的读取要求可以被中止,例如:SCSI磁碟机。接着,控制器221回传其所产生与待读取数据相同的冗余数据至存取要求应用端21(步骤S332)。
若控制器221读取其他相关数据失败而没有成功地产生冗余数据(或者因其他因素而没有成功地产生冗余数据),则控制器221判断送至目标磁碟机的原始读取要求是否已完成(步骤S321)。若该原始的读取要求尚未完成,则控制器221等待该原始的读取要求完成数据读取(步骤S334)。若该原始的读取要求已完成,则控制器221再判断该原始的读取要求是否已成功地读取数据并已回传读取数据至存取要求应用端21(步骤S324),若是,则结束此次的数据读取动作(步骤S334)。若原始的读取要求已完成但没有成功读取数据,则控制器221回传一错误讯息至存取要求应用端21,并结束此数据读取动作(步骤S328、S334)。
在上述控制器221产生冗余数据的过程中,目标磁碟机有可能随时完成原始读取要求的情形。图3C显示读取要求完成(包括:成功读取数据、磁碟机故障(Drive Fail)或储存媒体错误(Media Error))时,控制器221进行相关操作的流程图。当读取要求完成时(步骤S340),控制器221会判断读取要求完成动作是否成功读取数据(步骤S342)。
若该执行完成的读取要求是成功地读取数据,则判断目前是否完成冗余数据的建立(步骤S344),若控制器221目前仍在产生冗余数据,则控制器221中止该产生冗余数据的操作(步骤S345),并回传成功读取的数据至存取要求应用端21(步骤S348)。若控制器221已完成冗余数据重建的步骤,则此时判断冗余数据是否有成功重建且回传至存取要求应用端21(步骤S346),若是,则控制器221停止其后续动作(步骤S362),若否,则控制器221回传其所读取的数据至存取要求应用端21(步骤S348),且结束此次读取动作(步骤S362)。
若该执行完成的读取要求没有成功读取数据,则控制器221判断无法成功读取数据是否因为媒体错误(Media Error)的缘故(步骤S352),若是因为媒体错误的原因,则判断该媒体是否允许写入数据,若是可以写入的储存装置,则启始一媒体错误修复程序(步骤S354)。
继而,控制器221判断该执行完成且没有成功读取数据是否已经逾时(例如:超过第一预设时间)且正在进行冗余数据产生步骤(S314)(步骤S355、S356),若是,则等待其产生冗余数据(步骤S362);若该执行完成且没有成功读取数据的读取要求已逾时且重建冗余数据亦没有成功,则回传一错误讯息至存取要求应用端21(步骤S358),并结束此次读取动作(步骤S362)。
如上所述,若该读取要求在第一预设时间内执行完成,但其没有成功读取数据,则控制器221开始进行冗余数据产生程序(步骤S314),有关其详细说明,敬请参照图3B。
有关媒体错误修复程序(S3540)的说明敬请参照图3D,首先,控制器221产生与该读取数据相同的冗余数据(步骤S3541),继而判断是否成功产生冗余数据(步骤S3542),若能成功产生冗余数据,则将其写入该待读取数据的位址,以保护该笔数据(步骤S3544),继而结束该媒体错误回复程序(步骤S3546)。若无法成功产生冗余数据,则结束该媒体错误修复程序(步骤S3546)。
上述的图3C中的该等读取要求完成步骤是与图3A及图3B中的步骤相关且具有互相影响的关系,亦即控制器221在送出读取要求且经过第一预设时间后,其是可藉由产生冗余数据动作来产生与待读取数据相同的冗余数据(有关其说明,请参照图3A及3B),且其亦等待目标储存装置能完成读取要求以回传待读取数据(有关其说明,请参照图3C)。若控制器221成功产生与待读取数据相同的冗余数据且读取要求未能被目标磁碟机执行完成,则控制器221回传该冗余数据至存取要求应用端21;若在超过第一预设时间后,目标磁碟机完成读取要求且成功读取数据,而控制器221未成功产生冗余数据,则控制器221回传该目标磁碟机成功读取的数据。所以,控制器221是会依据上述两种方式的先完成者来回传数据至存取要求应用端21,且其亦会对另一个未完成的作动进行相关处理。
下述将举出本发明在实际实施时常遇到的几种例子,当然,有许多例子是无法一一列举,有关本发明的实施,请参照图3A~3C。
有关本发明的第一实例,敬请一并参照图2、图3A、图3C及图4,图4是本发明第一实例的示意图,在本实例中,是揭露目标磁碟机读取正常时的情形。当存取要求应用端21送出一读取32K位元组数据的读取输出入要求至储存子系统22时,控制器221先接收读取输出入要求,并产生分别读取16K位元组数据的第一读取要求与第二读取要求,以读取目标磁碟机D5中的数据D51及目标磁碟机D6中的数据D61(步骤S301、S302)。继而,控制器221设定第一预设时间(例如:160ms),并将该等读取要求发送至与目标磁碟机D5及D6相对应的伫列Q5及Q6,由于本实例中目标磁碟机D5及D6没有逾时未完成的读取要求,且伫列Q5及Q6中亦没有在等候排对的其他读取要求,因此被送至伫列Q5及Q6的第一读取要求及第二读取要求是立即被目标磁碟机D5及D6执行(步骤S309、S310)。
控制器221在发送该等读取要求至目标磁碟机D5、D6(有可能先存放于伫列Q5及Q6一段时间)后,是开始分别对第一读取要求及第二读取要求计时,使供判断该等读取要求是否能够在160ms内执行完成。在本实例中,目标磁碟机D5、D6皆在160ms内完成第一读取要求及第二读取要求(步骤S340),并成功读取数据D51及数据D61,且将其回传控制器221,继而控制器221执行步骤S342、步骤S344、步骤S346及步骤S348,以将成功读取的数据回传给存取要求应用端21。由于本实例中控制器221没有因其他动作而导致中止该等读取要求的情形,且控制器221亦没有进行冗余数据产生动作,所以控制器221是将该等目标磁碟机回传的数据回传至存取要求应用端21,以完成数据读取动作。
有关本发明的第二实例,敬请参照图2、图3A、图3B及图5,图5是本发明第二实例的示意图,在本实例中,是揭露读取要求在送至目标磁碟机后经过一段时间仍未完成,控制器221透过产生冗余数据来提供与待读取数据相同的冗余数据的情形。本实例的作动情形是与第一实例相类似,唯,控制器221产生的第一读取要求与第二读取要求分别发送至目标磁碟机D5及D7,以读取数据D51及数据D71。在本实例中,目标磁碟机D5在160ms内完成该第一读取要求而成功读取数据D51,然而目标磁碟机D7却未能在第一预设时间(例如:160ms)内完成第二读取要求(其原因有可能为目标磁碟机D7的读取速度比较慢、或该笔数据D71所在磁碟机位置有问题、或目标磁碟机D7已经故障(Fail)、或目标磁碟机D7已经被拔掉(PlugOut)、或目标磁碟机D7上具有逾时未完成的读取要求而使得第二读取要求仍存放在伫列Q7中等候而未被目标磁碟机D7执行)。
因此控制器221在第二读取要求逾时之后,开始准备产生与待读取数据D71相同的冗余数据。但此时该已送出的第二读取要求仍会按照既定程序而继续被处理,例如:若目标磁碟机D7已经在执行第二读取要求,但因其读取速度稍慢,则此时第二读取要求不会因控制器221执行产生冗余数据步骤而被中止;或着,仍被存放在伫列Q7中的第二读取要求,此时将会继续被存放在伫列Q7中等候,
等候目标磁碟机D7可以接收读取要求时,该第二读取要求才会被目标磁碟机D7执行。
控制器221在产生冗余数据动作前,是先判断其他具有与数据D71相关的数据的其他磁碟机D5、D6及D8是否有逾时未完成的读取要求(步骤S312),在本实例中,产生冗余数据动作是以RAID3~5中的互斥或运算来进行,当然在其他实例中,产生冗余数据动作不限制于RAID3~5,只要该等储存装置间具有相互冗余的关系,且能透过其他装置来提供与待读取数据相同的数据即可。在本实例中,该等磁碟机D5、D6及D8没有逾时未完成的读取要求,所以控制器221开始读取与数据D71位于相同储存分割带(Stripe)的其他相关使用者数据(User Data)D51、D61及同位数据P1。
控制器221在读取使用者数据D51、D61及同位数据P1后,接着透过冗余数据产生单元2213来对该等使用者数据D51、D61及同位数据P1进行互斥或运算。由于数据D71与使用者数据D51、D61及同位数据P1位于同一个储存分割带(Stripe),所以:
因此,控制器221透过冗余数据产生单元2213对该等使用者数据D51、D61及同位数据P1进行互斥或运算,以获得与数据D71相同的冗余数据(步骤S318)。在某些实施例中,由于上述使用者数据D51于之前已被读取成功,因此其将会被暂时存放于快取中,是故,在产生冗余数据时,可以不用再次重复读取,而可直接透过快取中的数据来获得。
如上所述,控制器221在产生冗余数据动作时,若目标磁碟机D7继续执行第二读取要求,目标磁碟机D7有可能于控制器221还在产生该冗余数据动作时完成该第二读取要求而成功读取数据D71,则控制器221将直接回传成功读取的数据至存取要求应用端21,并停止产生冗余数据动作。当然,目标磁碟机D7亦有可能早已故障而没有任何回应。在本实例中,是在目标磁碟机D7仍未回传数据D71之前,冗余数据成功地产生,是故控制器221将其所产生的冗余数据回传至存取要求应用端21,当目标磁碟机D7完成第二读取要求后(成功读取数据),因存取要求应用端21所要读取的数据已回传,因此将此读取的数据作废。但,如果此笔数据是因媒体错误而造成的,则进行一媒体错误的修复机制来重新写入正确的数据,以保护此笔数据。
有关本发明的第三实例,敬请参照图2、图3A、图3B、图3C及图6,图6是本发明第三实例的示意图,本实例中,是揭露目标磁碟机经过一段时间未回应后,控制器221产生冗余数据动作前,判断其他非目标磁碟机上具有逾时未完成的读取要求的情形。本实例的作动情形是与第二实例相类似,控制器221在产生冗余数据动作前,是先判断其他磁碟机D5、D6及D8是否有逾时未完成的读取要求(步骤S312),在磁碟机D6中具有一逾时未完成的读取要求,其是用以读取数据D62。所以,控制器221此时设定第二预设时间(例如:50ms),并等待该磁碟机D6在50ms后是否能完成其读取要求以及目标磁碟机D7是否能在50ms内完成该第二读取要求,若磁碟机D6在经过50ms后仍未完成其读取要求,且目标磁碟机D7亦未能在50ms内完成第二读取要求,则控制器221继续等待磁碟机D6与目标磁碟机D750ms,直到磁碟机D6或目标磁碟机D7完成其读取要求(步骤S311、S312、S313、S315)。
当其他磁碟机D5、D6及D8没有任何逾时未完成的读取要求后,控制器221开始读取与数据D71相关的使用者数据D51、D61及P1,有关其产生冗余数据动作与上述实例相类似,故不再详细说明。若控制器221在产生冗余数据动作时(步骤S318),目标磁碟机D7完成第二读取要求而成功读取数据D71,此时控制器221执行步骤S342、S344、S346及步骤S348,以将目标磁碟机D7成功读取的数据D71回传至存取要求应用端21。当然,在其他实例中,目标磁碟机D7成功读取数据D71后,控制器221所执行的产生冗余数据动作亦在之后完成,则此时控制器221回传成功读取的数据D71至存取要求应用端21,并将其所产生的冗余数据丢弃。
然而,如同上述说明,控制器221在经过至少第一预设时间后是开始准备产生与待读取数据相同的冗余数据,若控制器221成功地产生与待读取数据D71相同的冗余数据,且此时送至目标磁碟机D7的读取仍未完成,则控制器221会中止该读取要求,并回传其所产生的冗余数据至存取要求应用端21(步骤S333、S332)。
有关本发明的第四实例,敬请一并参照图2、图3A、图3B、图3C及图7,图7是本发明第四实例的示意图,在本实例中,是揭露控制器221在产生冗余数据动作时无法成功产生冗余数据的情形。与上述实例相类似,当存取要求应用端21送出读取输出入要求至储存子系统22时,控制器221将该读取输出入要求转换成至少一个读取要求(步骤S302),在本实例中,存取要求应用端21发送的读取输出入要求是被控制器221转换成第一读取要求及第二读取要求,以发送至目标磁碟机D6及D7。接着,控制器221设定第一预设时间(例如:160ms)后,并将第一读取要求及第二读取要求发送至目标磁碟机D6及D7以分别读取数据D61及D71(步骤S301、S302、S309及S310)。
控制器221在发送第一读取要求及第二读取要求至目标磁碟机D6及D7后,是开始分别对该第一读取要求及该第二读取要求计时,以判断其是否能够在160ms内执行完成(步骤S311及S315)。在本实例中,第一读取要求在160ms内成功地完成读取数据D61,而目标磁碟机D7在经过160ms后仍未完成第二读取要求。
所以控制器221开始准备对数据D71产生与其相同的冗余数据,在本实例中,其他磁碟机没有逾时未完成的读取要求,所以控制器221开始读取与数据D71相关的数据D51、D61及同位数据P1,然而于本实例中,当要读取数据D51时磁碟机D5发生故障(Fail),所以控制器221无法藉由数据D61及同位数据P1来成功产生与数据D71相同的冗余数据(步骤S318、S320)。继而,控制器221判断送至目标磁碟机D7的原始读取要求是否执行完成(步骤S321)。若此时原始读取要求(第二读取要求)未完成,则控制器221结束冗余数据的建立(步骤S334),并等待第二读取要求的完成(步骤S340)。若于目标磁碟机D7上的第二读取要求已被执行完成,则控制器221判断该第二读取要求是否已成功地读取数据(步骤S324)。若该第二读取要求并没有成功读取数据,则控制器221回传错误讯息至存取要求应用端21(步骤S328)。若该第二读取要求成功读取数据,则控制器221结束此次读取数据动作(步骤S334)。
有关本发明的第五实例,敬请一并参照图2、图3A、图3B、图3C及图8,图8是本发明第五实例的示意图,在本实例中,是揭露两个读取要求逾时后(超过第一预设时间)而未完成的例子。在本实例中,存取要求应用端21发送的读取输出入要求是被控制器221转换成第一读取要求及第二读取要求以读取数据D61及D71,继而被发送至目标磁碟机D6及D7(步骤S301、S302、S309及S310)。
然而,在第一预设时间后(160ms),第一读取要求及第二读取要求仍未执行完成,则控制器221执行步骤S312,以判断与目标磁碟机具有冗余关系的其他磁碟机是否具有逾时未处理读取要求,例如:对于目标磁碟机D6而言,是判断磁碟机D5、D7及D8是否具有逾时未处理读取要求;对于目标磁碟机D7而言,是判断磁碟机D5、D6及D8。在本实例中,目标磁碟机D7是在第200ms完成第二读取要求,若目标磁碟机D6未能在210ms完成读取,则开始产生与数据D61相同的冗余数据(请参照图3B)。
因此,虽然有两台目标磁碟机超过第一预设时间而未完成读取要求,控制器221是会分别判断与目标磁碟机相关的其他磁碟机是否具有逾时未处理读取要求,使当该等其他磁碟机没有逾时未处理读取要求时,再产生与待读取数据相同的冗余数据。
有关本发明的第六实例,敬请一并参照图2、图3A、图3B、图3C及图9,图9是本发明第六实例的示意图,在本实例中,是揭露具有两个同位数据碟D8、D9的磁碟阵列,其控制器221计算冗余数据的情形。基本上,本实例的动作情形与上述各实例相类似,最大不同处是本实例中的磁碟阵列具有两个同位数据碟D8、D9,因此控制器221可以选择只对足以产生冗余数据且须读取的磁碟机下读取要求;或是,对除了逾时没有回应的磁碟机以外的所有磁碟机下读取要求,但只要有足够的数据回传,即可进行冗余数据产生作业,不需等待所有其他磁碟机的数据回传。
举例来说,若存取要求应用端21发送的读取输出入要求被控制器221转换成第一读取要求及第二读取要求以读取数据D51及D61,继而被发送至目标磁碟机D5及D6(步骤S301、S302、S309及S310)。经过第一预设时间后(160ms),第一读取要求完成,但第二读取要求未完成。此时控制器221判断具有与建立数据D61所需读取的相关数据的其他相关储存装置是否有逾时未完成的读取要求(步骤S312);于本实例中,只要磁碟机D5、D7、D8、D9中任三个没有逾时未完成的读取要求,即可进入冗余数据产生程序(步骤S314),以产生与数据D61相同的冗余数据。若是磁碟机D5、D7、D8、D9皆没有逾时未完成的读取要求,控制器221可以选择只对磁碟机D5、D7、D8下读取要求,以取得产生冗余数据所需的数据D51、D71、P1;但是,若在产生冗余数据的过程中,磁碟机D5亦发生逾时没有回应的现象,则控制器221可以再对磁碟机D9下读取要求,以凑足产生冗余数据所需的数据D71、P1、P2。另一种做法是,控制器221可以对磁碟机D5、D7、D8、D9(除了逾时没有回应的磁碟机D6以外)下读取要求,若是磁碟机D5、D7、D8已经成功回传数据D51、D71、P1,则控制器221可以径自进入冗余数据产生程序(步骤S314),不需理会磁碟机D9较晚回传的数据P2。
在考虑有快取(cache)的情形时,同样若是磁碟机D6经过第一预设时间仍没有回应,在产生冗余数据之前,控制器221先至快取(cache)中确认是否有足以产生数据D61的相关数据。若是快取(cache)中刚好存有数据D51、D71、P1,则控制器221不需做任何磁碟读取的动作,即可直接产生冗余数据;若是快取(cache)中只有数据D51,则控制器221需对磁碟机D7、D8、D9(全部或其中之二)下读取要求,以取得足以产生冗余数据的相关数据。
由以上的说明可知,本发明是在储存装置读取要求送至储存装置一段时间后,开始透过产生冗余数据来提供一与待读取数据相同的冗余数据,且在产生冗余数据期间,若成功读取数据,则以读取的数据回传至存取要求应用端;若冗余数据已经产生,且目标储存装置未成功读取数据,则以冗余数据回传至存取要求应用端;若冗余数据已经产生,则控制器中止读取要求且以冗余数据回传至存取要求应用端。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (42)
1.一种改善数据读取效率的方法,包括以下步骤:
一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;
一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;
一产生冗余数据步骤,若该第一读取要求于该第一预设时间后未完成,则产生一与该第一数据相同的第一冗余数据;以及
一回传数据步骤,若该第一冗余数据产生完成时而该第一读取要求未完成,则回传该第一冗余数据至一需求端;若在该第一冗余数据产生的过程中,该第一读取要求先成功读取该第一数据,则回传该第一数据至该需求端。
2.根据权利要求1所述的方法,其中该第一判断步骤更判断该目标储存装置有无逾时未完成的读取要求:若该目标储存装置具有逾时未完成的读取要求,则不等待该第一预设时间,直接产生该第一冗余数据。
3.根据权利要求1所述的方法,其中更增加一第二判断步骤,在产生该第一冗余数据之前,判断具有与建立该第一数据所需读取的相关数据的其他相关储存装置是否具有逾时未完成的读取要求:若该其他相关储存装置具有逾时未完成的读取要求,则持续等待一第二预设时间,直到该其他相关储存装置没有逾时未完成的读取要求时,再产生该第一冗余数据。
4.根据权利要求3所述的方法,其中在等待其他储存装置完成其逾时未完成的读取要求时,若该第一读取要求完成且成功读取该第一数据,则回传成功读取的该第一数据至该需求端。
5.根据权利要求1所述的方法,其中于该产生冗余数据步骤中,是先检查至少一快取中储存的数据是否足以产生该第一数据,若该快取中的数据不足以产生该第一数据,则再至储存有缺少数据的至少一磁碟机中读取相关数据,以产生该第一冗余数据。
6.根据权利要求1所述的方法,若该第一冗余数据成功产生且该第一读取要求未执行完成,则中止该第一读取要求。
7.根据权利要求1所述的方法,其中于该产生冗余数据步骤中,若在产生该第一冗余数据时,该第一读取要求成功读取数据,则中止产生该第一冗余数据。
8.根据权利要求1所述的方法,其中于该产生冗余数据步骤中,若该第一冗余数据无法产生,则判断该第一读取要求是否完成:若该第一读取要求未完成,则等待该第一读取要求完成;若该第一读取要求完成但没有成功读取数据,则回传一错误讯息至该需求端。
9.根据权利要求1所述的方法,其中若该第一读取要求完成但未成功读取该第一数据,且该第一读取要求是因媒体错误而未成功读取该第一数据,则启始一媒体错误回复程序。
10.根据权利要求1所述的方法,若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时正在产生该第一冗余数据,则等待该第一冗余数据产生完成。
11.根据权利要求1所述的方法,若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时也没有产生该第一冗余数据,则回传一错误讯息至该需求端。
12.一种改善数据读取效率的方法,是应用于有多同位数据的一磁碟阵列中,包括以下步骤:
一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;
一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;以及
一产生冗余数据步骤,若该第一读取要求于该第一预设时间后未完成,则产生一与该第一数据相同的第一冗余数据,以供选择回传给一需求端;
其中,该磁碟阵列具有多个同位数据,其于产生冗余数据时,未必须要读取所有储存在其他相关储存装置的相关数据,只要已经有足够的数据可以产生该第一冗余数据。
13.根据权利要求12所述的方法,其中该第一判断步骤更判断该目标储存装置有无逾时未完成的读取要求:若该目标储存装置具有逾时未完成的读取要求,则不等待该第一预设时间,直接产生该第一冗余数据。
14.根据权利要求12所述的方法,其中更增加一第二判断步骤,在产生该第一冗余数据之前,判断具有与建立该第一数据所需读取的相关数据的其他相关储存装置是否具有逾时未完成的读取要求:若该其他相关储存装置具有逾时未完成的读取要求,则持续等待一第二预设时间,直到该其他相关储存装置没有逾时未完成的读取要求时,再产生该第一冗余数据。
15.根据权利要求12所述的方法,其中更增加一回传数据步骤:若该第一冗余数据产生完成时而该第一读取要求未完成,则回传该第一冗余数据至该需求端;若在该第一冗余数据产生的过程中,该第一读取要求先成功读取该第一数据,则回传该第一数据至该需求端。
16.根据权利要求12所述的方法,其中于该产生冗余数据步骤中,是先检查至少一快取中储存的数据是否足以产生该第一数据,若该快取中的数据不足以产生该第一数据,则再至储存有缺少数据的至少一磁碟机中读取相关数据,以产生该第一冗余数据。
17.根据权利要求15所述的方法,若该第一冗余数据成功产生且该第一读取要求未执行完成,则中止该第一读取要求。
18.根据权利要求15所述的方法,其中于该产生冗余数据步骤中,若在产生该第一冗余数据时,该第一读取要求成功读取数据,则中止产生该第一冗余数据。
19.根据权利要求12所述的方法,其中于该产生冗余数据步骤中,若该第一冗余数据无法产生,则判断该第一读取要求是否完成:若该第一读取要求未完成,则等待该第一读取要求完成;若该第一读取要求完成但没有成功读取数据,则回传一错误讯息至该需求端。
20.根据权利要求12所述的方法,其中若该第一读取要求完成但未成功读取该第一数据,且该第一读取要求是因媒体错误而未成功读取该第一数据,则启始一媒体错误回复程序。
21.根据权利要求12所述的方法,若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时正在产生该第一冗余数据,则等待该第一冗余数据产生完成。
22.根据权利要求12所述的方法,若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时也没有产生该第一冗余数据,则回传一错误讯息至该需求端。
23.一种改善数据读取效率的方法,包括下述步骤:
一传送读取要求步骤,是传送一第一读取要求,以读取一位于一目标储存装置的第一数据;
一第一判断步骤,判断该第一读取要求于一第一预设时间后是否完成;
一第二判断步骤,若该第一读取要求于该第一预设时间后未完成,则判断具有与建立该第一数据所需读取的相关数据的其他相关储存装置是否具有逾时未完成的读取要求;以及
一产生冗余数据步骤,若该其他相关储存装置具有逾时未完成的读取要求,则等待直到该其他相关储存装置没有逾时未完成的读取要求时,产生一与该第一数据相同的第一冗余数据;或者,若该其他相关储存装置没有逾时未完成的读取要求,则产生一与该第一数据相同的第一冗余数据,以供选择回传给一需求端。
24.根据权利要求23所述的方法,其中该第一判断步骤更判断该目标储存装置有无逾时未完成的读取要求:若该目标储存装置具有逾时未完成的读取要求,则不等待该第一预设时间,直接产生该第一冗余数据。
25.根据权利要求23所述的方法,其中于该产生冗余数据步骤中,若该其他相关储存装置具有逾时未完成的读取要求,则持续等待一第二预设时间,直到该其他相关储存装置没有逾时未完成的读取要求,再产生该第一冗余数据。
26.根据权利要求23所述的方法,其中更增加一回传数据步骤:若该第一冗余数据产生完成时而该第一读取要求未完成,则回传该第一冗余数据至该需求端;若在该第一冗余数据产生的过程中,该第一读取要求先成功读取该第一数据,则回传该第一数据至该需求端。
27.根据权利要求23所述的方法,其中于该产生冗余数据步骤中,是先检查至少一快取中储存的数据是否足以产生该第一数据,若该快取中的数据不足以产生该第一数据,则再至储存有缺少数据的至少一磁碟机中读取相关数据,以产生该第一冗余数据。
28.根据权利要求23所述的方法,若该第一冗余数据成功产生且该第一读取要求未执行完成,则中止该第一读取要求。
29.根据权利要求23所述的方法,其中于该产生冗余数据步骤中,若该第一冗余数据无法产生,则判断该第一读取要求是否完成:若该第一读取要求未完成,则等待该第一读取要求完成;若该第一读取要求完成但没有成功读取数据,则回传一错误讯息至该需求端。
30.根据权利要求23所述的方法,其中若该第一读取要求完成但未成功读取该第一数据,且该第一读取要求是因媒体错误而未成功读取该第一数据,则启始一媒体错误回复程序。
31.根据权利要求23所述的方法,若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时也没有产生该第一冗余数据,则回传一错误讯息至一需求端。
32.一种储存系统,具有一控制器,该控制器连接于一需求端与复数储存装置之间,该控制器依据该需求端的读取要求而送出一第一读取要求至储存有一第一数据的目标储存装置,该控制器包括一冗余数据产生单元,若该第一读取要求于一第一预设时间后未完成,则该冗余数据产生单元产生一与该第一数据相同的第一冗余数据,同时该第一读取要求亦持续进行,该控制器等待该第一冗余数据或该第一读取要求两者其中的一最早成功完成者,而回传最早成功完成的该第一冗余数据或最早成功完成的该第一读取要求读取的该第一数据至该需求端。
33.根据权利要求32所述的储存系统,其中该控制器送出该第一读取要求至该目标储存装置后,若该目标储存装置具有逾时未完成的读取要求,则不等待该第一预设时间,直接产生该第一冗余数据。
34.根据权利要求32所述的储存系统,其中若该第一读取要求于该第一预设时间后未完成,该控制器更判断具有与建立该第一数据所需读取的相关数据的其他相关储存装置是否具有逾时未完成的读取要求:若该其他相关储存装置具有逾时未完成的读取要求,则该控制器持续等待一第二预设时间,直到该其他相关储存装置没有逾时未完成的读取要求,再产生该第一冗余数据。
35.根据权利要求34所述的储存系统,其中在等待其他储存装置完成其逾时未完成的读取要求时,若该第一读取要求完成且成功读取该第一数据,则回传成功读取的该第一数据至该需求端。
36.根据权利要求32所述的储存系统,其中于产生该第一冗余数据之前,该控制器先检查至少一快取中储存的数据是否足以产生该第一数据,若该快取中的数据不足以产生该第一数据,则再至储存有缺少数据的至少一磁碟机中读取相关数据,以产生该第一冗余数据。
37.根据权利要求32所述的储存系统,其中该第一冗余数据成功产生且该第一读取要求未成功读取该第一数据,则该控制器中止该第一读取要求。
38.根据权利要求32所述的储存系统,其中若该冗余数据产生单元在产生该第一冗余数据时,该第一读取要求成功读取数据,则该控制器中止产生该第一冗余数据。
39.根据权利要求32所述的储存系统,其中若该第一冗余数据无法产生,则该控制器判断该第一读取要求是否完成:若该第一读取要求未完成,则等待该第一读取要求完成;若该第一读取要求完成但没有成功读取数据,则该控制器回传一错误讯息至该需求端。
40.根据权利要求32所述的储存系统,其中若该第一读取要求完成但没有成功读取该第一数据,且该第一读取要求是因媒体错误而未成功读取该第一数据,则该控制器启始一媒体错误回复程序。
41.根据权利要求32所述的储存系统,其中若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时正在产生该第一冗余数据,则该控制器等待该第一冗余数据产生完成。
42.根据权利要求32所述的储存系统,其中若该第一读取要求于该第一预设时间后完成但没有成功读取该第一数据,且此时也没有产生该第一冗余数据,则该控制器回传一错误讯息至该需求端。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US52197004P | 2004-07-29 | 2004-07-29 | |
US60/521,970 | 2004-07-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1740988A CN1740988A (zh) | 2006-03-01 |
CN100407166C true CN100407166C (zh) | 2008-07-30 |
Family
ID=35571446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100873526A Active CN100407166C (zh) | 2004-07-29 | 2005-07-28 | 改善数据读取效率的方法及其储存系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7366852B2 (zh) |
EP (1) | EP1637998B1 (zh) |
CN (1) | CN100407166C (zh) |
TW (1) | TWI269966B (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
US9582449B2 (en) | 2005-04-21 | 2017-02-28 | Violin Memory, Inc. | Interconnection system |
US9286198B2 (en) | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
CA2597692A1 (en) * | 2005-04-21 | 2006-11-02 | Violin Memory, Inc. | Interconnection system |
US8028186B2 (en) * | 2006-10-23 | 2011-09-27 | Violin Memory, Inc. | Skew management in an interconnection system |
US8296337B2 (en) | 2006-12-06 | 2012-10-23 | Fusion-Io, Inc. | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US9632870B2 (en) * | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US8156174B2 (en) | 2007-04-13 | 2012-04-10 | Platform Computing Corporation | Method and system for information exchange utilizing an asynchronous persistent store protocol |
US8661218B1 (en) | 2007-10-18 | 2014-02-25 | Datadirect Networks, Inc. | Method for reducing latency in a solid-state memory system while maintaining data integrity |
US8095763B2 (en) * | 2007-10-18 | 2012-01-10 | Datadirect Networks, Inc. | Method for reducing latency in a raid memory system while maintaining data integrity |
US8090992B2 (en) * | 2008-07-25 | 2012-01-03 | Lsi Corporation | Handling of clustered media errors in raid environment |
US8949684B1 (en) * | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
CN102257482B (zh) * | 2008-12-19 | 2015-06-03 | 惠普开发有限公司 | 用于一致读取等待时间的冗余数据存储 |
WO2010144587A2 (en) | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
CN102147708B (zh) * | 2010-02-10 | 2012-12-12 | 华为数字技术(成都)有限公司 | 一种磁盘检测方法及装置 |
CN102741801B (zh) * | 2010-04-14 | 2015-03-25 | 株式会社日立制作所 | 存储控制装置和存储控制装置的控制方法 |
US8732426B2 (en) * | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US8589625B2 (en) * | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
JPWO2012081156A1 (ja) * | 2010-12-15 | 2014-05-22 | パナソニック株式会社 | アレイ管理装置、アレイ管理方法及び集積回路 |
US10082979B2 (en) | 2013-08-06 | 2018-09-25 | International Business Machines Corporation | Input/output operation management in a device mirror relationship |
US20160321133A1 (en) * | 2015-05-01 | 2016-11-03 | Microsoft Technology Licensing, Llc | Verifying accurate storage in a data storage system |
CN106445749B (zh) * | 2015-05-12 | 2021-04-23 | 爱思开海力士有限公司 | 使用独立磁盘冗余阵列的动态自动调谐的最大延迟的减小 |
CN107870731B (zh) * | 2016-09-23 | 2021-07-27 | 伊姆西Ip控股有限责任公司 | 独立盘冗余阵列系统的管理方法和电子设备 |
US10983885B2 (en) * | 2018-11-29 | 2021-04-20 | International Business Machines Corporation | Recovering storage devices in a storage array having errors |
TWI744752B (zh) * | 2019-12-24 | 2021-11-01 | 大陸商合肥沛睿微電子股份有限公司 | 應用於快閃記憶體儲存裝置的冗餘方法及快閃記憶體儲存裝置 |
US11853174B1 (en) * | 2022-07-12 | 2023-12-26 | Dell Products L.P. | Multiple drive failure data recovery |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
US5758057A (en) * | 1995-06-21 | 1998-05-26 | Mitsubishi Denki Kabushiki Kaisha | Multi-media storage system |
CN1299097A (zh) * | 1999-12-03 | 2001-06-13 | 国际商业机器公司 | 对数据存储库中的具有冗余拷贝的数据卷的平衡存取 |
US6321345B1 (en) * | 1999-03-01 | 2001-11-20 | Seachange Systems, Inc. | Slow response in redundant arrays of inexpensive disks |
US20030212858A1 (en) * | 2002-05-10 | 2003-11-13 | International Business Machines Corp. | Data storage array method and system |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01100944A (ja) * | 1987-10-14 | 1989-04-19 | Nippon Telegr & Teleph Corp <Ntt> | 配線パターン設計方法及び配線構造 |
US5134619A (en) * | 1990-04-06 | 1992-07-28 | Sf2 Corporation | Failure-tolerant mass storage system |
GB2307071B (en) * | 1995-06-21 | 1998-04-29 | Mitsubishi Electric Corp | Multi-media storage system |
JP3745506B2 (ja) * | 1997-07-12 | 2006-02-15 | ソニー株式会社 | データ処理装置及び方法 |
US6799283B1 (en) * | 1998-12-04 | 2004-09-28 | Matsushita Electric Industrial Co., Ltd. | Disk array device |
US6687872B2 (en) * | 2001-03-14 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Methods and systems of using result buffers in parity operations |
JP2005309818A (ja) * | 2004-04-22 | 2005-11-04 | Hitachi Ltd | ストレージ装置、そのデータ読出方法、及びそのデータ読出プログラム |
-
2005
- 2005-07-28 CN CN2005100873526A patent/CN100407166C/zh active Active
- 2005-07-28 US US11/190,915 patent/US7366852B2/en active Active
- 2005-07-29 EP EP05016595.0A patent/EP1637998B1/en active Active
- 2005-07-29 TW TW094125950A patent/TWI269966B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
US5758057A (en) * | 1995-06-21 | 1998-05-26 | Mitsubishi Denki Kabushiki Kaisha | Multi-media storage system |
US6321345B1 (en) * | 1999-03-01 | 2001-11-20 | Seachange Systems, Inc. | Slow response in redundant arrays of inexpensive disks |
CN1299097A (zh) * | 1999-12-03 | 2001-06-13 | 国际商业机器公司 | 对数据存储库中的具有冗余拷贝的数据卷的平衡存取 |
US20030212858A1 (en) * | 2002-05-10 | 2003-11-13 | International Business Machines Corp. | Data storage array method and system |
Also Published As
Publication number | Publication date |
---|---|
EP1637998A2 (en) | 2006-03-22 |
CN1740988A (zh) | 2006-03-01 |
EP1637998A3 (en) | 2010-12-08 |
US7366852B2 (en) | 2008-04-29 |
EP1637998B1 (en) | 2018-04-04 |
TWI269966B (en) | 2007-01-01 |
US20060026347A1 (en) | 2006-02-02 |
TW200604792A (en) | 2006-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100407166C (zh) | 改善数据读取效率的方法及其储存系统 | |
CN100454227C (zh) | 数据存取方法及其存储子系统 | |
JP3237736B2 (ja) | データ記憶装置のマトリックス構造 | |
US5598549A (en) | Array storage system for returning an I/O complete signal to a virtual I/O daemon that is separated from software array driver and physical device driver | |
US5883909A (en) | Method and apparatus for reducing data transfers across a memory bus of a disk array controller | |
JP4754852B2 (ja) | ストレージ制御装置および方法 | |
CN100397324C (zh) | 数据存储设备、重构控制设备与重构控制方法 | |
JPH06119724A (ja) | アレイ型記録装置 | |
CN101770413B (zh) | 冗余磁盘阵列重建的方法及设备 | |
CN101976178A (zh) | 一种垂直排布集中校验的节能型磁盘阵列的构建方法 | |
US6735672B2 (en) | Data storage array device and data access method | |
JP2003029934A (ja) | ストレージ制御装置及びその制御方法 | |
US20030163757A1 (en) | RAID subsystem and data input/output and recovery method in disk error mode | |
CN101382874B (zh) | 一种raid5磁盘阵列中写入数据的方法和装置 | |
JP5218147B2 (ja) | ストレージ制御装置,ストレージ制御方法およびストレージ制御プログラム | |
US20120304016A1 (en) | Storage control device, storage device, and diagnostic method | |
CN100492306C (zh) | 独立磁盘冗余阵列毁损时的数据恢复方法及其系统 | |
CN102193751A (zh) | 光盘驱动器raid驱动方法 | |
CN102436356B (zh) | 写页面空间分配方法和装置 | |
JP2655119B2 (ja) | 磁気ディスク駆動制御装置 | |
WO1990001737A1 (en) | Single disk emulation for synchronous disk array | |
CN104679447A (zh) | 磁盘控制方法及装置 | |
JP3615250B2 (ja) | ディスクアレイ装置 | |
JP2002175156A (ja) | データ記憶アレイ装置、データアクセス方法 | |
CN107515723A (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 |