專利名稱:改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種讀取儲(chǔ)存數(shù)據(jù)技術(shù),特別是涉及一種改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)。
背景技術(shù):
隨著電腦系統(tǒng)的普及,人們?cè)絹碓揭蕾囯娔X系統(tǒng)來處理事務(wù),然而在透過電腦系統(tǒng)來處理事務(wù)時(shí)往往會(huì)產(chǎn)生一些數(shù)據(jù),該等數(shù)據(jù)通常會(huì)被儲(chǔ)存于一儲(chǔ)存裝置中。目前常見的儲(chǔ)存裝置有磁帶(Tape)、磁碟機(jī)(Disk Drive)、可讀寫光碟(CD-R/W)、影音光碟(Digital Versatile Disc,DVD)等各種儲(chǔ)存裝置。然而,數(shù)據(jù)儲(chǔ)存于儲(chǔ)存裝置一段時(shí)間后,由于該儲(chǔ)存裝置可能因?yàn)槠浔旧淼奶匦浴勖染壒驶蚱渌僮魃系囊蛩?如連接線路不良),而造成無法由該儲(chǔ)存裝置讀取數(shù)據(jù),或著需要花費(fèi)比較久的時(shí)間來成功讀取數(shù)據(jù)。如此將會(huì)造成存取數(shù)據(jù)的效能降低。
請(qǐng)參閱圖1所示,其顯示習(xí)知讀取數(shù)據(jù)示意圖,其是以磁碟機(jī)作為儲(chǔ)存裝置,圖1是包括主機(jī)11、磁碟機(jī)D1、D2、D3、D4。當(dāng)主機(jī)11讀取磁碟機(jī)D2中的數(shù)據(jù)D21時(shí),磁碟機(jī)D2有可能發(fā)生問題(例如磁碟機(jī)D2發(fā)生媒體錯(cuò)誤(Media Error)等情形)而導(dǎo)致讀取數(shù)據(jù)有一段時(shí)間無法回傳至主機(jī)11。如此將使得整個(gè)系統(tǒng)的處理程序停在此一處理點(diǎn)。例如應(yīng)用在視訊播放系統(tǒng)時(shí),當(dāng)該視訊播放系統(tǒng)欲播放此一畫面數(shù)據(jù)而開始讀取儲(chǔ)存裝置中的畫面數(shù)據(jù)時(shí),若發(fā)生上述無法讀取數(shù)據(jù)的情形,則將因磁碟機(jī)D2未送回讀取畫面數(shù)據(jù)而使得整個(gè)系統(tǒng)顯示畫面有可能停格數(shù)秒,直到成功讀取畫面數(shù)據(jù)或放棄讀取該筆畫面數(shù)據(jù)后,整個(gè)系統(tǒng)顯示畫面才會(huì)繼續(xù)顯示下一個(gè)畫面。
雖然目前已有相關(guān)文獻(xiàn)(例如美國專利案號(hào)5758057)揭露在此這種情況時(shí),是會(huì)于讀取要求送至儲(chǔ)存裝置一段時(shí)間后,徑行產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)。
然而,在讀取數(shù)據(jù)時(shí)會(huì)發(fā)生許多情況是目前技術(shù)無法克服的,下述是舉出常見的例子。目標(biāo)儲(chǔ)存裝置上可能已經(jīng)有逾時(shí)未完成的讀取要求,且其可能無法在短時(shí)間內(nèi)完成讀取要求,然而若由其他儲(chǔ)存裝置讀取數(shù)據(jù)來產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)時(shí),若該等其他儲(chǔ)存裝置的至少一個(gè)已有逾時(shí)未完成的讀取要求時(shí),若此時(shí)再送出讀取要求至該等其他儲(chǔ)存裝置(不是原目標(biāo)儲(chǔ)存裝置),則仍必須再等待該逾時(shí)未完成的讀取要求完成,如此將有可能需要花費(fèi)更長的時(shí)間來完成重建與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),且將這些讀取要求傳送給該等其他儲(chǔ)存裝置反而會(huì)讓這些儲(chǔ)存裝置有太多冗余讀取而影響其正常的讀取要求。
是故,如何提供一種改善由儲(chǔ)存裝置讀取數(shù)據(jù)的效率的手段,已成為一亟需解決的課題。
本發(fā)明人基于從事此類產(chǎn)品設(shè)計(jì)制造多年豐富的實(shí)務(wù)經(jīng)驗(yàn)及專業(yè)知識(shí),并配合學(xué)理的運(yùn)用,積極加以研究創(chuàng)新,以期創(chuàng)設(shè)一種新的改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng),能夠改進(jìn)一般現(xiàn)有的數(shù)據(jù)讀取的方法及其儲(chǔ)存系統(tǒng),使其更具有實(shí)用性。經(jīng)過不斷的研究、設(shè)計(jì),并經(jīng)反復(fù)試作及改進(jìn)后,終于創(chuàng)設(shè)出確具實(shí)用價(jià)值的本發(fā)明。
發(fā)明內(nèi)容
本發(fā)明的目的在于,克服現(xiàn)有的數(shù)據(jù)讀取的方法存在的缺陷,而提供一種改善數(shù)據(jù)讀取效率的方法,所要解決的技術(shù)問題是使其能改善數(shù)據(jù)讀取效率,從而更加適于實(shí)用。
本發(fā)明的另一目的在于,克服現(xiàn)有的儲(chǔ)存系統(tǒng)存在的缺陷,而提供一種新型結(jié)構(gòu)的改善數(shù)據(jù)讀取效率的儲(chǔ)存系統(tǒng),所要解決的技術(shù)問題是使其具有新型結(jié)構(gòu)而改善數(shù)據(jù)讀取效率,從而更加適于實(shí)用。
依據(jù)本發(fā)明的一特色,所提供的改善數(shù)據(jù)讀取效率的方法,包括下述步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;一產(chǎn)生冗余數(shù)據(jù)步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù);以及一回傳數(shù)據(jù)步驟,若該第一冗余數(shù)據(jù)產(chǎn)生完成的時(shí)而該第一讀取要求未完成,則回傳該第一冗余數(shù)據(jù)至一需求端;若在該第一冗余數(shù)據(jù)產(chǎn)生的過程中,該第一讀取要求先成功讀取該第一數(shù)據(jù),則回傳該第一數(shù)據(jù)至該需求端。
依據(jù)本發(fā)明的一特色,所提供的改善數(shù)據(jù)讀取效率的方法,是應(yīng)用于有多同位數(shù)據(jù)(multi-parity)的一磁碟陣列(RAID)中,是包括下述步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;以及一產(chǎn)生冗余數(shù)據(jù)步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),以供選擇回傳給一需求端;其中,該磁碟陣列具有多個(gè)同位數(shù)據(jù)(multi-parity),且于產(chǎn)生該第一冗余數(shù)據(jù)時(shí),若所需讀取的其他相關(guān)數(shù)據(jù)已足以產(chǎn)生該第一冗余數(shù)據(jù),即使有其他相關(guān)儲(chǔ)存裝置的數(shù)據(jù)較慢回復(fù),亦可予以忽略。
依據(jù)本發(fā)明的一特色,所提供的改善數(shù)據(jù)讀取效率的方法,是包括下述步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;一第二判斷步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則判斷具有與建立該第一數(shù)據(jù)所需的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否具有逾時(shí)未完成的讀取要求;以及一產(chǎn)生冗余數(shù)據(jù)步驟,若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則等待直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求時(shí),產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù);或者,若該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),以供選擇回傳給一需求端。
依據(jù)本發(fā)明的一特色,所提供的儲(chǔ)存系統(tǒng),其具有一控制器,該控制器連接于一需求端與復(fù)數(shù)儲(chǔ)存裝置之間,該控制器依據(jù)該需求端的讀取要求而送出一第一讀取要求至儲(chǔ)存有一第一數(shù)據(jù)的目標(biāo)儲(chǔ)存裝置,該控制器包括一冗余數(shù)據(jù)產(chǎn)生單元,若該第一讀取要求于一第一預(yù)設(shè)時(shí)間后未完成,則該冗余數(shù)據(jù)產(chǎn)生單元產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),同時(shí)該第一讀取要求亦持續(xù)進(jìn)行,該控制器等待該第一冗余數(shù)據(jù)或該第一讀取要求兩者其中的一最早成功完成者,而回傳該第一冗余數(shù)據(jù)或該第一數(shù)據(jù)的其中之一至該需求端。
借由上述技術(shù)方案,本發(fā)明改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)至少具有下列優(yōu)點(diǎn)本發(fā)明是在儲(chǔ)存裝置讀取要求送至儲(chǔ)存裝置一段時(shí)間后,開始透過產(chǎn)生冗余數(shù)據(jù)來提供一與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),且在產(chǎn)生冗余數(shù)據(jù)期間,若成功讀取數(shù)據(jù),則以讀取的數(shù)據(jù)回傳至存取要求應(yīng)用端;若冗余數(shù)據(jù)已經(jīng)產(chǎn)生,且目標(biāo)儲(chǔ)存裝置未成功讀取數(shù)據(jù),則以冗余數(shù)據(jù)回傳至存取要求應(yīng)用端;若冗余數(shù)據(jù)已經(jīng)產(chǎn)生,則控制器中止讀取要求且以冗余數(shù)據(jù)回傳至存取要求應(yīng)用端。通過上述步驟能夠改善數(shù)據(jù)讀取效率。
綜上所述,本發(fā)明特殊的改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng),確實(shí)改善了數(shù)據(jù)讀取效率。其具有上述諸多的優(yōu)點(diǎn)及實(shí)用價(jià)值,并在同類方法及產(chǎn)品中未見有類似的方法及結(jié)構(gòu)設(shè)計(jì)公開發(fā)表或使用而確屬創(chuàng)新,其不論在方法、產(chǎn)品結(jié)構(gòu)或功能上皆有較大的改進(jìn),在技術(shù)上有較大的進(jìn)步,并產(chǎn)生了好用及實(shí)用的效果,且較現(xiàn)有的數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)具有增進(jìn)的多項(xiàng)功效,從而更加適于實(shí)用,而具有產(chǎn)業(yè)的廣泛利用價(jià)值,誠為一新穎、進(jìn)步、實(shí)用的新設(shè)計(jì)。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉較佳實(shí)施例,并配合附圖,詳細(xì)說明如下。
圖1是習(xí)知讀取數(shù)據(jù)示意圖。
圖2是本發(fā)明的系統(tǒng)架構(gòu)示意圖。
圖3A、3B及3C是本發(fā)明的動(dòng)作流程圖。
圖3D是本發(fā)明的媒體錯(cuò)誤修復(fù)程序的動(dòng)作流程圖。
圖4是本發(fā)明的第一實(shí)例的示意圖。
圖5是本發(fā)明的第二實(shí)例的示意圖。
圖6是本發(fā)明的第三實(shí)例的示意圖。
圖7是本發(fā)明的第四實(shí)例的示意圖。
圖8是本發(fā)明的第五實(shí)例的示意圖。
圖9是本發(fā)明的第六實(shí)例的示意圖。
11主機(jī) D1、D2、D3、D4磁碟機(jī)21存取要求應(yīng)用端22儲(chǔ)存子系統(tǒng)221控制器 2211控制單元2213冗余數(shù)據(jù)產(chǎn)生單元222儲(chǔ)存設(shè)備D5、D6、D7、D8、D9磁碟機(jī)具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)本發(fā)明提出的改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)其具體實(shí)施方式
、方法步驟、結(jié)構(gòu)、特征及其功效,詳細(xì)說明如后。
本發(fā)明改善數(shù)據(jù)讀取效率的方法、控制裝置、儲(chǔ)存子系統(tǒng)及儲(chǔ)存系統(tǒng)是能改善讀取數(shù)據(jù)時(shí)發(fā)生儲(chǔ)存裝置未回傳數(shù)據(jù)的情形,其中儲(chǔ)存裝置可為磁帶(Tape)、磁碟機(jī)(Disk Drive)、記憶體(Memory)或光儲(chǔ)存記錄媒體(例如可讀寫光碟(CD-R/W)、影音光碟(Digital Versatile Disc,DVD))或同一顆磁碟機(jī)中的不同讀寫頭或其他等效的儲(chǔ)存裝置,亦即本發(fā)明所適用的儲(chǔ)存裝置具有下述特性在復(fù)數(shù)個(gè)儲(chǔ)存裝置之間不會(huì)因?yàn)槠渲幸粋€(gè)儲(chǔ)存裝置發(fā)生無法讀取而造成其他裝置無法讀取。且該等儲(chǔ)存裝置所儲(chǔ)存的數(shù)據(jù)間存在一種相互冗余(Redundant)的關(guān)系。
本發(fā)明在讀取要求送至目標(biāo)儲(chǔ)存裝置一預(yù)設(shè)時(shí)間后,若該讀取要求未完成,則透過讀取其他的相關(guān)儲(chǔ)存裝置,以產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(Redundant Data)(亦可稱為重建(Regenerate)與待讀取數(shù)據(jù)相同的數(shù)據(jù)),且前述的送至目標(biāo)儲(chǔ)存裝置的讀取要求與冗余數(shù)據(jù)的重建是可以并行進(jìn)行。若其中一種方式先完成數(shù)據(jù)的讀取,則以該種方式完成的數(shù)據(jù)回傳給存取要求應(yīng)用端,并取消尚未完成的另一種數(shù)據(jù)讀取,以避免過多的冗余讀取而降低正常的讀取速度。例如若送至原目標(biāo)儲(chǔ)存裝置的讀取要求先完成,則取消正在重建與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)的程序;若冗余數(shù)據(jù)的重建比送至原目標(biāo)儲(chǔ)存裝置的讀取要求先完成,則取消原目標(biāo)儲(chǔ)存裝置的讀取要求;然而,在某些實(shí)施例中,有些儲(chǔ)存裝置的讀取要求可能沒有辦法取消,因此必須等該儲(chǔ)存裝置完成讀取動(dòng)作。
另外,本發(fā)明并透過中止讀取要求,來避免過多的冗余讀取。例如對(duì)于某些儲(chǔ)存裝置而言,其是有可能一次無法接收太多的讀取要求,而存取要求應(yīng)用端卻有可能一次會(huì)有多個(gè)讀取要求,因而對(duì)該特定儲(chǔ)存裝置而言,其將有可能無法接收所有的讀取要求。因此這些無法送至儲(chǔ)存裝置的讀取要求會(huì)先被置放于記憶體內(nèi)并以先進(jìn)先出(First In First Out,F(xiàn)IFO)或其他排列方式排序,以等候該儲(chǔ)存裝置可接收讀取要求時(shí),再送給該儲(chǔ)存裝置,要取消這些被暫時(shí)置放的讀取要求只要將排序于記憶體內(nèi)的讀取要求刪除。
本發(fā)明在產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)前,會(huì)先判斷具有與待讀取數(shù)據(jù)相關(guān)的其他儲(chǔ)存裝置上是否有逾時(shí)未完成的讀取要求,直到該等其他儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求時(shí),才開始進(jìn)行冗余數(shù)據(jù)產(chǎn)生動(dòng)作。本發(fā)明產(chǎn)生冗余數(shù)據(jù)的方式可透過互斥或運(yùn)算(XOR Operation)、讀取鏡像的備援?dāng)?shù)據(jù)或其他各種可以獲得與待讀取數(shù)據(jù)相同的等效手段來進(jìn)行。此外,為了方便說明本發(fā)明的特征,本發(fā)明中的儲(chǔ)存裝置是以磁碟機(jī)為例,但在實(shí)際的應(yīng)用中,儲(chǔ)存裝置不限制為磁碟機(jī),可為任何可達(dá)成等效目的的儲(chǔ)存裝置。
圖2顯示本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)示意圖,其是包括存取要求應(yīng)用端(Application I/O Request Unit)21與儲(chǔ)存子系統(tǒng)22,其中存取要求應(yīng)用端21可為一主機(jī)(Host)或需要讀取儲(chǔ)存系統(tǒng)中的數(shù)據(jù)的應(yīng)用設(shè)備,儲(chǔ)存子系統(tǒng)22包括控制器221與儲(chǔ)存設(shè)備222??刂破?2則更包括控制單元2211,該控制單元2211具有冗余數(shù)據(jù)產(chǎn)生單元2213。儲(chǔ)存設(shè)備222具有復(fù)數(shù)個(gè)磁碟機(jī)D5、D6、D7及D8。在本發(fā)明的實(shí)施例中,控制單元2211內(nèi)并設(shè)有復(fù)數(shù)個(gè)與該等磁碟機(jī)D5、D6、D7及D8相對(duì)應(yīng)的佇列(Queues)Q5、Q6、Q7及Q8,其是用以存放暫時(shí)無法送至該等磁碟機(jī)D5、D6、D7及D8的讀取要求。當(dāng)然,在其他實(shí)施例中,該等佇列Q5、Q6、Q7及Q8亦可能位于該等磁碟機(jī)D5、D6、D7及D8上。
當(dāng)上述的存取要求應(yīng)用端21為一主機(jī)時(shí),是可透過儲(chǔ)存區(qū)域網(wǎng)路(SAN)、乙太網(wǎng)路(區(qū)域網(wǎng)路(LAN))或序列先進(jìn)技術(shù)(Serial ATA,SATA)介面、光纖通道(Fiber Channel,F(xiàn)C)、小型電腦標(biāo)準(zhǔn)介面(Small ComputeSystem Interface,SCSI)等傳輸介面或PCI Express等輸出入(I/O)介面與儲(chǔ)存子系統(tǒng)22相連接。而在一些場(chǎng)合中,存取要求應(yīng)用端21可為一特殊積體電路(IC)或其他能夠送出輸出入讀取要求的等效裝置,其是能依據(jù)其他裝置的命令(或請(qǐng)求)而送出輸出入讀取要求至控制器221,使供透過控制器221讀取儲(chǔ)存設(shè)備222中的數(shù)據(jù)。
上述的儲(chǔ)存子系統(tǒng)22中的控制器221及儲(chǔ)存設(shè)備222可同時(shí)包括于一箱體(Enclosure)中,亦可獨(dú)立分開而容置于不同的箱體中??刂破?21可透過序列連接SCSI(Serial-Attached SCSI,SAS)、SCSI、SATA、平行ATA(PATA,或稱IDE)等傳輸介面來與儲(chǔ)存設(shè)備222相連接,儲(chǔ)存設(shè)備222中的該等磁碟機(jī)D5、D6、D7及D8可為SCSI、SATA、PATA、FC等各種不同類型的磁碟機(jī)。上述的控制器221是可為磁碟陣列控制器(RAIDController)或是具有能夠產(chǎn)生冗余數(shù)據(jù)(Redundant Data)的儲(chǔ)存系統(tǒng)的控制器,其中磁碟陣列技術(shù)廣義地包括RAID1~6及其延伸與組合;其中,在本發(fā)明中RAID6是指具有復(fù)數(shù)個(gè)同位數(shù)據(jù)的磁碟陣列組態(tài)。
控制單元2211中的冗余數(shù)據(jù)產(chǎn)生單元2213是能產(chǎn)生(重建)與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),在本實(shí)施例中,是以RAID 4為說明,所以在RAID4中的冗余數(shù)據(jù)產(chǎn)生單元2213是透過互斥或運(yùn)算來產(chǎn)生冗余數(shù)據(jù)。當(dāng)然,在其他實(shí)施例中,冗余數(shù)據(jù)產(chǎn)生單元2213亦可采用其他各種手段來達(dá)到提供與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)的功效,且冗余數(shù)據(jù)產(chǎn)生單元2213亦可視需求而設(shè)計(jì)于控制單元2211的外部。此外,在其他實(shí)施例中,亦可采用其他等效的模組來取代冗余數(shù)據(jù)產(chǎn)生單元2213,以提供一與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)。在某些實(shí)施例中,是能透過讀取備援?dāng)?shù)據(jù)方式來成為與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),則此時(shí)冗余數(shù)據(jù)產(chǎn)生單元2213或其他等效的產(chǎn)生模組可不設(shè)置。
圖3A、圖3B、圖3C顯示本發(fā)明較佳實(shí)施例的動(dòng)作流程圖,有關(guān)其說明,敬請(qǐng)一并參照?qǐng)D2。當(dāng)存取要求應(yīng)用端21送出一讀取輸出入(I/O)要求至儲(chǔ)存子系統(tǒng)22時(shí),儲(chǔ)存子系統(tǒng)22的控制器221是先接收該讀取輸出入要求(步驟S301)。繼而,控制器221對(duì)該讀取輸出入要求進(jìn)行處理,使供產(chǎn)生至少一個(gè)用以在相對(duì)應(yīng)目標(biāo)磁碟機(jī)上讀取數(shù)據(jù)的讀取要求,以發(fā)送(Dispatch)至儲(chǔ)存設(shè)備222中的該等磁碟機(jī)D5、D6、D7及D8中的至少一個(gè)目標(biāo)磁碟機(jī),使能由該等磁碟機(jī)D5、D6、D7及D8中讀取數(shù)據(jù)(步驟S302)。
接著,控制器221設(shè)定一第一預(yù)設(shè)時(shí)間(例如160ms)(步驟S309),并將該讀取要求送至目標(biāo)磁碟機(jī)(步驟S310)。在本實(shí)施例中,預(yù)設(shè)時(shí)間可以根據(jù)磁碟機(jī)實(shí)際的I/O狀態(tài)來動(dòng)態(tài)調(diào)整,亦可以為事先計(jì)算的參數(shù)設(shè)定。另外,在本實(shí)施例中,控制器221將讀取要求送至目標(biāo)磁碟機(jī)(或其他非目標(biāo)磁碟機(jī))時(shí),若目標(biāo)磁碟機(jī)因其本身的特性而無法接收讀取要求,則此時(shí)讀取要求會(huì)被暫時(shí)置放于記憶體內(nèi),且被排序來等候,以等候目標(biāo)儲(chǔ)存裝置可接收讀取要求時(shí),再送給該目標(biāo)儲(chǔ)存裝置,當(dāng)然,在其他實(shí)施例中,讀取要求亦可能以其他方式排序于記憶體中。上述的目標(biāo)磁碟機(jī)本身的特性例如為有些目標(biāo)磁碟機(jī)一次僅能接收一個(gè)輸出入要求以執(zhí)行數(shù)據(jù)存取,若此時(shí)該目標(biāo)磁碟機(jī)正在執(zhí)行數(shù)據(jù)存取,則其便無法再接收新的讀取要求;而有些目標(biāo)磁碟機(jī)一次是能接收復(fù)數(shù)個(gè)輸出入要求(例如5個(gè))以執(zhí)行數(shù)據(jù)存取,若此時(shí)該目標(biāo)磁碟機(jī)正執(zhí)行5個(gè)輸出入要求,則其便無法再接收新的讀取要求。在本實(shí)施例中,上述的記憶體是可包括于控制器221內(nèi)(圖未示),其部份空間可用來規(guī)劃為上述的該等佇列Q5、Q6、Q7及Q8,以用來暫時(shí)置放無法被目標(biāo)儲(chǔ)存裝置接收的讀取要求。當(dāng)然,在其他實(shí)施例中,讀取要求亦可以置放于目標(biāo)儲(chǔ)存裝置上,以等候目標(biāo)儲(chǔ)存裝置執(zhí)行該讀取要求。
控制器221在送出讀取要求時(shí),即開始對(duì)發(fā)送的讀取要求計(jì)時(shí),若讀取要求未能在第一預(yù)設(shè)時(shí)間(例如160ms)內(nèi)完成,則進(jìn)行冗余數(shù)據(jù)產(chǎn)生階段,并于送出讀取要求后,判斷該目標(biāo)儲(chǔ)存裝置有無逾時(shí)未完成的讀取要求(步驟S311、S315)。若目標(biāo)儲(chǔ)存裝置有逾時(shí)未完成的讀取要求,且其他可產(chǎn)生冗余數(shù)據(jù)的相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求,則不等待第一預(yù)設(shè)時(shí)間的逾時(shí),視為逾時(shí)(Timeout)已發(fā)生,直接進(jìn)入冗余數(shù)據(jù)產(chǎn)生階段。若目標(biāo)磁碟機(jī)在第一預(yù)設(shè)時(shí)間(160ms)內(nèi)完成讀取要求,則控制器221會(huì)結(jié)束該讀取要求的第一預(yù)設(shè)時(shí)間的計(jì)時(shí),并執(zhí)行圖3C中的該等步驟(有關(guān)其詳細(xì)說明,敬請(qǐng)參照?qǐng)D3C)。
由于習(xí)知的控制器僅會(huì)等待磁碟機(jī)回傳讀取數(shù)據(jù),若磁碟機(jī)發(fā)生故障或因其他緣故而無法立即回傳數(shù)據(jù)給控制器時(shí),控制器仍然持續(xù)等待磁碟機(jī)回傳數(shù)據(jù),如此將使得讀取效率降低,因此,本發(fā)明在送出讀取要求至目標(biāo)磁碟機(jī)后,若該目標(biāo)磁碟機(jī)在經(jīng)過第一預(yù)設(shè)時(shí)間后未完成該讀取要求,則立即開始準(zhǔn)備產(chǎn)生冗余數(shù)據(jù)。此外,目標(biāo)磁碟中若已經(jīng)有逾時(shí)未完成的讀取要求,則新發(fā)送的讀取要求勢(shì)必會(huì)先被存在佇列Q5、Q6、Q7及Q8中等待執(zhí)行,此時(shí)再等待第一預(yù)設(shè)時(shí)間就顯得意義不大;且當(dāng)該磁碟機(jī)有一段時(shí)間無法回復(fù),將造成此段時(shí)間所有的輸出/輸入要求(I/O request)均必須增加等候一等待逾時(shí)(Timeout)時(shí)間。因此,為加強(qiáng)執(zhí)行的效率,本實(shí)施例在送出讀取要求至目標(biāo)磁碟機(jī)后,若發(fā)現(xiàn)目標(biāo)磁碟中已經(jīng)有逾時(shí)未完成的讀取要求,則不等待第一預(yù)設(shè)時(shí)間,徑自進(jìn)入產(chǎn)生冗余數(shù)據(jù)的程序。在本實(shí)施例中,產(chǎn)生冗余數(shù)據(jù)的方式是透過互斥或運(yùn)算及讀取與待讀取數(shù)據(jù)相關(guān)的其他數(shù)據(jù)來進(jìn)行。
所以,須先判斷具有與該待讀取數(shù)據(jù)相關(guān)的其他磁碟機(jī)上是否具有逾時(shí)未完成的讀取要求(步驟S312),是因該等相關(guān)的其他磁碟機(jī)上沒有逾時(shí)未完成的讀取要求時(shí),才可由其讀取數(shù)據(jù),因此在產(chǎn)生冗余數(shù)據(jù)之前須先進(jìn)行此一判斷,以避免與該待讀取數(shù)據(jù)相關(guān)的其他數(shù)據(jù)的讀取要求直接送至該等其他磁碟機(jī),而造成過多的冗余讀取要求,進(jìn)而影響整體效能。若該等其他磁碟機(jī)的至少一個(gè)磁碟機(jī)具有逾時(shí)未完成的讀取要求,則設(shè)定一第二預(yù)設(shè)時(shí)間(例如50ms),并判斷該等其他磁碟機(jī)是否能在第二預(yù)設(shè)時(shí)間完成其讀取要求(亦即每隔50ms檢查一次該等其他磁碟機(jī)是否具有逾時(shí)未完成的讀取要求);無論在第一預(yù)設(shè)時(shí)間或第二預(yù)設(shè)時(shí)間的等待時(shí)間,皆持續(xù)判斷已發(fā)送至目標(biāo)磁碟機(jī)的讀取要求是否完成。若該等其他磁碟機(jī)在50ms后仍未完成其逾時(shí)未完成的讀取要求,且目標(biāo)磁碟機(jī)在50ms內(nèi)亦未完成其讀取要求,則再繼續(xù)判斷該等其他磁碟機(jī)及/或目標(biāo)磁碟機(jī)是否能在另一個(gè)50ms完成(步驟S313、S315、S311、S312)。若該等其他磁碟機(jī)在設(shè)定的時(shí)間內(nèi)完成其逾時(shí)未完成的讀取要求,而目標(biāo)磁碟機(jī)仍未完成其讀取要求;或若該等其他磁碟機(jī)皆沒有逾時(shí)未完成的讀取要求時(shí),控制器221是開始產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(步驟S314)。若在該等其他磁碟機(jī)等待其逾時(shí)未完成的讀取要求完成的期間(例如第40ms或第70ms時(shí)),目標(biāo)磁碟機(jī)完成讀取要求,則控制器221將停止執(zhí)行下一個(gè)產(chǎn)生冗余數(shù)據(jù)的步驟S314,改而執(zhí)行圖3C中的該等相關(guān)的步驟,有關(guān)其說明,請(qǐng)參照?qǐng)D3C的處理。在某些實(shí)施例中,上述的第二預(yù)設(shè)時(shí)間亦可以不設(shè)定,超過第一預(yù)設(shè)時(shí)間后,只要等待至其他相關(guān)的磁碟機(jī)沒有逾時(shí)讀取要求,即可以開始產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),不需等待一固定時(shí)間。
圖3B是顯示本發(fā)明冗余數(shù)據(jù)產(chǎn)生程序的流程圖,當(dāng)開始執(zhí)行冗余數(shù)據(jù)的產(chǎn)生時(shí)(步驟S300),須先得到與待讀取數(shù)據(jù)有關(guān)的相關(guān)數(shù)據(jù)(例如與待讀取數(shù)據(jù)對(duì)應(yīng)到同一儲(chǔ)存分割帶(stripe)的相關(guān)數(shù)據(jù)),然后再透過互斥或運(yùn)算,產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(步驟S318)。得到上述相關(guān)數(shù)據(jù)的方法有數(shù)種,較有效率的方式是先至快取(cache)中讀取該相關(guān)數(shù)據(jù),若快取中現(xiàn)有的數(shù)據(jù)足以提供產(chǎn)生該冗余數(shù)據(jù),則不需再到磁碟機(jī)中讀取數(shù)據(jù);若快取中現(xiàn)有的數(shù)據(jù)不足以產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),則再到對(duì)應(yīng)的磁碟中讀取其缺少的部分。當(dāng)然,在其他實(shí)施例中,控制器221亦可忽略快取(cache)的存在,直接對(duì)該目標(biāo)磁碟機(jī)以外的其他磁碟機(jī)下讀取要求,以讀取產(chǎn)生冗余數(shù)據(jù)所需的相關(guān)數(shù)據(jù)。在RAID5的應(yīng)用,若已經(jīng)有一顆儲(chǔ)存裝置無法讀取(可能已經(jīng)故障),此時(shí)又有一顆儲(chǔ)存裝置發(fā)生讀取逾時(shí)(Timeout),則將無法產(chǎn)生冗余數(shù)據(jù)。若是磁碟陣列的型態(tài)是RAID6、或其他具有多同位數(shù)據(jù)(multi-parity)的磁碟陣列組態(tài),則可以選擇只對(duì)足以產(chǎn)生冗余數(shù)據(jù)的磁碟機(jī)數(shù)量下讀取要求即可,若是那些下讀取要求的其他磁碟機(jī)亦發(fā)生有讀取逾時(shí)的狀況,則可再對(duì)其他之前還未下讀取要求的磁碟機(jī)下讀取要求,以湊足產(chǎn)生該冗余數(shù)據(jù)所需的數(shù)據(jù)。同樣是RAID6的組態(tài),另一種情況是選擇對(duì)所有目標(biāo)磁碟機(jī)以外的其他磁碟機(jī)下讀取要求,但只要取得足以產(chǎn)生冗余數(shù)據(jù)的相關(guān)數(shù)據(jù),即利用該相關(guān)數(shù)據(jù)產(chǎn)生冗余數(shù)據(jù),至于其他較晚回復(fù)或未回復(fù)的數(shù)據(jù)可予以忽略。
在執(zhí)行完冗余數(shù)據(jù)產(chǎn)生步驟S318后,控制器221判斷是否成功產(chǎn)生冗余數(shù)據(jù)(步驟S320),若成功地產(chǎn)生冗余數(shù)據(jù),則控制器221判斷先前送至目標(biāo)磁碟機(jī)的讀取要求是否執(zhí)行完成(步驟S330)。若先前送至目標(biāo)磁碟機(jī)的讀取要求已執(zhí)行完成,則控制器221再判斷該讀取要求是否成功讀取數(shù)據(jù)(步驟S331),若該讀取要求成功讀取數(shù)據(jù),則控制器221丟棄其所產(chǎn)生的冗余數(shù)據(jù),并停止后續(xù)的相關(guān)讀取數(shù)據(jù)操作(步驟S334);若該讀取要求沒有成功讀取數(shù)據(jù),則控制器221回傳其所產(chǎn)生的冗余數(shù)據(jù)至存取要求應(yīng)用端21(步驟S332)。
若送至目標(biāo)磁碟機(jī)的讀取要求尚未執(zhí)行完成,則控制器221中止(Abort)該讀取要求(步驟S333);其中該讀取要求是有可能暫時(shí)被存放在配置于記憶體的佇列中等候,或著該讀取要求有可能暫時(shí)被存放在目標(biāo)磁碟機(jī)中而尚未被執(zhí)行,或著該讀取要求正在被目標(biāo)磁碟機(jī)執(zhí)行。然而在某些實(shí)施例中,正在被目標(biāo)磁碟機(jī)執(zhí)行的讀取要求有可能無法被中止,例如某些SATA磁碟機(jī),在實(shí)際應(yīng)用上,若采用此類無法支援中止正在執(zhí)行的讀取要求的儲(chǔ)存裝置,則控制器221會(huì)等待儲(chǔ)存裝置完成讀取要求;而在某些實(shí)施例中,正在被目標(biāo)磁碟機(jī)執(zhí)行的讀取要求可以被中止,例如SCSI磁碟機(jī)。接著,控制器221回傳其所產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)至存取要求應(yīng)用端21(步驟S332)。
若控制器221讀取其他相關(guān)數(shù)據(jù)失敗而沒有成功地產(chǎn)生冗余數(shù)據(jù)(或者因其他因素而沒有成功地產(chǎn)生冗余數(shù)據(jù)),則控制器221判斷送至目標(biāo)磁碟機(jī)的原始讀取要求是否已完成(步驟S321)。若該原始的讀取要求尚未完成,則控制器221等待該原始的讀取要求完成數(shù)據(jù)讀取(步驟S334)。若該原始的讀取要求已完成,則控制器221再判斷該原始的讀取要求是否已成功地讀取數(shù)據(jù)并已回傳讀取數(shù)據(jù)至存取要求應(yīng)用端21(步驟S324),若是,則結(jié)束此次的數(shù)據(jù)讀取動(dòng)作(步驟S334)。若原始的讀取要求已完成但沒有成功讀取數(shù)據(jù),則控制器221回傳一錯(cuò)誤訊息至存取要求應(yīng)用端21,并結(jié)束此數(shù)據(jù)讀取動(dòng)作(步驟S328、S334)。
在上述控制器221產(chǎn)生冗余數(shù)據(jù)的過程中,目標(biāo)磁碟機(jī)有可能隨時(shí)完成原始讀取要求的情形。圖3C顯示讀取要求完成(包括成功讀取數(shù)據(jù)、磁碟機(jī)故障(Drive Fail)或儲(chǔ)存媒體錯(cuò)誤(Media Error))時(shí),控制器221進(jìn)行相關(guān)操作的流程圖。當(dāng)讀取要求完成時(shí)(步驟S340),控制器221會(huì)判斷讀取要求完成動(dòng)作是否成功讀取數(shù)據(jù)(步驟S342)。
若該執(zhí)行完成的讀取要求是成功地讀取數(shù)據(jù),則判斷目前是否完成冗余數(shù)據(jù)的建立(步驟S344),若控制器221目前仍在產(chǎn)生冗余數(shù)據(jù),則控制器221中止該產(chǎn)生冗余數(shù)據(jù)的操作(步驟S345),并回傳成功讀取的數(shù)據(jù)至存取要求應(yīng)用端21(步驟S348)。若控制器221已完成冗余數(shù)據(jù)重建的步驟,則此時(shí)判斷冗余數(shù)據(jù)是否有成功重建且回傳至存取要求應(yīng)用端21(步驟S346),若是,則控制器221停止其后續(xù)動(dòng)作(步驟S362),若否,則控制器221回傳其所讀取的數(shù)據(jù)至存取要求應(yīng)用端21(步驟S348),且結(jié)束此次讀取動(dòng)作(步驟S362)。
若該執(zhí)行完成的讀取要求沒有成功讀取數(shù)據(jù),則控制器221判斷無法成功讀取數(shù)據(jù)是否因?yàn)槊襟w錯(cuò)誤(Media Error)的緣故(步驟S352),若是因?yàn)槊襟w錯(cuò)誤的原因,則判斷該媒體是否允許寫入數(shù)據(jù),若是可以寫入的儲(chǔ)存裝置,則啟始一媒體錯(cuò)誤修復(fù)程序(步驟S354)。
繼而,控制器221判斷該執(zhí)行完成且沒有成功讀取數(shù)據(jù)是否已經(jīng)逾時(shí)(例如超過第一預(yù)設(shè)時(shí)間)且正在進(jìn)行冗余數(shù)據(jù)產(chǎn)生步驟(S314)(步驟S355、S356),若是,則等待其產(chǎn)生冗余數(shù)據(jù)(步驟S362);若該執(zhí)行完成且沒有成功讀取數(shù)據(jù)的讀取要求已逾時(shí)且重建冗余數(shù)據(jù)亦沒有成功,則回傳一錯(cuò)誤訊息至存取要求應(yīng)用端21(步驟S358),并結(jié)束此次讀取動(dòng)作(步驟S362)。
如上所述,若該讀取要求在第一預(yù)設(shè)時(shí)間內(nèi)執(zhí)行完成,但其沒有成功讀取數(shù)據(jù),則控制器221開始進(jìn)行冗余數(shù)據(jù)產(chǎn)生程序(步驟S314),有關(guān)其詳細(xì)說明,敬請(qǐng)參照?qǐng)D3B。
有關(guān)媒體錯(cuò)誤修復(fù)程序(S3540)的說明敬請(qǐng)參照?qǐng)D3D,首先,控制器221產(chǎn)生與該讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(步驟S3541),繼而判斷是否成功產(chǎn)生冗余數(shù)據(jù)(步驟S3542),若能成功產(chǎn)生冗余數(shù)據(jù),則將其寫入該待讀取數(shù)據(jù)的位址,以保護(hù)該筆數(shù)據(jù)(步驟S3544),繼而結(jié)束該媒體錯(cuò)誤回復(fù)程序(步驟S3546)。若無法成功產(chǎn)生冗余數(shù)據(jù),則結(jié)束該媒體錯(cuò)誤修復(fù)程序(步驟S3546)。
上述的圖3C中的該等讀取要求完成步驟是與圖3A及圖3B中的步驟相關(guān)且具有互相影響的關(guān)系,亦即控制器221在送出讀取要求且經(jīng)過第一預(yù)設(shè)時(shí)間后,其是可藉由產(chǎn)生冗余數(shù)據(jù)動(dòng)作來產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(有關(guān)其說明,請(qǐng)參照?qǐng)D3A及3B),且其亦等待目標(biāo)儲(chǔ)存裝置能完成讀取要求以回傳待讀取數(shù)據(jù)(有關(guān)其說明,請(qǐng)參照?qǐng)D3C)。若控制器221成功產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)且讀取要求未能被目標(biāo)磁碟機(jī)執(zhí)行完成,則控制器221回傳該冗余數(shù)據(jù)至存取要求應(yīng)用端21;若在超過第一預(yù)設(shè)時(shí)間后,目標(biāo)磁碟機(jī)完成讀取要求且成功讀取數(shù)據(jù),而控制器221未成功產(chǎn)生冗余數(shù)據(jù),則控制器221回傳該目標(biāo)磁碟機(jī)成功讀取的數(shù)據(jù)。所以,控制器221是會(huì)依據(jù)上述兩種方式的先完成者來回傳數(shù)據(jù)至存取要求應(yīng)用端21,且其亦會(huì)對(duì)另一個(gè)未完成的作動(dòng)進(jìn)行相關(guān)處理。
下述將舉出本發(fā)明在實(shí)際實(shí)施時(shí)常遇到的幾種例子,當(dāng)然,有許多例子是無法一一列舉,有關(guān)本發(fā)明的實(shí)施,請(qǐng)參照?qǐng)D3A~3C。
有關(guān)本發(fā)明的第一實(shí)例,敬請(qǐng)一并參照?qǐng)D2、圖3A、圖3C及圖4,圖4是本發(fā)明第一實(shí)例的示意圖,在本實(shí)例中,是揭露目標(biāo)磁碟機(jī)讀取正常時(shí)的情形。當(dāng)存取要求應(yīng)用端21送出一讀取32K位元組數(shù)據(jù)的讀取輸出入要求至儲(chǔ)存子系統(tǒng)22時(shí),控制器221先接收讀取輸出入要求,并產(chǎn)生分別讀取16K位元組數(shù)據(jù)的第一讀取要求與第二讀取要求,以讀取目標(biāo)磁碟機(jī)D5中的數(shù)據(jù)D51及目標(biāo)磁碟機(jī)D6中的數(shù)據(jù)D61(步驟S301、S302)。繼而,控制器221設(shè)定第一預(yù)設(shè)時(shí)間(例如160ms),并將該等讀取要求發(fā)送至與目標(biāo)磁碟機(jī)D5及D6相對(duì)應(yīng)的佇列Q5及Q6,由于本實(shí)例中目標(biāo)磁碟機(jī)D5及D6沒有逾時(shí)未完成的讀取要求,且佇列Q5及Q6中亦沒有在等候排對(duì)的其他讀取要求,因此被送至佇列Q5及Q6的第一讀取要求及第二讀取要求是立即被目標(biāo)磁碟機(jī)D5及D6執(zhí)行(步驟S309、S310)。
控制器221在發(fā)送該等讀取要求至目標(biāo)磁碟機(jī)D5、D6(有可能先存放于佇列Q5及Q6一段時(shí)間)后,是開始分別對(duì)第一讀取要求及第二讀取要求計(jì)時(shí),使供判斷該等讀取要求是否能夠在160ms內(nèi)執(zhí)行完成。在本實(shí)例中,目標(biāo)磁碟機(jī)D5、D6皆在160ms內(nèi)完成第一讀取要求及第二讀取要求(步驟S340),并成功讀取數(shù)據(jù)D51及數(shù)據(jù)D61,且將其回傳控制器221,繼而控制器221執(zhí)行步驟S342、步驟S344、步驟S346及步驟S348,以將成功讀取的數(shù)據(jù)回傳給存取要求應(yīng)用端21。由于本實(shí)例中控制器221沒有因其他動(dòng)作而導(dǎo)致中止該等讀取要求的情形,且控制器221亦沒有進(jìn)行冗余數(shù)據(jù)產(chǎn)生動(dòng)作,所以控制器221是將該等目標(biāo)磁碟機(jī)回傳的數(shù)據(jù)回傳至存取要求應(yīng)用端21,以完成數(shù)據(jù)讀取動(dòng)作。
有關(guān)本發(fā)明的第二實(shí)例,敬請(qǐng)參照?qǐng)D2、圖3A、圖3B及圖5,圖5是本發(fā)明第二實(shí)例的示意圖,在本實(shí)例中,是揭露讀取要求在送至目標(biāo)磁碟機(jī)后經(jīng)過一段時(shí)間仍未完成,控制器221透過產(chǎn)生冗余數(shù)據(jù)來提供與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)的情形。本實(shí)例的作動(dòng)情形是與第一實(shí)例相類似,唯,控制器221產(chǎn)生的第一讀取要求與第二讀取要求分別發(fā)送至目標(biāo)磁碟機(jī)D5及D7,以讀取數(shù)據(jù)D51及數(shù)據(jù)D71。在本實(shí)例中,目標(biāo)磁碟機(jī)D5在160ms內(nèi)完成該第一讀取要求而成功讀取數(shù)據(jù)D51,然而目標(biāo)磁碟機(jī)D7卻未能在第一預(yù)設(shè)時(shí)間(例如160ms)內(nèi)完成第二讀取要求(其原因有可能為目標(biāo)磁碟機(jī)D7的讀取速度比較慢、或該筆數(shù)據(jù)D71所在磁碟機(jī)位置有問題、或目標(biāo)磁碟機(jī)D7已經(jīng)故障(Fail)、或目標(biāo)磁碟機(jī)D7已經(jīng)被拔掉(PlugOut)、或目標(biāo)磁碟機(jī)D7上具有逾時(shí)未完成的讀取要求而使得第二讀取要求仍存放在佇列Q7中等候而未被目標(biāo)磁碟機(jī)D7執(zhí)行)。
因此控制器221在第二讀取要求逾時(shí)之后,開始準(zhǔn)備產(chǎn)生與待讀取數(shù)據(jù)D71相同的冗余數(shù)據(jù)。但此時(shí)該已送出的第二讀取要求仍會(huì)按照既定程序而繼續(xù)被處理,例如若目標(biāo)磁碟機(jī)D7已經(jīng)在執(zhí)行第二讀取要求,但因其讀取速度稍慢,則此時(shí)第二讀取要求不會(huì)因控制器221執(zhí)行產(chǎn)生冗余數(shù)據(jù)步驟而被中止;或著,仍被存放在佇列Q7中的第二讀取要求,此時(shí)將會(huì)繼續(xù)被存放在佇列Q7中等候,等候目標(biāo)磁碟機(jī)D7可以接收讀取要求時(shí),該第二讀取要求才會(huì)被目標(biāo)磁碟機(jī)D7執(zhí)行。
控制器221在產(chǎn)生冗余數(shù)據(jù)動(dòng)作前,是先判斷其他具有與數(shù)據(jù)D71相關(guān)的數(shù)據(jù)的其他磁碟機(jī)D5、D6及D8是否有逾時(shí)未完成的讀取要求(步驟S312),在本實(shí)例中,產(chǎn)生冗余數(shù)據(jù)動(dòng)作是以RAID 3~5中的互斥或運(yùn)算來進(jìn)行,當(dāng)然在其他實(shí)例中,產(chǎn)生冗余數(shù)據(jù)動(dòng)作不限制于RAID 3~5,只要該等儲(chǔ)存裝置間具有相互冗余的關(guān)系,且能透過其他裝置來提供與待讀取數(shù)據(jù)相同的數(shù)據(jù)即可。在本實(shí)例中,該等磁碟機(jī)D5、D6及D8沒有逾時(shí)未完成的讀取要求,所以控制器221開始讀取與數(shù)據(jù)D71位于相同儲(chǔ)存分割帶(Stripe)的其他相關(guān)使用者數(shù)據(jù)(User Data)D51、D61及同位數(shù)據(jù)P1。
控制器221在讀取使用者數(shù)據(jù)D51、D61及同位數(shù)據(jù)P1后,接著透過冗余數(shù)據(jù)產(chǎn)生單元2213來對(duì)該等使用者數(shù)據(jù)D51、D61及同位數(shù)據(jù)P1進(jìn)行互斥或運(yùn)算。由于數(shù)據(jù)D71與使用者數(shù)據(jù)D51、D61及同位數(shù)據(jù)P1位于同一個(gè)儲(chǔ)存分割帶(stripe),所以 因此,控制器221透過冗余數(shù)據(jù)產(chǎn)生單元2213對(duì)該等使用者數(shù)據(jù)D51、D61及同位數(shù)據(jù)P1進(jìn)行互斥或運(yùn)算,以獲得與數(shù)據(jù)D71相同的冗余數(shù)據(jù)(步驟S318)。在某些實(shí)施例中,由于上述使用者數(shù)據(jù)D51于之前已被讀取成功,因此其將會(huì)被暫時(shí)存放于快取中,是故,在產(chǎn)生冗余數(shù)據(jù)時(shí),可以不用再次重復(fù)讀取,而可直接透過快取中的數(shù)據(jù)來獲得。
如上所述,控制器221在產(chǎn)生冗余數(shù)據(jù)動(dòng)作時(shí),若目標(biāo)磁碟機(jī)D7繼續(xù)執(zhí)行第二讀取要求,目標(biāo)磁碟機(jī)D7有可能于控制器221還在產(chǎn)生該冗余數(shù)據(jù)動(dòng)作時(shí)完成該第二讀取要求而成功讀取數(shù)據(jù)D71,則控制器221將直接回傳成功讀取的數(shù)據(jù)至存取要求應(yīng)用端21,并停止產(chǎn)生冗余數(shù)據(jù)動(dòng)作。當(dāng)然,目標(biāo)磁碟機(jī)D7亦有可能早已故障而沒有任何回應(yīng)。在本實(shí)例中,是在目標(biāo)磁碟機(jī)D7仍未回傳數(shù)據(jù)D71之前,冗余數(shù)據(jù)成功地產(chǎn)生,是故控制器221將其所產(chǎn)生的冗余數(shù)據(jù)回傳至存取要求應(yīng)用端21,當(dāng)目標(biāo)磁碟機(jī)D7完成第二讀取要求后(成功讀取數(shù)據(jù)),因存取要求應(yīng)用端21所要讀取的數(shù)據(jù)已回傳,因此將此讀取的數(shù)據(jù)作廢。但,如果此筆數(shù)據(jù)是因媒體錯(cuò)誤而造成的,則進(jìn)行一媒體錯(cuò)誤的修復(fù)機(jī)制來重新寫入正確的數(shù)據(jù),以保護(hù)此筆數(shù)據(jù)。
有關(guān)本發(fā)明的第三實(shí)例,敬請(qǐng)參照?qǐng)D2、圖3A、圖3B、圖3C及圖6,圖6是本發(fā)明第三實(shí)例的示意圖,本實(shí)例中,是揭露目標(biāo)磁碟機(jī)經(jīng)過一段時(shí)間未回應(yīng)后,控制器221產(chǎn)生冗余數(shù)據(jù)動(dòng)作前,判斷其他非目標(biāo)磁碟機(jī)上具有逾時(shí)未完成的讀取要求的情形。本實(shí)例的作動(dòng)情形是與第二實(shí)例相類似,控制器221在產(chǎn)生冗余數(shù)據(jù)動(dòng)作前,是先判斷其他磁碟機(jī)D5、D6及D8是否有逾時(shí)未完成的讀取要求(步驟S312),在磁碟機(jī)D6中具有一逾時(shí)未完成的讀取要求,其是用以讀取數(shù)據(jù)D62。所以,控制器221此時(shí)設(shè)定第二預(yù)設(shè)時(shí)間(例如50ms),并等待該磁碟機(jī)D6在50ms后是否能完成其讀取要求以及目標(biāo)磁碟機(jī)D7是否能在50ms內(nèi)完成該第二讀取要求,若磁碟機(jī)D6在經(jīng)過50ms后仍未完成其讀取要求,且目標(biāo)磁碟機(jī)D7亦未能在50ms內(nèi)完成第二讀取要求,則控制器221繼續(xù)等待磁碟機(jī)D6與目標(biāo)磁碟機(jī)D750ms,直到磁碟機(jī)D6或目標(biāo)磁碟機(jī)D7完成其讀取要求(步驟S311、S312、S313、S315)。
當(dāng)其他磁碟機(jī)D5、D6及D8沒有任何逾時(shí)未完成的讀取要求后,控制器221開始讀取與數(shù)據(jù)D71相關(guān)的使用者數(shù)據(jù)D51、D61及P1,有關(guān)其產(chǎn)生冗余數(shù)據(jù)動(dòng)作與上述實(shí)例相類似,故不再詳細(xì)說明。若控制器221在產(chǎn)生冗余數(shù)據(jù)動(dòng)作時(shí)(步驟S318),目標(biāo)磁碟機(jī)D7完成第二讀取要求而成功讀取數(shù)據(jù)D71,此時(shí)控制器221執(zhí)行步驟S342、S344、S346及步驟S348,以將目標(biāo)磁碟機(jī)D7成功讀取的數(shù)據(jù)D71回傳至存取要求應(yīng)用端21。當(dāng)然,在其他實(shí)例中,目標(biāo)磁碟機(jī)D7成功讀取數(shù)據(jù)D71后,控制器221所執(zhí)行的產(chǎn)生冗余數(shù)據(jù)動(dòng)作亦在之后完成,則此時(shí)控制器221回傳成功讀取的數(shù)據(jù)D71至存取要求應(yīng)用端21,并將其所產(chǎn)生的冗余數(shù)據(jù)丟棄。
然而,如同上述說明,控制器221在經(jīng)過至少第一預(yù)設(shè)時(shí)間后是開始準(zhǔn)備產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),若控制器221成功地產(chǎn)生與待讀取數(shù)據(jù)D71相同的冗余數(shù)據(jù),且此時(shí)送至目標(biāo)磁碟機(jī)D7的讀取仍未完成,則控制器221會(huì)中止該讀取要求,并回傳其所產(chǎn)生的冗余數(shù)據(jù)至存取要求應(yīng)用端21(步驟S333、S332)。
有關(guān)本發(fā)明的第四實(shí)例,敬請(qǐng)一并參照?qǐng)D2、圖3A、圖3B、圖3C及圖7,圖7是本發(fā)明第四實(shí)例的示意圖,在本實(shí)例中,是揭露控制器221在產(chǎn)生冗余數(shù)據(jù)動(dòng)作時(shí)無法成功產(chǎn)生冗余數(shù)據(jù)的情形。與上述實(shí)例相類似,當(dāng)存取要求應(yīng)用端21送出讀取輸出入要求至儲(chǔ)存子系統(tǒng)22時(shí),控制器221將該讀取輸出入要求轉(zhuǎn)換成至少一個(gè)讀取要求(步驟S302),在本實(shí)例中,存取要求應(yīng)用端21發(fā)送的讀取輸出入要求是被控制器221轉(zhuǎn)換成第一讀取要求及第二讀取要求,以發(fā)送至目標(biāo)磁碟機(jī)D6及D7。接著,控制器221設(shè)定第一預(yù)設(shè)時(shí)間(例如160ms)后,并將第一讀取要求及第二讀取要求發(fā)送至目標(biāo)磁碟機(jī)D6及D7以分別讀取數(shù)據(jù)D61及D71(步驟S301、S302、S309及S310)。
控制器221在發(fā)送第一讀取要求及第二讀取要求至目標(biāo)磁碟機(jī)D6及D7后,是開始分別對(duì)該第一讀取要求及該第二讀取要求計(jì)時(shí),以判斷其是否能夠在160ms內(nèi)執(zhí)行完成(步驟S311及S315)。在本實(shí)例中,第一讀取要求在160ms內(nèi)成功地完成讀取數(shù)據(jù)D61,而目標(biāo)磁碟機(jī)D7在經(jīng)過160ms后仍未完成第二讀取要求。
所以控制器221開始準(zhǔn)備對(duì)數(shù)據(jù)D71產(chǎn)生與其相同的冗余數(shù)據(jù),在本實(shí)例中,其他磁碟機(jī)沒有逾時(shí)未完成的讀取要求,所以控制器221開始讀取與數(shù)據(jù)D71相關(guān)的數(shù)據(jù)D51、D61及同位數(shù)據(jù)P1,然而于本實(shí)例中,當(dāng)要讀取數(shù)據(jù)D51時(shí)磁碟機(jī)D5發(fā)生故障(Fail),所以控制器221無法藉由數(shù)據(jù)D61及同位數(shù)據(jù)P1來成功產(chǎn)生與數(shù)據(jù)D71相同的冗余數(shù)據(jù)(步驟S318、S320)。繼而,控制器221判斷送至目標(biāo)磁碟機(jī)D7的原始讀取要求是否執(zhí)行完成(步驟S321)。若此時(shí)原始讀取要求(第二讀取要求)未完成,則控制器221結(jié)束冗余數(shù)據(jù)的建立(步驟S334),并等待第二讀取要求的完成(步驟S340)。若于目標(biāo)磁碟機(jī)D7上的第二讀取要求已被執(zhí)行完成,則控制器221判斷該第二讀取要求是否已成功地讀取數(shù)據(jù)(步驟S324)。若該第二讀取要求并沒有成功讀取數(shù)據(jù),則控制器221回傳錯(cuò)誤訊息至存取要求應(yīng)用端21(步驟S328)。若該第二讀取要求成功讀取數(shù)據(jù),則控制器221結(jié)束此次讀取數(shù)據(jù)動(dòng)作(步驟S334)。
有關(guān)本發(fā)明的第五實(shí)例,敬請(qǐng)一并參照?qǐng)D2、圖3A、圖3B、圖3C及圖8,圖8是本發(fā)明第五實(shí)例的示意圖,在本實(shí)例中,是揭露兩個(gè)讀取要求逾時(shí)后(超過第一預(yù)設(shè)時(shí)間)而未完成的例子。在本實(shí)例中,存取要求應(yīng)用端21發(fā)送的讀取輸出入要求是被控制器221轉(zhuǎn)換成第一讀取要求及第二讀取要求以讀取數(shù)據(jù)D61及D71,繼而被發(fā)送至目標(biāo)磁碟機(jī)D6及D7(步驟S301、S302、S309及S310)。
然而,在第一預(yù)設(shè)時(shí)間后(160ms),第一讀取要求及第二讀取要求仍未執(zhí)行完成,則控制器221執(zhí)行步驟S312,以判斷與目標(biāo)磁碟機(jī)具有冗余關(guān)系的其他磁碟機(jī)是否具有逾時(shí)未處理讀取要求,例如對(duì)于目標(biāo)磁碟機(jī)D6而言,是判斷磁碟機(jī)D5、D7及D8是否具有逾時(shí)未處理讀取要求;對(duì)于目標(biāo)磁碟機(jī)D7而言,是判斷磁碟機(jī)D5、D6及D8。在本實(shí)例中,目標(biāo)磁碟機(jī)D7是在第200ms完成第二讀取要求,若目標(biāo)磁碟機(jī)D6未能在210ms完成讀取,則開始產(chǎn)生與數(shù)據(jù)D61相同的冗余數(shù)據(jù)(請(qǐng)參照?qǐng)D3B)。
因此,雖然有兩臺(tái)目標(biāo)磁碟機(jī)超過第一預(yù)設(shè)時(shí)間而未完成讀取要求,控制器221是會(huì)分別判斷與目標(biāo)磁碟機(jī)相關(guān)的其他磁碟機(jī)是否具有逾時(shí)未處理讀取要求,使當(dāng)該等其他磁碟機(jī)沒有逾時(shí)未處理讀取要求時(shí),再產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)。
有關(guān)本發(fā)明的第六實(shí)例,敬請(qǐng)一并參照?qǐng)D2、圖3A、圖3B、圖3C及圖9,圖9是本發(fā)明第六實(shí)例的示意圖,在本實(shí)例中,是揭露具有兩個(gè)同位數(shù)據(jù)碟D8、D9的磁碟陣列,其控制器221計(jì)算冗余數(shù)據(jù)的情形?;旧?,本實(shí)例的動(dòng)作情形與上述各實(shí)例相類似,最大不同處是本實(shí)例中的磁碟陣列具有兩個(gè)同位數(shù)據(jù)碟D8、D9,因此控制器221可以選擇只對(duì)足以產(chǎn)生冗余數(shù)據(jù)且須讀取的磁碟機(jī)下讀取要求;或是,對(duì)除了逾時(shí)沒有回應(yīng)的磁碟機(jī)以外的所有磁碟機(jī)下讀取要求,但只要有足夠的數(shù)據(jù)回傳,即可進(jìn)行冗余數(shù)據(jù)產(chǎn)生作業(yè),不需等待所有其他磁碟機(jī)的數(shù)據(jù)回傳。
舉例來說,若存取要求應(yīng)用端21發(fā)送的讀取輸出入要求被控制器221轉(zhuǎn)換成第一讀取要求及第二讀取要求以讀取數(shù)據(jù)D51及D61,繼而被發(fā)送至目標(biāo)磁碟機(jī)D5及D6(步驟S301、S302、S309及S310)。經(jīng)過第一預(yù)設(shè)時(shí)間后(160ms),第一讀取要求完成,但第二讀取要求未完成。此時(shí)控制器221判斷具有與建立數(shù)據(jù)D61所需讀取的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否有逾時(shí)未完成的讀取要求(步驟S312);于本實(shí)例中,只要磁碟機(jī)D5、D7、D8、D9中任三個(gè)沒有逾時(shí)未完成的讀取要求,即可進(jìn)入冗余數(shù)據(jù)產(chǎn)生程序(步驟S314),以產(chǎn)生與數(shù)據(jù)D61相同的冗余數(shù)據(jù)。若是磁碟機(jī)D5、D7、D8、D9皆沒有逾時(shí)未完成的讀取要求,控制器221可以選擇只對(duì)磁碟機(jī)D5、D7、D8下讀取要求,以取得產(chǎn)生冗余數(shù)據(jù)所需的數(shù)據(jù)D51、D71、P1;但是,若在產(chǎn)生冗余數(shù)據(jù)的過程中,磁碟機(jī)D5亦發(fā)生逾時(shí)沒有回應(yīng)的現(xiàn)象,則控制器221可以再對(duì)磁碟機(jī)D9下讀取要求,以湊足產(chǎn)生冗余數(shù)據(jù)所需的數(shù)據(jù)D71、P1、P2。另一種做法是,控制器221可以對(duì)磁碟機(jī)D5、D7、D8、D9(除了逾時(shí)沒有回應(yīng)的磁碟機(jī)D6以外)下讀取要求,若是磁碟機(jī)D5、D7、D8已經(jīng)成功回傳數(shù)據(jù)D51、D71、P1,則控制器221可以徑自進(jìn)入冗余數(shù)據(jù)產(chǎn)生程序(步驟S314),不需理會(huì)磁碟機(jī)D9較晚回傳的數(shù)據(jù)P2。
在考慮有快取(cache)的情形時(shí),同樣若是磁碟機(jī)D6經(jīng)過第一預(yù)設(shè)時(shí)間仍沒有回應(yīng),在產(chǎn)生冗余數(shù)據(jù)之前,控制器221先至快取(cache)中確認(rèn)是否有足以產(chǎn)生數(shù)據(jù)D61的相關(guān)數(shù)據(jù)。若是快取(cache)中剛好存有數(shù)據(jù)D51、D71、P1,則控制器221不需做任何磁碟讀取的動(dòng)作,即可直接產(chǎn)生冗余數(shù)據(jù);若是快取(cache)中只有數(shù)據(jù)D51,則控制器221需對(duì)磁碟機(jī)D7、D8、D9(全部或其中之二)下讀取要求,以取得足以產(chǎn)生冗余數(shù)據(jù)的相關(guān)數(shù)據(jù)。
由以上的說明可知,本發(fā)明是在儲(chǔ)存裝置讀取要求送至儲(chǔ)存裝置一段時(shí)間后,開始透過產(chǎn)生冗余數(shù)據(jù)來提供一與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),且在產(chǎn)生冗余數(shù)據(jù)期間,若成功讀取數(shù)據(jù),則以讀取的數(shù)據(jù)回傳至存取要求應(yīng)用端;若冗余數(shù)據(jù)已經(jīng)產(chǎn)生,且目標(biāo)儲(chǔ)存裝置未成功讀取數(shù)據(jù),則以冗余數(shù)據(jù)回傳至存取要求應(yīng)用端;若冗余數(shù)據(jù)已經(jīng)產(chǎn)生,則控制器中止讀取要求且以冗余數(shù)據(jù)回傳至存取要求應(yīng)用端。
以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的方法及技術(shù)內(nèi)容作出些許的更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
權(quán)利要求
1.一種改善數(shù)據(jù)讀取效率的方法,包括以下步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;一產(chǎn)生冗余數(shù)據(jù)步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù);以及一回傳數(shù)據(jù)步驟,若該第一冗余數(shù)據(jù)產(chǎn)生完成的時(shí)而該第一讀取要求未完成,則回傳該第一冗余數(shù)據(jù)至一需求端;若在該第一冗余數(shù)據(jù)產(chǎn)生的過程中,該第一讀取要求先成功讀取該第一數(shù)據(jù),則回傳該第一數(shù)據(jù)至該需求端。
2.根據(jù)權(quán)利要求1所述的方法,其中該第一判斷步驟更判斷該目標(biāo)儲(chǔ)存裝置有無逾時(shí)未完成的讀取要求若該目標(biāo)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則不等待該第一預(yù)設(shè)時(shí)間,直接產(chǎn)生該第一冗余數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其中更增加一第二判斷步驟,在產(chǎn)生該第一冗余數(shù)據(jù)之前,判斷具有與建立該第一數(shù)據(jù)所需讀取的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否具有逾時(shí)未完成的讀取要求若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則持續(xù)等待一第二預(yù)設(shè)時(shí)間,直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求時(shí),再產(chǎn)生該第一冗余數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其中在等待其他儲(chǔ)存裝置完成其逾時(shí)未完成的讀取要求時(shí),若該第一讀取要求完成且成功讀取該第一數(shù)據(jù),則回傳成功讀取的該第一數(shù)據(jù)至該需求端。
5.根據(jù)權(quán)利要求1所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,是先檢查至少一快取中儲(chǔ)存的數(shù)據(jù)是否足以產(chǎn)生該第一數(shù)據(jù),若該快取中的數(shù)據(jù)不足以產(chǎn)生該第一數(shù)據(jù),則再至儲(chǔ)存有缺少數(shù)據(jù)的至少一磁碟機(jī)中讀取相關(guān)數(shù)據(jù),以產(chǎn)生該第一冗余數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,若該第一冗余數(shù)據(jù)成功產(chǎn)生且該第一讀取要求未執(zhí)行完成,則中止該第一讀取要求。
7.根據(jù)權(quán)利要求1所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若在產(chǎn)生該第一冗余數(shù)據(jù)時(shí),該第一讀取要求成功讀取數(shù)據(jù),則中止產(chǎn)生該第一冗余數(shù)據(jù)。
8.根據(jù)權(quán)利要求1所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若該第一冗余數(shù)據(jù)無法產(chǎn)生,則判斷該第一讀取要求是否完成若該第一讀取要求未完成,則等待該第一讀取要求完成;若該第一讀取要求完成但沒有成功讀取數(shù)據(jù),則回傳一錯(cuò)誤訊息至該需求端。
9.根據(jù)權(quán)利要求1所述的方法,其中若該第一讀取要求完成但未成功讀取該第一數(shù)據(jù),且該第一讀取要求是因媒體錯(cuò)誤而未成功讀取該第一數(shù)據(jù),則啟始一媒體錯(cuò)誤回復(fù)程序。
10.根據(jù)權(quán)利要求1所述的方法,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)正在產(chǎn)生該第一冗余數(shù)據(jù),則等待該第一冗余數(shù)據(jù)產(chǎn)生完成。
11.根據(jù)權(quán)利要求1所述的方法,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)已沒有產(chǎn)生該第一冗余數(shù)據(jù),則回傳一錯(cuò)誤訊息至該需求端。
12.一種改善數(shù)據(jù)讀取效率的方法,是應(yīng)用于有多同位數(shù)據(jù)的一磁碟陣列中,包括以下步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;以及一產(chǎn)生冗余數(shù)據(jù)步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),以供選擇回傳給一需求端;其中,該磁碟陣列具有多個(gè)同位數(shù)據(jù),其于產(chǎn)生冗余數(shù)據(jù)時(shí),未必須要讀取所有儲(chǔ)存在其他相關(guān)儲(chǔ)存裝置的相關(guān)數(shù)據(jù),只要已經(jīng)有足夠的數(shù)據(jù)可以產(chǎn)生該第一冗余數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的方法,其中該第一判斷步驟更判斷該目標(biāo)儲(chǔ)存裝置有無逾時(shí)未完成的讀取要求若該目標(biāo)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則不等待該第一預(yù)設(shè)時(shí)間,直接產(chǎn)生該第一冗余數(shù)據(jù)。
14.根據(jù)權(quán)利要求12所述的方法,其中更增加一第二判斷步驟,在產(chǎn)生該第一冗余數(shù)據(jù)之前,判斷具有與建立該第一數(shù)據(jù)所需讀取的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否具有逾時(shí)未完成的讀取要求若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則持續(xù)等待一第二預(yù)設(shè)時(shí)間,直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求時(shí),再產(chǎn)生該第一冗余數(shù)據(jù)。
15.根據(jù)權(quán)利要求12所述的方法,其中更增加一回傳數(shù)據(jù)步驟若該第一冗余數(shù)據(jù)產(chǎn)生完成的時(shí)而該第一讀取要求未完成,則回傳該第一冗余數(shù)據(jù)至該需求端;若在該第一冗余數(shù)據(jù)產(chǎn)生的過程中,該第一讀取要求先成功讀取該第一數(shù)據(jù),則回傳該第一數(shù)據(jù)至該需求端。
16.根據(jù)權(quán)利要求12所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,是先檢查至少一快取中儲(chǔ)存的數(shù)據(jù)是否足以產(chǎn)生該第一數(shù)據(jù),若該快取中的數(shù)據(jù)不足以產(chǎn)生該第一數(shù)據(jù),則再至儲(chǔ)存有缺少數(shù)據(jù)的至少一磁碟機(jī)中讀取相關(guān)數(shù)據(jù),以產(chǎn)生該第一冗余數(shù)據(jù)。
17.根據(jù)權(quán)利要求15所述的方法,若該第一冗余數(shù)據(jù)成功產(chǎn)生且該第一讀取要求未執(zhí)行完成,則中止該第一讀取要求。
18.根據(jù)權(quán)利要求15所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若在產(chǎn)生該第一冗余數(shù)據(jù)時(shí),該第一讀取要求成功讀取數(shù)據(jù),則中止產(chǎn)生該第一冗余數(shù)據(jù)。
19.根據(jù)權(quán)利要求12所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若該第一冗余數(shù)據(jù)無法產(chǎn)生,則判斷該第一讀取要求是否完成若該第一讀取要求未完成,則等待該第一讀取要求完成;若該第一讀取要求完成但沒有成功讀取數(shù)據(jù),則回傳一錯(cuò)誤訊息至該需求端。
20.根據(jù)權(quán)利要求12所述的方法,其中若該第一讀取要求完成但未成功讀取該第一數(shù)據(jù),且該第一讀取要求是因媒體錯(cuò)誤而未成功讀取該第一數(shù)據(jù),則啟始一媒體錯(cuò)誤回復(fù)程序。
21.根據(jù)權(quán)利要求12所述的方法,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)正在產(chǎn)生該第一冗余數(shù)據(jù),則等待該第一冗余數(shù)據(jù)產(chǎn)生完成。
22.根據(jù)權(quán)利要求12所述的方法,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)已沒有產(chǎn)生該第一冗余數(shù)據(jù),則回傳一錯(cuò)誤訊息至該需求端。
23.一種改善數(shù)據(jù)讀取效率的方法,包括下述步驟一傳送讀取要求步驟,是傳送一第一讀取要求,以讀取一位于一目標(biāo)儲(chǔ)存裝置的第一數(shù)據(jù);一第一判斷步驟,判斷該第一讀取要求于一第一預(yù)設(shè)時(shí)間后是否完成;一第二判斷步驟,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,則判斷具有與建立該第一數(shù)據(jù)所需讀取的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否具有逾時(shí)未完成的讀取要求;以及一產(chǎn)生冗余數(shù)據(jù)步驟,若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則等待直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求時(shí),產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù);或者,若該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求,則產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),以供選擇回傳給一需求端。
24.根據(jù)權(quán)利要求23所述的方法,其中該第一判斷步驟更判斷該目標(biāo)儲(chǔ)存裝置有無逾時(shí)未完成的讀取要求若該目標(biāo)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則不等待該第一預(yù)設(shè)時(shí)間,直接產(chǎn)生該第一冗余數(shù)據(jù)。
25.根據(jù)權(quán)利要求23所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則持續(xù)等待一第二預(yù)設(shè)時(shí)間,直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求,再產(chǎn)生該第一冗余數(shù)據(jù)。
26.根據(jù)權(quán)利要求23所述的方法,其中更增加一回傳數(shù)據(jù)步驟若該第一冗余數(shù)據(jù)產(chǎn)生完成的時(shí)而該第一讀取要求未完成,則回傳該第一冗余數(shù)據(jù)至該需求端;若在該第一冗余數(shù)據(jù)產(chǎn)生的過程中,該第一讀取要求先成功讀取該第一數(shù)據(jù),則回傳該第一數(shù)據(jù)至該需求端。
27.根據(jù)權(quán)利要求23所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,是先檢查至少一快取中儲(chǔ)存的數(shù)據(jù)是否足以產(chǎn)生該第一數(shù)據(jù),若該快取中的數(shù)據(jù)不足以產(chǎn)生該第一數(shù)據(jù),則再至儲(chǔ)存有缺少數(shù)據(jù)的至少一磁碟機(jī)中讀取相關(guān)數(shù)據(jù),以產(chǎn)生該第一冗余數(shù)據(jù)。
28.根據(jù)權(quán)利要求23所述的方法,若該第一冗余數(shù)據(jù)成功產(chǎn)生且該第一讀取要求未執(zhí)行完成,則中止該第一讀取要求。
29.根據(jù)權(quán)利要求23所述的方法,其中于該產(chǎn)生冗余數(shù)據(jù)步驟中,若該第一冗余數(shù)據(jù)無法產(chǎn)生,則判斷該第一讀取要求是否完成若該第一讀取要求未完成,則等待該第一讀取要求完成;若該第一讀取要求完成但沒有成功讀取數(shù)據(jù),則回傳一錯(cuò)誤訊息至該需求端。
30.根據(jù)權(quán)利要求23所述的方法,其中若該第一讀取要求完成但未成功讀取該第一數(shù)據(jù),且該第一讀取要求是因媒體錯(cuò)誤而未成功讀取該第一數(shù)據(jù),則啟始一媒體錯(cuò)誤回復(fù)程序。
31.根據(jù)權(quán)利要求23所述的方法,若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)已沒有產(chǎn)生該第一冗余數(shù)據(jù),則回傳一錯(cuò)誤訊息至一需求端。
32.一種儲(chǔ)存系統(tǒng),具有一控制器,該控制器連接于一需求端與復(fù)數(shù)儲(chǔ)存裝置之間,該控制器依據(jù)該需求端的讀取要求而送出一第一讀取要求至儲(chǔ)存有一第一數(shù)據(jù)的目標(biāo)儲(chǔ)存裝置,該控制器包括一冗余數(shù)據(jù)產(chǎn)生單元,若該第一讀取要求于一第一預(yù)設(shè)時(shí)間后未完成,則該冗余數(shù)據(jù)產(chǎn)生單元產(chǎn)生一與該第一數(shù)據(jù)相同的第一冗余數(shù)據(jù),同時(shí)該第一讀取要求亦持續(xù)進(jìn)行,該控制器等待該第一冗余數(shù)據(jù)或該第一讀取要求兩者其中的一最早成功完成者,而回傳該第一冗余數(shù)據(jù)或該第一數(shù)據(jù)的其中之一至該需求端。
33.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中該控制器送出該第一讀取要求至該目標(biāo)儲(chǔ)存裝置后,若該目標(biāo)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則不等待該第一預(yù)設(shè)時(shí)間,直接產(chǎn)生該第一冗余數(shù)據(jù)。
34.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后未完成,該控制器更判斷具有與建立該第一數(shù)據(jù)所需讀取的相關(guān)數(shù)據(jù)的其他相關(guān)儲(chǔ)存裝置是否具有逾時(shí)未完成的讀取要求若該其他相關(guān)儲(chǔ)存裝置具有逾時(shí)未完成的讀取要求,則該控制器持續(xù)等待一第二預(yù)設(shè)時(shí)間,直到該其他相關(guān)儲(chǔ)存裝置沒有逾時(shí)未完成的讀取要求,再產(chǎn)生該第一冗余數(shù)據(jù)。
35.根據(jù)權(quán)利要求34所述的儲(chǔ)存系統(tǒng),其中在等待其他儲(chǔ)存裝置完成其逾時(shí)未完成的讀取要求時(shí),若該第一讀取要求完成且成功讀取該第一數(shù)據(jù),則回傳成功讀取的該第一數(shù)據(jù)至該需求端。
36.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中于產(chǎn)生該第一冗余數(shù)據(jù)之前,該控制器先檢查至少一快取中儲(chǔ)存的數(shù)據(jù)是否足以產(chǎn)生該第一數(shù)據(jù),若該快取中的數(shù)據(jù)不足以產(chǎn)生該第一數(shù)據(jù),則再至儲(chǔ)存有缺少數(shù)據(jù)的至少一磁碟機(jī)中讀取相關(guān)數(shù)據(jù),以產(chǎn)生該第一冗余數(shù)據(jù)。
37.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中該第一冗余數(shù)據(jù)成功產(chǎn)生且該第一讀取要求未成功讀取該第一數(shù)據(jù),則該控制器中止該第一讀取要求。
38.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該冗余數(shù)據(jù)產(chǎn)生單元在產(chǎn)生該第一冗余數(shù)據(jù)時(shí),該第一讀取要求成功讀取數(shù)據(jù),則該控制器中止產(chǎn)生該第一冗余數(shù)據(jù)。
39.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該第一冗余數(shù)據(jù)無法產(chǎn)生,則該控制器判斷該第一讀取要求是否完成若該第一讀取要求未完成,則等待該第一讀取要求完成;若該第一讀取要求完成但沒有成功讀取數(shù)據(jù),則該控制器回傳一錯(cuò)誤訊息至該需求端。
40.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該第一讀取要求完成但沒有成功讀取該第一數(shù)據(jù),且該第一讀取要求是因媒體錯(cuò)誤而未成功讀取該第一數(shù)據(jù),則該控制器啟始一媒體錯(cuò)誤回復(fù)程序。
41.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)正在產(chǎn)生該第一冗余數(shù)據(jù),則該控制器等待該第一冗余數(shù)據(jù)產(chǎn)生完成。
42.根據(jù)權(quán)利要求32所述的儲(chǔ)存系統(tǒng),其中若該第一讀取要求于該第一預(yù)設(shè)時(shí)間后完成但沒有成功讀取該第一數(shù)據(jù),且此時(shí)已沒有產(chǎn)生該第一冗余數(shù)據(jù),則該控制器回傳一錯(cuò)誤訊息至該需求端。
全文摘要
本發(fā)明是有關(guān)于一種改善數(shù)據(jù)讀取效率的方法及其儲(chǔ)存系統(tǒng)。其是傳送一讀取要求至儲(chǔ)存裝置后,開始對(duì)讀取要求計(jì)時(shí),若讀取要求未在預(yù)設(shè)時(shí)間內(nèi)成功讀取數(shù)據(jù),則透過產(chǎn)生與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)來達(dá)成讀取數(shù)據(jù)動(dòng)作,且該讀取要求在重建冗余數(shù)據(jù)時(shí)仍并行執(zhí)行,使當(dāng)其中一種方式先完成數(shù)據(jù)的讀取,則以該種方式完成的數(shù)據(jù)回傳給數(shù)據(jù)讀取端。
文檔編號(hào)G11B20/10GK1740988SQ20051008735
公開日2006年3月1日 申請(qǐng)日期2005年7月28日 優(yōu)先權(quán)日2004年7月29日
發(fā)明者洪清海 申請(qǐng)人:普安科技股份有限公司