專利名稱:數(shù)據(jù)存取方法及其存儲(chǔ)子系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是一種數(shù)據(jù)存取方法及其存儲(chǔ)子系統(tǒng),特別是一種不需等待讀取超時(shí)的數(shù)據(jù)存取方法及其存儲(chǔ)子系統(tǒng)。
背景技術(shù):
冗余磁盤陣列(Redundant Array of Independent Disk,RAID)是一種磁盤子系統(tǒng),用以增進(jìn)效能、提供容錯(cuò)能力或同時(shí)提供以上兩者的優(yōu)點(diǎn)。冗余磁盤陣列配備有多個(gè)硬盤以及一個(gè)磁盤控制器(disk controller)。通過(guò)磁盤驅(qū)動(dòng)器平行存儲(chǔ)(disk striping)技術(shù)可提升存取效能,其將數(shù)據(jù)依字節(jié)(bytes)或字節(jié)群(groups of bytes)交錯(cuò)存儲(chǔ)在多個(gè)磁盤驅(qū)動(dòng)器中,使得讀、寫輸出入請(qǐng)求可以同時(shí)在多個(gè)磁盤驅(qū)動(dòng)器平行進(jìn)行。通過(guò)磁盤驅(qū)動(dòng)器映像存儲(chǔ)(mirroring)技術(shù)和/或具備分布式同位檢測(cè)數(shù)據(jù)的磁盤驅(qū)動(dòng)器平行存儲(chǔ)(disk striping withparity)技術(shù),可提供容錯(cuò)能力。磁盤驅(qū)動(dòng)器映像存儲(chǔ)技術(shù)會(huì)將相同的數(shù)據(jù)存儲(chǔ)至兩個(gè)磁盤中,其中一個(gè)用做備份數(shù)據(jù)。在具備分布式同位檢測(cè)數(shù)據(jù)的磁盤驅(qū)動(dòng)器平行存儲(chǔ)技術(shù)中,舉例來(lái)說(shuō),若RAID系統(tǒng)中有兩個(gè)用戶數(shù)據(jù)盤與一個(gè)同位數(shù)據(jù)盤,可使用異或(XOR)運(yùn)算技術(shù)來(lái)計(jì)算兩個(gè)用戶數(shù)據(jù)盤中的用戶數(shù)據(jù)(user data),將運(yùn)算結(jié)果(亦即同位數(shù)據(jù),parity data)存儲(chǔ)至第三個(gè)同位數(shù)據(jù)盤中。當(dāng)其中一個(gè)數(shù)據(jù)盤故障、用戶數(shù)據(jù)遺失、或因?yàn)槠渌碛啥鴽](méi)有響應(yīng)時(shí),磁盤控制器會(huì)自動(dòng)利用正常的另外兩個(gè)磁盤中與欲讀取數(shù)據(jù)相對(duì)應(yīng)的數(shù)據(jù),譬如說(shuō)與欲讀取數(shù)據(jù)對(duì)應(yīng)到同一存儲(chǔ)分割帶(stripe)的相關(guān)數(shù)據(jù),來(lái)產(chǎn)生或重建與欲讀取數(shù)據(jù)相同的冗余數(shù)據(jù)(redundant data)。
公知數(shù)據(jù)存取方法,在發(fā)出數(shù)據(jù)讀取請(qǐng)求至目標(biāo)磁盤驅(qū)動(dòng)器后,會(huì)先等待一段時(shí)間直到讀取請(qǐng)求超時(shí),才會(huì)進(jìn)行冗余數(shù)據(jù)產(chǎn)生作業(yè),以重建遺失的數(shù)據(jù),用以響應(yīng)該讀取請(qǐng)求。然而,若目標(biāo)磁盤驅(qū)動(dòng)器因發(fā)生媒體錯(cuò)誤(mediaerror)或其它因素而無(wú)法立刻響應(yīng)時(shí),公知方法需先等待讀取請(qǐng)求超時(shí)后,才能讀取其相關(guān)數(shù)據(jù)以進(jìn)行后續(xù)的冗余數(shù)據(jù)產(chǎn)生作業(yè),造成不必要的等待時(shí)間。因此,需要一種更有效率的數(shù)據(jù)存取方法、控制裝置以及系統(tǒng),用以減少不必要的系統(tǒng)等待時(shí)間。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的為提供一種數(shù)據(jù)存取方法及其存儲(chǔ)子系統(tǒng),用以減少不必要的系統(tǒng)等待時(shí)間。
依據(jù)本發(fā)明的一特色,揭露一種數(shù)據(jù)存取方法,由控制器執(zhí)行,用以讀取多個(gè)存儲(chǔ)裝置中的數(shù)據(jù),其方法包括接收數(shù)據(jù)讀取請(qǐng)求,該數(shù)據(jù)讀取請(qǐng)求包含讀取邏輯地址塊中的數(shù)據(jù)的信息;依據(jù)該邏輯地址塊,決定至少一目標(biāo)數(shù)據(jù)所在的子目標(biāo)存儲(chǔ)分割帶(Sub-stripe),該子目標(biāo)存儲(chǔ)分割帶包含至少一子用戶數(shù)據(jù)區(qū)段與至少一子同位數(shù)據(jù)區(qū)段;發(fā)出多個(gè)輸出入請(qǐng)求至該多個(gè)存儲(chǔ)裝置,用以讀取該至少一子用戶數(shù)據(jù)區(qū)段與該至少一子同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),該多個(gè)輸出入請(qǐng)求包含至少一第一輸出入請(qǐng)求,用以讀取該目標(biāo)數(shù)據(jù),以及至少一第二輸出入請(qǐng)求,用以讀取至少一其它相關(guān)數(shù)據(jù);以及進(jìn)行判斷流程,包含第一判斷,判斷該至少一目標(biāo)數(shù)據(jù)是否已成功讀取且回復(fù),若否,則再執(zhí)行第二判斷,判斷已完成讀取的該其它相關(guān)數(shù)據(jù)是否已足以計(jì)算產(chǎn)生與該至少一目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù),若該第二判斷的結(jié)果為是,則產(chǎn)生該冗余數(shù)據(jù)。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中該數(shù)據(jù)讀取請(qǐng)求自一存取要求應(yīng)用端發(fā)出。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中該存取要求應(yīng)用端系一網(wǎng)絡(luò)計(jì)算機(jī)、一迷你計(jì)算機(jī)、一大型主機(jī)、一筆記型計(jì)算機(jī)、一手機(jī)、一個(gè)人數(shù)字助理、一數(shù)字錄像設(shè)備、或一數(shù)字音樂(lè)播放器。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中若欲讀取的數(shù)據(jù)已存儲(chǔ)于一高速緩存空間中,則無(wú)需至該多個(gè)存儲(chǔ)裝置讀取。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中當(dāng)該第一判斷的判斷結(jié)果為是,則在該至少一目標(biāo)數(shù)據(jù)回復(fù)于一存取要求應(yīng)用端后,繼續(xù)完成該至少一第二輸出入請(qǐng)求。
依據(jù)本實(shí)施例之一特色,本發(fā)明方法的進(jìn)一步特征在于在產(chǎn)生與該目標(biāo)數(shù)據(jù)相同的該冗余數(shù)據(jù)后,更執(zhí)行一第三判斷,判斷該目標(biāo)數(shù)據(jù)是否在冗余數(shù)據(jù)產(chǎn)生過(guò)程中已完成讀取并回復(fù),當(dāng)該第三判斷的判斷結(jié)果為是,則丟棄該冗余數(shù)據(jù);當(dāng)該第三判斷的判斷結(jié)果為否,則將該冗余數(shù)據(jù)回復(fù)給一存取要求應(yīng)用端。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中更在產(chǎn)生該冗余數(shù)據(jù)的步驟前,更增加以下步驟等待一小段時(shí)間,以及判斷是否成功讀取所有目標(biāo)數(shù)據(jù)。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中該同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),包含以鏡射技術(shù)存儲(chǔ)的備份數(shù)據(jù)。
依據(jù)本實(shí)施例的一特色,本發(fā)明方法的進(jìn)一步特征在于其中該子目標(biāo)存儲(chǔ)分割帶的大小更可擴(kuò)大為一目標(biāo)存儲(chǔ)分割帶的大小,每一該目標(biāo)存儲(chǔ)分割帶包含多個(gè)數(shù)據(jù)區(qū)段,包含至少一用戶數(shù)據(jù)區(qū)段與至少一同位數(shù)據(jù)區(qū)段,而該多個(gè)輸出入請(qǐng)求是針對(duì)該多個(gè)數(shù)據(jù)區(qū)段而發(fā)出的。
依據(jù)本發(fā)明的另一特色,揭露一種存儲(chǔ)子系統(tǒng),包括一存儲(chǔ)單元,包含多個(gè)存儲(chǔ)裝置;以及一控制器,耦接于該存儲(chǔ)單元,用以接收一數(shù)據(jù)讀取請(qǐng)求,該數(shù)據(jù)讀取請(qǐng)求包含讀取一邏輯地址塊中的數(shù)據(jù)的信息;依據(jù)該邏輯地址塊,決定至少一目標(biāo)數(shù)據(jù)所在的一子目標(biāo)存儲(chǔ)分割帶(Sub-stripe),該子目標(biāo)存儲(chǔ)分割帶包含至少一子用戶數(shù)據(jù)區(qū)段與至少一子同位數(shù)據(jù)區(qū)段;發(fā)出多個(gè)輸出入請(qǐng)求至該多個(gè)存儲(chǔ)裝置,用以讀取該至少一子用戶數(shù)據(jù)區(qū)段與該至少一子同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),該多個(gè)輸出入請(qǐng)求包含至少一第一輸出入請(qǐng)求,用以讀取該目標(biāo)數(shù)據(jù),以及至少一第二輸出入請(qǐng)求,用以讀取至少一其它相關(guān)數(shù)據(jù);以及進(jìn)行一判斷流程,包含一第一判斷,判斷該至少一目標(biāo)數(shù)據(jù)是否已成功讀取且回復(fù),若否,則再執(zhí)行一第二判斷,判斷已完成讀取的該其它相關(guān)數(shù)據(jù)是否已足以計(jì)算產(chǎn)生與該至少一目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù),若該第二判斷的結(jié)果為是,則產(chǎn)生該冗余數(shù)據(jù)。
依據(jù)本實(shí)施例的一特色,本發(fā)明子系統(tǒng)的進(jìn)一步特征在于其中該存儲(chǔ)裝置為一磁帶機(jī)、一磁盤驅(qū)動(dòng)器、一內(nèi)存紀(jì)錄裝置、一光存儲(chǔ)記錄裝置或在同一磁盤驅(qū)動(dòng)器中的相應(yīng)于單一讀寫頭的一個(gè)扇區(qū)。
依據(jù)本實(shí)施例的一特色,本發(fā)明子系統(tǒng)的進(jìn)一步特征在于其中該存儲(chǔ)裝置為一光纖信道磁盤驅(qū)動(dòng)器、一小型計(jì)算機(jī)系統(tǒng)接口磁盤驅(qū)動(dòng)器、一序列連接小型計(jì)算機(jī)系統(tǒng)接口磁盤驅(qū)動(dòng)器、一序列先進(jìn)技術(shù)磁盤驅(qū)動(dòng)器、或一平行先進(jìn)技術(shù)磁盤驅(qū)動(dòng)器。
依據(jù)本實(shí)施例的一特色,本發(fā)明子系統(tǒng)的進(jìn)一步特征在于其中該控制器為一磁盤陣列控制器。
依據(jù)本實(shí)施例的一特色,本發(fā)明子系統(tǒng)的進(jìn)一步特征在于其中該控制器與該存儲(chǔ)單元通過(guò)光纖信道、小型計(jì)算機(jī)系統(tǒng)接口、序列連接小型計(jì)算機(jī)系統(tǒng)接口、序列先進(jìn)技術(shù)接口、或平行先進(jìn)技術(shù)接口的傳輸接口相耦接。
圖1表示依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存取系統(tǒng)的系統(tǒng)架構(gòu)圖;圖2表示依據(jù)本發(fā)明實(shí)施例的存儲(chǔ)裝置的存儲(chǔ)空間示意圖;圖3表示依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存取方法的主流程圖;圖4A與圖4B表示依據(jù)本發(fā)明二實(shí)施例的目標(biāo)存儲(chǔ)分割帶的數(shù)據(jù)讀取流程圖;以及圖5、圖6、圖7表示依據(jù)本發(fā)明實(shí)施例的存儲(chǔ)裝置的存儲(chǔ)空間與邏輯地址塊的對(duì)應(yīng)示意圖。
附圖標(biāo)記說(shuō)明10……………………………………………數(shù)據(jù)存取系統(tǒng)11……………………………………………存取要求應(yīng)用端12……………………………………………………存儲(chǔ)系統(tǒng)121………………………………………………………控制器122……………………………………………………存儲(chǔ)單元1211…………………………………………………控制單元1213…………………………………………冗余數(shù)據(jù)產(chǎn)生單元D1、D2、D3、D4……………………………………存儲(chǔ)裝置Stripel、Stripe2、Stripe3、Stripe4…………存儲(chǔ)分割帶UD11、UD12、UD13、UD21、UD22、UD24、UD31、UD33、UD34、UD42、UD43、UD44……………………用戶數(shù)據(jù)區(qū)段PD14、PD23、PD32、PD41…………………同位數(shù)據(jù)區(qū)段具體實(shí)施方式
圖1是表示依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存取系統(tǒng)10的系統(tǒng)架構(gòu)圖,包括存取要求應(yīng)用端(Application I/O Request Unit)11與存儲(chǔ)子系統(tǒng)12,其中,存取要求應(yīng)用端11可為一部網(wǎng)絡(luò)計(jì)算機(jī)、迷你計(jì)算機(jī)、大型主機(jī)、筆記型計(jì)算機(jī)或需要讀取存儲(chǔ)系統(tǒng)12中的數(shù)據(jù)的任何電子設(shè)備,例如,手機(jī)、個(gè)人數(shù)字助理(personal digital assistant,PDA)、數(shù)字錄像設(shè)備、數(shù)字音樂(lè)播放器等。存儲(chǔ)子系統(tǒng)12包括控制器121與存儲(chǔ)單元122。控制器121包括控制單元1211,該控制單元1211具有冗余數(shù)據(jù)產(chǎn)生單元1213。存儲(chǔ)單元122具有多個(gè)存儲(chǔ)裝置,圖1中以四個(gè)存儲(chǔ)裝置D1、D2、D3及D4為例,但本發(fā)明的實(shí)施例并不以四個(gè)為限。存儲(chǔ)裝置D1、D2、D3及D4中之一可為磁帶機(jī)(tape drive)、磁盤驅(qū)動(dòng)器(disk drive)、內(nèi)存紀(jì)錄裝置(memory drive)或光存儲(chǔ)記錄裝置(optical storage drive)或在同一磁盤驅(qū)動(dòng)器中的相應(yīng)于單一讀寫頭的一個(gè)扇區(qū)或其它等效的存儲(chǔ)裝置。
控制單元1211中的冗余數(shù)據(jù)產(chǎn)生單元1213能產(chǎn)生(重建)與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),在本實(shí)施例中,以RAID 5為例說(shuō)明,所以在RAID 5中的冗余數(shù)據(jù)產(chǎn)生單元1213通過(guò)異或(XOR)運(yùn)算來(lái)產(chǎn)生冗余數(shù)據(jù)。當(dāng)然,在其它實(shí)施例中,冗余數(shù)據(jù)產(chǎn)生單元1213也可采用其它各種手段來(lái)達(dá)到提供與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)的功效,且冗余數(shù)據(jù)產(chǎn)生單元1213也可視需求而設(shè)計(jì)在控制單元1211的外部。此外,在其它實(shí)施例中,亦可采用其它等效的模塊來(lái)取代冗余數(shù)據(jù)產(chǎn)生單元1213,以提供與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù)。在某些實(shí)施例中,能通過(guò)讀取備援?dāng)?shù)據(jù)方式來(lái)成為與待讀取數(shù)據(jù)相同的冗余數(shù)據(jù),則此時(shí)冗余數(shù)據(jù)產(chǎn)生單元1213或其它等效的產(chǎn)生模塊可不設(shè)置。
當(dāng)存取要求應(yīng)用端11為一部獨(dú)立的電子設(shè)備時(shí),可通過(guò)存儲(chǔ)局域網(wǎng)絡(luò)(Storage Area Network,SAN)、局域網(wǎng)絡(luò)(Local Area Network,LAN)、序列先進(jìn)技術(shù)(Serial ATA,SATA)接口、光纖信道(Fiber Channel,F(xiàn)C)、小型計(jì)算機(jī)標(biāo)準(zhǔn)接口(Small Computer System Interface,SCSI)等傳輸接口或PCIExpress等輸出入(I/O)接口與存儲(chǔ)子系統(tǒng)12相連接。另外,當(dāng)存取要求應(yīng)用端11為一個(gè)特殊集成電路(IC)或其它能夠送出輸出入讀取要求的等效裝置,其能依據(jù)其它裝置的命令(或請(qǐng)求)而送出數(shù)據(jù)讀取要求至控制器121,以供通過(guò)控制器121讀取存儲(chǔ)單元122中的數(shù)據(jù)。
存儲(chǔ)子系統(tǒng)12中的控制器121及存儲(chǔ)單元122可同時(shí)包含于單一箱體(Enclosure)中,亦可獨(dú)立分開而容置于不同的箱體中。在較佳的情況下,控制器121可通過(guò)光纖信道(Fibre Channel,F(xiàn)C)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、序列連接小型計(jì)算機(jī)系統(tǒng)接口(Serial-Attached SCSI,SAS)、序列先進(jìn)技術(shù)(Serial ATA,SATA)接口、平行先進(jìn)技術(shù)(Parallel ATA,PATA或稱IDE)接口等傳輸接口來(lái)與存儲(chǔ)單元122相連接,存儲(chǔ)單元122中的存儲(chǔ)裝置D1、D2、D3及D4可為FC、SAS、SCSI、SATA、PATA等各種不同類型的磁盤驅(qū)動(dòng)器??刂破?21可為磁盤陣列控制器(Redundant Array ofIndependent DiSk,RAID Controller),或是具有能夠產(chǎn)生冗余數(shù)據(jù)(RedundantData)的存儲(chǔ)系統(tǒng)的控制器;其中磁盤陣列技術(shù)廣義地包括RAID 1~6及其延伸與組合。
圖2表示依據(jù)本發(fā)明實(shí)施例的存儲(chǔ)裝置的存儲(chǔ)空間示意圖。每一個(gè)存儲(chǔ)裝置可以劃分為多個(gè)數(shù)據(jù)區(qū)段,從容錯(cuò)的觀點(diǎn)來(lái)看,可分為用戶數(shù)據(jù)區(qū)段以及同位數(shù)據(jù)區(qū)段兩類;其中,若在RAID1之實(shí)施例中,同位數(shù)據(jù)區(qū)段指以鏡射(mirroring)方式存儲(chǔ)的備份數(shù)據(jù)區(qū)段。用戶數(shù)據(jù)區(qū)段存儲(chǔ)一般用戶數(shù)據(jù);同位數(shù)據(jù)區(qū)段存儲(chǔ)多余的一組同位數(shù)據(jù)(或兩組以上,視RAID的型態(tài)而定),以當(dāng)有容錯(cuò)需求時(shí),供反算用戶數(shù)據(jù)之用。以第2圖所示之實(shí)施例為例,存儲(chǔ)裝置D1包括用戶數(shù)據(jù)區(qū)段UD11、UD21、UD31及同位數(shù)據(jù)區(qū)段PD41,存儲(chǔ)裝置D2包括用戶數(shù)據(jù)區(qū)段UD12、UD22、UD42及同位數(shù)據(jù)區(qū)段PD32,存儲(chǔ)裝置D3包括用戶數(shù)據(jù)區(qū)段UD13、UD33、UD43及同位數(shù)據(jù)區(qū)段PD23,以及,存儲(chǔ)裝置D4包括用戶數(shù)據(jù)區(qū)段UD24、UD34、UD44及同位數(shù)據(jù)區(qū)段PD14。存在于不同存儲(chǔ)裝置的相對(duì)應(yīng)用戶數(shù)據(jù)區(qū)段及同位數(shù)據(jù)區(qū)段形成一個(gè)存儲(chǔ)分割帶(Stripe),而同位數(shù)據(jù)區(qū)段中的數(shù)據(jù)是由用戶數(shù)據(jù)區(qū)段中的數(shù)據(jù)進(jìn)行異或(XOR)運(yùn)算而得到的結(jié)果。因此,以圖2為例,用戶數(shù)據(jù)區(qū)段UD11、UD12、UD13與同位數(shù)據(jù)區(qū)段PD14形成存儲(chǔ)分割帶Stripel,而PD14中的數(shù)據(jù)為UD11、UD12、UD13中的數(shù)據(jù)的XOR運(yùn)算結(jié)果;同理,用戶數(shù)據(jù)區(qū)段UD21、UD22、UD24與同位數(shù)據(jù)區(qū)段PD23形成另一個(gè)存儲(chǔ)分割帶Stripe2,而PD23中的數(shù)據(jù)為UD21、UD22、UD24中的數(shù)據(jù)的XOR運(yùn)算結(jié)果;用戶數(shù)據(jù)區(qū)段UD31、UD33、UD34與同位數(shù)據(jù)區(qū)段PD32形成另一個(gè)存儲(chǔ)分割帶Stripe3,而PD32中的數(shù)據(jù)為UD31、UD33、UD34中的數(shù)據(jù)的XOR運(yùn)算結(jié)果;用戶數(shù)據(jù)區(qū)段UD42、UD43、UD44與同位數(shù)據(jù)區(qū)段PD41形成另一個(gè)存儲(chǔ)分割帶Stripe4,而PD41中的數(shù)據(jù)為UD42、UD43、UD44中的數(shù)據(jù)的XOR運(yùn)算結(jié)果。本領(lǐng)域普通技術(shù)人員都了解,同位數(shù)據(jù)區(qū)段中的數(shù)據(jù)的計(jì)算,除可使用異或(XOR)運(yùn)算外,也包含各式各樣之同位(parity)運(yùn)算或類似的運(yùn)算技術(shù),只要存在以下關(guān)系相同存儲(chǔ)分割帶(Stripe)中的任一個(gè)數(shù)據(jù)區(qū)段中的數(shù)據(jù)可由其相對(duì)應(yīng)數(shù)據(jù)區(qū)段的數(shù)據(jù)計(jì)算而得。
在描述本發(fā)明之實(shí)施例之前,先做以下名詞說(shuō)明1.數(shù)據(jù)讀取請(qǐng)求由存取要求應(yīng)用端11發(fā)送至控制器121,包含一段邏輯地址塊中的數(shù)據(jù)的信息。
2.輸出入請(qǐng)求(I/O request)由控制器121發(fā)送至存儲(chǔ)裝置D1、D2、D3、D4,包含一段邏輯地址塊中的數(shù)據(jù)的信息;其中又區(qū)分為第一輸出入請(qǐng)求與第二輸出入請(qǐng)求。第一輸出入請(qǐng)求是針對(duì)數(shù)據(jù)讀取請(qǐng)求所要求的數(shù)據(jù)而發(fā)出的輸出入請(qǐng)求;第二輸出入請(qǐng)求是對(duì)與數(shù)據(jù)讀取請(qǐng)求所要求的數(shù)據(jù)位于同一存儲(chǔ)分割帶的其它數(shù)據(jù)區(qū)段(包括用戶數(shù)據(jù)區(qū)段與同位數(shù)據(jù)區(qū)段)所發(fā)出的輸出入請(qǐng)求。舉例來(lái)說(shuō),請(qǐng)參考圖2,若分析數(shù)據(jù)讀取請(qǐng)求的結(jié)果是要讀取磁盤D1的數(shù)據(jù)區(qū)段UD11與磁盤D2的數(shù)據(jù)區(qū)段UD12,則控制器121對(duì)磁盤D1與磁盤D2所發(fā)送的輸出入請(qǐng)求稱為第一輸出入請(qǐng)求,而對(duì)磁盤D3與磁盤D4所發(fā)送而讀取UD13與PD14的輸出入請(qǐng)求稱為第二輸出入請(qǐng)求。
請(qǐng)參考圖3,其表示依據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)存取方法的主流程圖,以下說(shuō)明請(qǐng)同時(shí)參考圖1。流程開始時(shí)(步驟S30),存取要求應(yīng)用端11發(fā)送數(shù)據(jù)讀取請(qǐng)求至控制器121(步驟S31)??刂破?21解析此數(shù)據(jù)讀取請(qǐng)求中的邏輯地址塊,而決定欲存取的目標(biāo)數(shù)據(jù)所在地址、及其對(duì)應(yīng)的目標(biāo)存儲(chǔ)分割帶(Stripe)(步驟S32)。注意,數(shù)據(jù)解析的結(jié)果,欲存取的目標(biāo)數(shù)據(jù)可能不只位于一個(gè)數(shù)據(jù)區(qū)段(block),其亦可能分散在一個(gè)以上目標(biāo)存儲(chǔ)分割帶中;在此種情況下,控制器121將同時(shí)但分別對(duì)每一個(gè)目標(biāo)存儲(chǔ)分割帶進(jìn)行數(shù)據(jù)讀取的動(dòng)作(步驟S33)。每一目標(biāo)存儲(chǔ)分割帶邏輯上對(duì)應(yīng)多個(gè)存儲(chǔ)裝置D1、D2、D3、D4上的數(shù)據(jù)區(qū)段,包括用戶數(shù)據(jù)區(qū)段、及同位數(shù)據(jù)區(qū)段;而其中任一數(shù)據(jù)區(qū)段的數(shù)據(jù)可以由同一存儲(chǔ)分割帶的其它數(shù)據(jù)區(qū)段的數(shù)據(jù)計(jì)算而得。
根據(jù)已知目標(biāo)存儲(chǔ)分割帶,分別進(jìn)行其數(shù)據(jù)讀取的動(dòng)作。若欲存取的目標(biāo)數(shù)據(jù)位于n個(gè)目標(biāo)存儲(chǔ)分割帶中,則分別對(duì)這些目標(biāo)存儲(chǔ)分割帶進(jìn)行圖4A所示的數(shù)據(jù)讀取的步驟。等到相應(yīng)于該邏輯位置區(qū)間的目標(biāo)數(shù)據(jù)成功讀取(或成功產(chǎn)生與其相同的冗余數(shù)據(jù))時(shí),則將其回復(fù)給存取要求應(yīng)用端11(步驟S35),最后結(jié)束此一流程(步驟S36)。
在步驟S35,無(wú)論是回復(fù)成功讀取的目標(biāo)數(shù)據(jù)或產(chǎn)生的冗余數(shù)據(jù),都是相應(yīng)于數(shù)據(jù)讀取請(qǐng)求的邏輯數(shù)據(jù)區(qū)間的欲讀取數(shù)據(jù)。于此須注意的是,步驟S35所回復(fù)的數(shù)據(jù)或許是所有接收到的用戶數(shù)據(jù)區(qū)段中的全部或一部份數(shù)據(jù),這取決于數(shù)據(jù)讀取請(qǐng)求中的邏輯地址塊而定。
請(qǐng)參考圖4A,各目標(biāo)存儲(chǔ)分割帶的數(shù)據(jù)讀取流程開始時(shí)(步驟S330),先根據(jù)解析出的邏輯地址塊對(duì)應(yīng)于該目標(biāo)存儲(chǔ)分割帶的位置,分別為多個(gè)存儲(chǔ)裝置D1、D2、D3、D4的每一個(gè)存儲(chǔ)裝置,決定至少一欲讀取的數(shù)據(jù)區(qū)段。然后,控制器121發(fā)出多個(gè)輸出入請(qǐng)求(I/O request)至存儲(chǔ)單元122中所有的存儲(chǔ)裝置D1、D2、D3、D4,以分別存取目標(biāo)數(shù)據(jù)及其它位于相同存儲(chǔ)分割帶的相應(yīng)數(shù)據(jù)(步驟S331)。
上述多個(gè)輸出入請(qǐng)求(I/O request)包括至少一第一輸出入請(qǐng)求以及至少一第二輸出入請(qǐng)求,第一輸出入請(qǐng)求為存取目標(biāo)數(shù)據(jù),第二輸出入請(qǐng)求為存取其它位于相同存儲(chǔ)分割帶的數(shù)據(jù)。第一輸出入請(qǐng)求與第二輸出入請(qǐng)求都包含指示存儲(chǔ)裝置D1、D2、D3、D4讀取一段實(shí)際存儲(chǔ)地址塊的數(shù)據(jù)的信息。值得注意的是,本發(fā)明實(shí)施例在步驟S331,同時(shí)發(fā)出輸出入請(qǐng)求至存儲(chǔ)單元122中所有的存儲(chǔ)裝置D1、D2、D3、D4,用以取得該目標(biāo)存儲(chǔ)分割帶上所有的用戶數(shù)據(jù)與同位數(shù)據(jù)。
由步驟S332開始等待接收存儲(chǔ)裝置D1、D2、D3、D4的回復(fù)數(shù)據(jù),并進(jìn)行其后的判斷與處理;該回復(fù)數(shù)據(jù)可能是響應(yīng)第一輸出入請(qǐng)求或第二輸出入請(qǐng)求。步驟S332可將接收到的回復(fù)數(shù)據(jù)存儲(chǔ)于一個(gè)高速緩存空間(cachespace)中,以加速后續(xù)的處理。在步驟S332的等待過(guò)程中,控制器121可以單純等待存儲(chǔ)裝置D1、D2、D3、D4的回應(yīng),或在另一實(shí)施例中,控制器121亦可主動(dòng)檢測(cè)數(shù)據(jù)是否已成功讀取。
在以上的等待過(guò)程中,若有任何數(shù)據(jù)成功讀取并回復(fù)給控制器121,則在步驟S333,判斷是否所有的目標(biāo)數(shù)據(jù)都已成功讀取。步驟S333的判斷結(jié)果,若否,則更進(jìn)一步在步驟S334,判斷其它已回傳的數(shù)據(jù)是否已足以產(chǎn)生與目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù)。在步驟S334的判斷結(jié)果,若是,則進(jìn)行步驟S335的處理,若否,則回到步驟S332,繼續(xù)等待其它數(shù)據(jù)回復(fù)。
于步驟S335,由冗余數(shù)據(jù)產(chǎn)生單元1213直接產(chǎn)生與該欲讀取的目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù)(redundant data),并不等待讀取超時(shí)的時(shí)間。當(dāng)冗余數(shù)據(jù)成功產(chǎn)生,則進(jìn)入步驟S336,判斷該目標(biāo)數(shù)據(jù)是否在冗余數(shù)據(jù)產(chǎn)生過(guò)程中已成功讀取且回傳。若此時(shí)該目標(biāo)數(shù)據(jù)還未回傳給控制器121,于本實(shí)施例,則中止(abort)該目標(biāo)數(shù)據(jù)相對(duì)應(yīng)的輸出入請(qǐng)求(步驟S337),并將該冗余數(shù)據(jù)暫存于高速緩存(cache)中,以回復(fù)給存取要求應(yīng)用端11(相對(duì)于第3圖的步驟S35);若此時(shí)該目標(biāo)數(shù)據(jù)已經(jīng)回傳給控制器121,則丟棄該冗余數(shù)據(jù)(步驟S338),并且結(jié)束此數(shù)據(jù)讀取流程(步驟S339)。須注意的是,在冗余數(shù)據(jù)的產(chǎn)生過(guò)程中(步驟S335),控制器121持續(xù)判斷是否所有的目標(biāo)數(shù)據(jù)都已完成讀取(步驟S333),此一判斷過(guò)程不因開始產(chǎn)生冗余數(shù)據(jù)而停止。
在本發(fā)明的其它實(shí)施例中,請(qǐng)參考圖4B,步驟S334的判斷結(jié)果為是、至步驟S335的處理之前,更可以先等待一小段時(shí)間(步驟S340),然后再判斷一次是否成功讀取所有目標(biāo)數(shù)據(jù)(步驟S341);如果步驟S341的判斷結(jié)果為是,則至步驟S339,否則進(jìn)入步驟S335。如此,也許可以使整體的效果更佳。舉例來(lái)說(shuō),雖然有些情況下,讀取目標(biāo)數(shù)據(jù)的響應(yīng)較慢,但也許在其它數(shù)據(jù)都回復(fù)后的一小段時(shí)間內(nèi)(例如1milli-second),目標(biāo)數(shù)據(jù)也立即回復(fù),如此一來(lái),或許不直接進(jìn)入步驟335產(chǎn)生冗余數(shù)據(jù),而只是等待一小段時(shí)間,會(huì)更有效率。
在步驟S333,若判斷的結(jié)果為是,表示已接收到欲讀取的所有的目標(biāo)數(shù)據(jù),則可忽略冗余數(shù)據(jù)產(chǎn)生的流程,并且結(jié)束此一目標(biāo)存儲(chǔ)分割帶(stripe)的數(shù)據(jù)讀取流程(步驟S339)。
在步驟S333,當(dāng)所有對(duì)應(yīng)第一輸出入請(qǐng)求的目標(biāo)數(shù)據(jù)都已成功讀取且回復(fù),而尚有第二輸出入請(qǐng)求未完成時(shí),可視實(shí)際應(yīng)用需求而采取以下兩種做法之一第一,繼續(xù)完成第二輸出入請(qǐng)求,并將讀取得到的數(shù)據(jù)暫時(shí)存放在高速緩存(cache memory)中,如此一來(lái),尤其是應(yīng)用在「循序讀取」(sequential read)時(shí),可讓后續(xù)的數(shù)據(jù)讀取請(qǐng)求快速地被響應(yīng);第二,中止(abort)所有未完成的第二輸出入請(qǐng)求,以適當(dāng)?shù)販p少輸出/輸入(I/O)之傳輸量。須注意的是,即使選擇第一種做法繼續(xù)完成未完成的第二輸出入請(qǐng)求,也須在回復(fù)目標(biāo)數(shù)據(jù)(或其對(duì)應(yīng)之冗余數(shù)據(jù))給存取要求應(yīng)用端11之后,不使繼續(xù)完成第二輸出入請(qǐng)求的操作,影響到回復(fù)目標(biāo)數(shù)據(jù)(或其對(duì)應(yīng)之冗余數(shù)據(jù))給存取要求應(yīng)用端11的時(shí)間。
為讓本發(fā)明更清楚易懂,以下更舉出一個(gè)實(shí)例來(lái)說(shuō)明上述方法的詳細(xì)運(yùn)作情形,此實(shí)例中包含兩種可能的情境。請(qǐng)參考圖3,在步驟S31,首先由存取要求應(yīng)用端11發(fā)送一數(shù)據(jù)讀取請(qǐng)求至控制器121,此數(shù)據(jù)讀取請(qǐng)求包含讀取一段邏輯地址塊中的數(shù)據(jù)的信息。圖5表示依據(jù)本發(fā)明一實(shí)施例的存儲(chǔ)裝置的存儲(chǔ)空間與邏輯地址塊的對(duì)應(yīng)示意圖,其中假設(shè)數(shù)據(jù)讀取請(qǐng)求所包含的邏輯地址塊相應(yīng)于用戶數(shù)據(jù)區(qū)段UD12,圖中以斜線表示;而其它位于同一存儲(chǔ)分割帶的數(shù)據(jù)區(qū)段,則以圓點(diǎn)背景表示之。在步驟S32,依據(jù)數(shù)據(jù)讀取請(qǐng)求中的邏輯地址塊,決定目標(biāo)存儲(chǔ)分割帶為Stripel。因此,由存儲(chǔ)裝置D1中的多個(gè)數(shù)據(jù)區(qū)段中決定存取用戶數(shù)據(jù)區(qū)段UD11;由存儲(chǔ)裝置D2中的多個(gè)數(shù)據(jù)區(qū)段中決定存取用戶數(shù)據(jù)區(qū)段UD12;由存儲(chǔ)裝置D3中的多個(gè)數(shù)據(jù)區(qū)段中決定存取用戶數(shù)據(jù)區(qū)段UD13;以及由存儲(chǔ)裝置D4中的多個(gè)數(shù)據(jù)區(qū)段中決定存取同位數(shù)據(jù)區(qū)段PD14。在此實(shí)例中,欲讀取數(shù)據(jù)所在的目標(biāo)存儲(chǔ)分割帶只有一個(gè),因此步驟S33(相應(yīng)于第4A圖或第4B之流程)只有針對(duì)一個(gè)目標(biāo)存儲(chǔ)分割帶進(jìn)行。
以圖4A為例,在步驟S331,發(fā)出第一輸出入請(qǐng)求至存儲(chǔ)裝置D2、以及第二輸出入請(qǐng)求至存儲(chǔ)裝置D1、D3與D4,用以讀取用戶區(qū)段UD12中的目標(biāo)數(shù)據(jù),以及讀取用戶區(qū)段UD11、UD13與同位數(shù)據(jù)區(qū)段PD14中的其它相關(guān)數(shù)據(jù)。
在第一種情境中,假設(shè)于步驟S332先接收到用戶數(shù)據(jù)區(qū)段UD11中的數(shù)據(jù),其次是用戶數(shù)據(jù)區(qū)段UD12。則在接收到用戶數(shù)據(jù)區(qū)段UD12中的數(shù)據(jù)后,步驟S333的判斷為已成功讀取所有目標(biāo)數(shù)據(jù),于是結(jié)束數(shù)據(jù)讀取流程(步驟S340),并回到圖3,將已讀取的目標(biāo)數(shù)據(jù)UD12回復(fù)給存取要求應(yīng)用端11(步驟S35),之后在步驟S36,結(jié)束此一流程。
在第二種情境中,假設(shè)存儲(chǔ)裝置D2因媒體錯(cuò)誤或其它因素而遲遲沒(méi)有響應(yīng),因此在步驟S332的等待過(guò)程中,依序接收到用戶數(shù)據(jù)區(qū)段UD11、UD13、以及同位數(shù)據(jù)區(qū)段PD14中的數(shù)據(jù),因此接下來(lái)直接進(jìn)行步驟S335的處理,使用已接收到的用戶數(shù)據(jù)區(qū)段UD11、UD13與同位數(shù)據(jù)區(qū)段PD14中的數(shù)據(jù)來(lái)計(jì)算出與用戶區(qū)段UD12中的目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù)。當(dāng)冗余數(shù)據(jù)成功產(chǎn)生欲回傳前,先確認(rèn)用戶區(qū)段UD12中的目標(biāo)數(shù)據(jù)是否已成功讀取且回復(fù)(步驟S336)。以上判斷的結(jié)果,若否,則在步驟S337,中止(abort)與該目標(biāo)數(shù)據(jù)相應(yīng)的輸出入請(qǐng)求,并將成功產(chǎn)生的冗余數(shù)據(jù)回復(fù)給存取要求應(yīng)用端11(步驟S35);若在冗余數(shù)據(jù)的產(chǎn)生過(guò)程中目標(biāo)數(shù)據(jù)已成功讀取且回復(fù),則在步驟S338中丟棄產(chǎn)生的冗余數(shù)據(jù)。
再舉例來(lái)說(shuō),請(qǐng)參閱圖6,表示依據(jù)本發(fā)明實(shí)施例的存儲(chǔ)裝置的另一存儲(chǔ)空間與邏輯地址塊的對(duì)應(yīng)示意圖。以下的說(shuō)明以圖4A為例,并請(qǐng)同時(shí)參閱圖3。若在步驟S32,分析數(shù)據(jù)讀取請(qǐng)求的結(jié)果是要讀取磁盤D2的數(shù)據(jù)區(qū)段UD12與UD22、磁盤D3的數(shù)據(jù)區(qū)段UD13、以及磁盤D1的數(shù)據(jù)區(qū)段UD21,在第6圖中以斜線表示之。在此實(shí)例,欲讀取數(shù)據(jù)分布在二個(gè)目標(biāo)存儲(chǔ)分割帶中,因此步驟S33(相應(yīng)于第4A圖,或于另一實(shí)施例,相應(yīng)于第4B圖的流程)會(huì)同時(shí)針對(duì)該二個(gè)目標(biāo)存儲(chǔ)分割帶分別進(jìn)行。也就是,控制器121依據(jù)步驟S32的分析結(jié)果,會(huì)同時(shí)將第一輸出入請(qǐng)求與第二輸出入請(qǐng)求發(fā)送至所有磁盤D1、D2、D3、D4,以分別讀取數(shù)據(jù)區(qū)段UD12、UD13、UD21與UD22的目標(biāo)數(shù)據(jù),以及分別讀取數(shù)據(jù)區(qū)段UD11、PD14、PD23、UD24的其它相應(yīng)數(shù)據(jù);只是發(fā)出輸出入請(qǐng)求之后的判斷與處理,則是各目標(biāo)存儲(chǔ)分割帶各自依據(jù)圖4A的流程進(jìn)行,其處理方式與上述圖5的敘述類似,因此以下不再多做贅述。
本發(fā)明中將數(shù)據(jù)回復(fù)給存取要求應(yīng)用端11的方式,取決于存取要求應(yīng)用端11的可行做法,可以有數(shù)種實(shí)施例。在一實(shí)施例中,可等待所有的目標(biāo)數(shù)據(jù)(可能分布在二個(gè)以上的目標(biāo)存儲(chǔ)分割帶)皆已成功讀取,再依序?qū)⒅黄鸹貜?fù)給存取要求應(yīng)用端11。在另一實(shí)施例中,待各目標(biāo)存儲(chǔ)分割帶相應(yīng)于邏輯地址塊的目標(biāo)數(shù)據(jù)已成功讀取(或其冗余數(shù)據(jù)已成功產(chǎn)生),在步驟S35,則各自將之回復(fù)給存取要求應(yīng)用端11;以本例而言,當(dāng)?shù)诙鎯?chǔ)分割帶(Strip2)的目標(biāo)數(shù)據(jù)區(qū)段UD21與UD22皆成功讀取(或其冗余數(shù)據(jù)皆成功產(chǎn)生)后,即先將其回復(fù)給存取要求應(yīng)用端11。除了上述以目標(biāo)存儲(chǔ)分割帶為單位回復(fù)數(shù)據(jù)外,在其它實(shí)施例中,亦可選擇以數(shù)據(jù)區(qū)段為單位回復(fù)目標(biāo)數(shù)據(jù)給存取要求應(yīng)用端11。在又一實(shí)施例中,若目標(biāo)數(shù)據(jù)區(qū)段UD12尚未讀取完成,即使目標(biāo)數(shù)據(jù)區(qū)段UD13已成功讀取,也不宜將UD13先回復(fù)給存取要求應(yīng)用端11,而必需將UD12讀取成功,才回復(fù)給存取要求應(yīng)用端11。
在本發(fā)明的其它實(shí)施例中,請(qǐng)參考圖7,可以更將每一存儲(chǔ)分割帶(stripe)細(xì)分為多個(gè)子存儲(chǔ)分割帶(Sub-stripe),并以子存儲(chǔ)分割帶為數(shù)據(jù)存取的單位。以圖7為例,若是用戶定義一個(gè)存儲(chǔ)分割帶中每一數(shù)據(jù)區(qū)段的長(zhǎng)度為64KB,將每一個(gè)存儲(chǔ)分割帶又均等分為四份,每一子存儲(chǔ)分割帶中的子數(shù)據(jù)區(qū)段長(zhǎng)度則為16KB。如此一來(lái),在此實(shí)施例,圖3與圖4A/圖4B中的處理步驟,都將改以子存儲(chǔ)分割帶為處理單位。舉例來(lái)說(shuō),在數(shù)據(jù)讀取時(shí),可能在分析數(shù)據(jù)讀取請(qǐng)求中的邏輯地址塊后(相應(yīng)于第3圖的步驟S32),得知目標(biāo)數(shù)據(jù)位于用戶數(shù)據(jù)區(qū)段UD11中的第三與第四個(gè)子用戶數(shù)據(jù)區(qū)段、用戶數(shù)據(jù)區(qū)段UD12中的四個(gè)子用戶數(shù)據(jù)區(qū)段、以及用戶數(shù)據(jù)區(qū)段UD13中的第一與第二個(gè)子用戶數(shù)據(jù)區(qū)段,則控制器121會(huì)同時(shí)且分別對(duì)所有的磁盤裝置D1、D2、D3、D4發(fā)出輸出入請(qǐng)求,以讀取各子存儲(chǔ)分割帶中的目標(biāo)數(shù)據(jù)。其后續(xù)的處理方式與前述實(shí)施例相似,只是將數(shù)據(jù)讀取的處理單位變更為子存儲(chǔ)分割帶,因此以下不再對(duì)其內(nèi)容多做贅述。為了便于本發(fā)明之描述,本發(fā)明的存儲(chǔ)分割帶(Stripe)可包含一或多個(gè)子存儲(chǔ)分割帶(Sub-stripe);當(dāng)存儲(chǔ)分割帶僅包含一個(gè)子存儲(chǔ)分割帶時(shí),則每一數(shù)據(jù)區(qū)段僅包含一個(gè)子數(shù)據(jù)區(qū)段。
雖然本發(fā)明之實(shí)施例揭露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可做一些更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以后附的權(quán)利要求所限定的為準(zhǔn)。
權(quán)利要求
1.一種數(shù)據(jù)存取方法,由一控制器執(zhí)行,用以讀取多個(gè)存儲(chǔ)裝置中的數(shù)據(jù),其方法包括接收一數(shù)據(jù)讀取請(qǐng)求,該數(shù)據(jù)讀取請(qǐng)求包含讀取一邏輯地址塊中的數(shù)據(jù)的信息;依據(jù)該邏輯地址塊,決定至少一目標(biāo)數(shù)據(jù)所在的一子目標(biāo)存儲(chǔ)分割帶,該子目標(biāo)存儲(chǔ)分割帶包含至少一子用戶數(shù)據(jù)區(qū)段與至少一子同位數(shù)據(jù)區(qū)段;發(fā)出多個(gè)輸出入請(qǐng)求至該多個(gè)存儲(chǔ)裝置,用以讀取該至少一子用戶數(shù)據(jù)區(qū)段與該至少一子同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),該多個(gè)輸出入請(qǐng)求包含至少一第一輸出入請(qǐng)求,用以讀取該目標(biāo)數(shù)據(jù),以及至少一第二輸出入請(qǐng)求,用以讀取至少一其它相關(guān)數(shù)據(jù);以及進(jìn)行一判斷流程,包含一第一判斷,判斷該至少一目標(biāo)數(shù)據(jù)是否已成功讀取且回復(fù),若否,則再執(zhí)行一第二判斷,判斷已完成讀取的該其它相關(guān)數(shù)據(jù)是否已足以計(jì)算產(chǎn)生與該至少一目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù),若該第二判斷的結(jié)果為是,則產(chǎn)生該冗余數(shù)據(jù)。
2.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中該數(shù)據(jù)讀取請(qǐng)求自一存取要求應(yīng)用端發(fā)出。
3.如權(quán)利要求第2項(xiàng)所述的數(shù)據(jù)存取方法,其中該存取要求應(yīng)用端為一網(wǎng)絡(luò)計(jì)算機(jī)、一迷你計(jì)算機(jī)、一大型主機(jī)、一筆記型計(jì)算機(jī)、一手機(jī)、一個(gè)人數(shù)字助理、一數(shù)字錄像設(shè)備、或一數(shù)字音樂(lè)播放器。
4.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中若欲讀取的數(shù)據(jù)已存儲(chǔ)于一高速緩存空間中,則無(wú)需至該多個(gè)存儲(chǔ)裝置讀取。
5.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中當(dāng)該第一判斷的判斷結(jié)果為是,則在該至少一目標(biāo)數(shù)據(jù)回復(fù)于一存取要求應(yīng)用端后,繼續(xù)完成該至少一第二輸出入請(qǐng)求。
6.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,在產(chǎn)生與該目標(biāo)數(shù)據(jù)相同的該冗余數(shù)據(jù)后,更執(zhí)行一第三判斷,判斷該目標(biāo)數(shù)據(jù)是否在冗余數(shù)據(jù)產(chǎn)生過(guò)程中已完成讀取并回復(fù),當(dāng)該第三判斷的判斷結(jié)果為是,則丟棄該冗余數(shù)據(jù);當(dāng)該第三判斷的判斷結(jié)果為否,則將該冗余數(shù)據(jù)回復(fù)給一存取要求應(yīng)用端。
7.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中更在產(chǎn)生該冗余數(shù)據(jù)的步驟前,更增加以下步驟等待一小段時(shí)間,以及判斷是否成功讀取所有目標(biāo)數(shù)據(jù)。
8.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中該同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),包含以鏡射技術(shù)存儲(chǔ)的備份數(shù)據(jù)。
9.如權(quán)利要求第1項(xiàng)所述的數(shù)據(jù)存取方法,其中該子目標(biāo)存儲(chǔ)分割帶的大小更可擴(kuò)大為一目標(biāo)存儲(chǔ)分割帶的大小,每一該目標(biāo)存儲(chǔ)分割帶包含多個(gè)數(shù)據(jù)區(qū)段,包含至少一用戶數(shù)據(jù)區(qū)段與至少一同位數(shù)據(jù)區(qū)段,而該多個(gè)輸出入請(qǐng)求是針對(duì)該多個(gè)數(shù)據(jù)區(qū)段而發(fā)出的。
10.一種存儲(chǔ)子系統(tǒng),包括一存儲(chǔ)單元,包含多個(gè)存儲(chǔ)裝置;以及一控制器,耦接于該存儲(chǔ)單元,用以接收一數(shù)據(jù)讀取請(qǐng)求,該數(shù)據(jù)讀取請(qǐng)求包含讀取一邏輯地址塊中的數(shù)據(jù)的信息;依據(jù)該邏輯地址塊,決定至少一目標(biāo)數(shù)據(jù)所在的一子目標(biāo)存儲(chǔ)分割帶,該子目標(biāo)存儲(chǔ)分割帶包含至少一子用戶數(shù)據(jù)區(qū)段與至少一子同位數(shù)據(jù)區(qū)段;發(fā)出多個(gè)輸出入請(qǐng)求至該多個(gè)存儲(chǔ)裝置,用以讀取該至少一子用戶數(shù)據(jù)區(qū)段與該至少一子同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),該多個(gè)輸出入請(qǐng)求包含至少一第一輸出入請(qǐng)求,用以讀取該目標(biāo)數(shù)據(jù),以及至少一第二輸出入請(qǐng)求,用以讀取至少一其它相關(guān)數(shù)據(jù);以及進(jìn)行一判斷流程,包含一第一判斷,判斷該至少一目標(biāo)數(shù)據(jù)是否已成功讀取且回復(fù),若否,則再執(zhí)行一第二判斷,判斷已完成讀取的該其它相關(guān)數(shù)據(jù)是否已足以計(jì)算產(chǎn)生與該至少一目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù),若該第二判斷的結(jié)果為是,則產(chǎn)生該冗余數(shù)據(jù)。
11.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該存儲(chǔ)裝置為一磁帶機(jī)、一磁盤驅(qū)動(dòng)器、一內(nèi)存紀(jì)錄裝置、一光存儲(chǔ)記錄裝置或于同一磁盤驅(qū)動(dòng)器中的相應(yīng)于單一讀寫頭的一個(gè)扇區(qū)。
12.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該存儲(chǔ)裝置為一光纖信道磁盤驅(qū)動(dòng)器、一小型計(jì)算機(jī)系統(tǒng)接口磁盤驅(qū)動(dòng)器、一序列連接小型計(jì)算機(jī)系統(tǒng)接口磁盤驅(qū)動(dòng)器、一序列先進(jìn)技術(shù)磁盤驅(qū)動(dòng)器、或一平行先進(jìn)技術(shù)磁盤驅(qū)動(dòng)器。
13.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該控制器為一磁盤陣列控制器。
14.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該控制器與該存儲(chǔ)單元系通過(guò)光纖信道、小型計(jì)算機(jī)系統(tǒng)接口、序列連接小型計(jì)算機(jī)系統(tǒng)接口、序列先進(jìn)技術(shù)接口、或平行先進(jìn)技術(shù)接口的傳輸接口相耦接。
15.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該數(shù)據(jù)讀取請(qǐng)求自一存取要求應(yīng)用端發(fā)出。
16.如權(quán)利要求第15項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該存取要求應(yīng)用端為一網(wǎng)絡(luò)計(jì)算機(jī)、一迷你計(jì)算機(jī)、一大型主機(jī)、一筆記型計(jì)算機(jī)、一手機(jī)、一個(gè)人數(shù)字助理、一數(shù)字錄像設(shè)備、或一數(shù)字音樂(lè)播放器。
17.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中若欲讀取的數(shù)據(jù)已存儲(chǔ)在一高速緩存空間中,則無(wú)需至該多個(gè)存儲(chǔ)裝置讀取。
18.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中當(dāng)該第一判斷的判斷結(jié)果為是,則在該至少一目標(biāo)數(shù)據(jù)回復(fù)于一存取要求應(yīng)用端后,繼續(xù)完成該至少一第二輸出入請(qǐng)求。
19.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),在產(chǎn)生與該目標(biāo)數(shù)據(jù)相同的該冗余數(shù)據(jù)后,更執(zhí)行一第三判斷,判斷該目標(biāo)數(shù)據(jù)是否在冗余數(shù)據(jù)產(chǎn)生過(guò)程中已完成讀取并回復(fù),當(dāng)該第三判斷的判斷結(jié)果為是,則丟棄該冗余數(shù)據(jù);當(dāng)該第三判斷的判斷結(jié)果為否,則將該冗余數(shù)據(jù)回復(fù)給一存取要求應(yīng)用端。
20.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中更在產(chǎn)生該冗余數(shù)據(jù)的步驟前,更增加以下步驟等待一小段時(shí)間,以及判斷是否成功讀取所有目標(biāo)數(shù)據(jù)。
21.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該同位數(shù)據(jù)區(qū)段中的數(shù)據(jù),包含以鏡射技術(shù)存儲(chǔ)之備份數(shù)據(jù)。
22.如權(quán)利要求第10項(xiàng)所述的存儲(chǔ)子系統(tǒng),其中該子目標(biāo)存儲(chǔ)分割帶的大小更可擴(kuò)大為一目標(biāo)存儲(chǔ)分割帶的大小,每一該目標(biāo)存儲(chǔ)分割帶包含多個(gè)數(shù)據(jù)區(qū)段,包含至少一用戶數(shù)據(jù)區(qū)段與至少一同位數(shù)據(jù)區(qū)段,而該多個(gè)輸出入請(qǐng)求是針對(duì)該多個(gè)數(shù)據(jù)區(qū)段而發(fā)出的。
全文摘要
一種數(shù)據(jù)存取方法及其存儲(chǔ)子系統(tǒng),用以讀取磁盤陣列系統(tǒng)中存儲(chǔ)裝置之?dāng)?shù)據(jù)。當(dāng)控制器接收到一數(shù)據(jù)讀取請(qǐng)求后,根據(jù)讀取請(qǐng)求中的邏輯地址塊信息,決定欲讀取的目標(biāo)數(shù)據(jù)及其所在的子目標(biāo)存儲(chǔ)分割帶;控制器同時(shí)發(fā)出多個(gè)輸出入請(qǐng)求至所有的存儲(chǔ)裝置,以同時(shí)讀取目標(biāo)數(shù)據(jù)及其它位于相同子存儲(chǔ)分割帶上的相關(guān)數(shù)據(jù);若有目標(biāo)數(shù)據(jù)的讀取遲遲沒(méi)有響應(yīng),則可以利用已回復(fù)的其它相關(guān)數(shù)據(jù),產(chǎn)生與目標(biāo)數(shù)據(jù)相同的冗余數(shù)據(jù),以盡早響應(yīng)該數(shù)據(jù)讀取請(qǐng)求,免去不必要的等待時(shí)間。
文檔編號(hào)G06F12/08GK1971498SQ20061013606
公開日2007年5月30日 申請(qǐng)日期2006年10月20日 優(yōu)先權(quán)日2005年11月21日
發(fā)明者洪清海 申請(qǐng)人:普安科技股份有限公司