專利名稱:Raid1設(shè)備的讀取方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及磁盤(pán)陣列技術(shù),尤其涉及一種RAIDl設(shè)備的讀取方法及裝置。
背景技術(shù):
RAIDl磁盤(pán)陣列一般通過(guò)鏡像技術(shù)實(shí)現(xiàn)。很多公司使用RAIDl實(shí)現(xiàn)無(wú)中斷的備份 工作,借以保護(hù)關(guān)鍵數(shù)據(jù)。使用RAIDl時(shí)候,寫(xiě)入磁盤(pán)冗余陣列(RAID,redundant arrays of inexpensive disks)設(shè)備的數(shù)據(jù)將寫(xiě)入每一個(gè)成員磁盤(pán),并且寫(xiě)入位置相同。這樣,磁 盤(pán)陣列中出現(xiàn)磁盤(pán)損壞不會(huì)影響陣列的正常工作,即使陣列中僅留一塊磁盤(pán),也可以正常 處理RAID設(shè)備上的讀寫(xiě)請(qǐng)求。RAIDl通常應(yīng)用在需要提供較高數(shù)據(jù)冗余保護(hù),對(duì)讀寫(xiě)效能要求不高的場(chǎng)合。向 RAID設(shè)備寫(xiě)入數(shù)據(jù)時(shí)候,數(shù)據(jù)會(huì)寫(xiě)入每一個(gè)成員磁盤(pán),這就延長(zhǎng)了寫(xiě)請(qǐng)求響應(yīng)時(shí)間。許多公 司通過(guò)軟硬件來(lái)優(yōu)化寫(xiě)入效能,但是效果不甚理想。從RAID設(shè)備讀取數(shù)據(jù)時(shí)候,讀取效能 也不高,一般接近單個(gè)磁盤(pán)讀取的效能。這是因?yàn)殡m然每個(gè)成員磁盤(pán)上數(shù)據(jù)一致,但是很難 控制成員磁盤(pán)間并發(fā)讀取,讀取時(shí)一般就是單個(gè)磁盤(pán)在工作。即在讀取RAIDl設(shè)備時(shí),在磁 盤(pán)陣列內(nèi)基本上是讀取同一塊磁盤(pán),其它成員磁盤(pán)處于閑置狀態(tài)。在現(xiàn)有RAIDl技術(shù)中,有些方法是固定讀取一塊磁盤(pán),有些方法主要考慮磁盤(pán)當(dāng) 前I/O位置來(lái)選擇讀取目標(biāo)盤(pán),但讀取效能一般接近單個(gè)磁盤(pán)的效能。圖1描述了現(xiàn)在典 型的讀取算法的流程圖,從這個(gè)流程圖的步驟102到步驟106可以看出,每次新的讀取請(qǐng)求 到來(lái)時(shí)候都會(huì)檢查成員磁盤(pán)的當(dāng)前I/O位置,讀取請(qǐng)求處理完成后更新I/O位置。這樣在 順序讀取情況下,絕大多數(shù)讀請(qǐng)求都會(huì)使用到同一個(gè)目標(biāo)磁盤(pán),其它成員磁盤(pán)則處于閑置 狀態(tài)。
發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決現(xiàn)有技術(shù)中的上述問(wèn)題之一。為此,本發(fā)明的實(shí)施例提出一種RAIDl設(shè)備讀取方法及裝置,實(shí)現(xiàn)多個(gè)成員磁盤(pán) 能夠高效協(xié)同工作,提高RAIDl設(shè)備的讀取效能。根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明實(shí)施例提出了一種RAIDl設(shè)備的讀取裝置,所述 讀取裝置包括信息統(tǒng)計(jì)模塊,所述信息統(tǒng)計(jì)模塊在接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí) 統(tǒng)計(jì)RAIDl設(shè)備所包含的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息;讀取塊劃分模塊,所述讀取塊劃 分模塊根據(jù)所述請(qǐng)求讀取的數(shù)據(jù)的大小,劃分成員磁盤(pán)的讀取塊區(qū)間大?。灰约白x請(qǐng)求處 理模塊,所述讀請(qǐng)求處理模塊根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取塊區(qū)間大小,將 所述讀取請(qǐng)求分配到成員磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取。根據(jù)本發(fā)明進(jìn)一步的實(shí)施例,所述成員磁盤(pán)的當(dāng)前狀態(tài)信息包括成員磁盤(pán)的繁忙 程度和/或當(dāng)前I/O位置。所述當(dāng)前I/O位置根據(jù)上一個(gè)讀寫(xiě)請(qǐng)求的位置確定,或者根據(jù) 元數(shù)據(jù)的更新請(qǐng)求確定。根據(jù)本發(fā)明進(jìn)一步的實(shí)施例,所述讀取塊劃分模塊還根據(jù)成員磁盤(pán)的設(shè)備類型及
3/或成員磁盤(pán)的預(yù)讀設(shè)置來(lái)確定所述讀取塊區(qū)間大小。根據(jù)本發(fā)明的另一方面,本發(fā)明的實(shí)施例提出一種RAIDl設(shè)備的讀取方法,所述 讀取方法包括以下步驟a)在接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí),統(tǒng)計(jì)RAIDl設(shè)備所包 含的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息;b)根據(jù)請(qǐng)求讀取的數(shù)據(jù)大小,劃分成員磁盤(pán)的讀取區(qū) 間大小;以及c)根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取區(qū)間大小,將所述讀取請(qǐng)求分 配到成員磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取。根據(jù)本發(fā)明進(jìn)一步的實(shí)施例,所述成員磁盤(pán)的當(dāng)前狀態(tài)信息包括成員磁盤(pán)的繁忙 程度和/或當(dāng)前I/O位置。所述當(dāng)前I/O位置根據(jù)上一個(gè)讀寫(xiě)請(qǐng)求的位置確定,或者根據(jù) 元數(shù)據(jù)的更新請(qǐng)求確定。根據(jù)本發(fā)明進(jìn)一步的實(shí)施例,所述讀取區(qū)間大小還進(jìn)一步根據(jù)成員磁盤(pán)的設(shè)備類 型及/或成員磁盤(pán)的預(yù)讀設(shè)置來(lái)確定。根據(jù)本發(fā)明進(jìn)一步的實(shí)施例,所述步驟c包括在接收到所述讀取請(qǐng)求時(shí),檢查各 個(gè)成員磁盤(pán)的繁忙程度;若存在空閑的成員磁盤(pán)時(shí),根據(jù)所述讀取請(qǐng)求的位置選擇一個(gè)空 閑的成員磁盤(pán)作為第一目標(biāo)磁盤(pán)以執(zhí)行所述讀取區(qū)間大小的數(shù)據(jù)讀??;在執(zhí)行所述數(shù)據(jù)讀 取的同時(shí)再次檢查其它成員磁盤(pán)的繁忙程度;若存在空閑的成員磁盤(pán)時(shí),選擇另一個(gè)空閑 的成員磁盤(pán)作為第二目標(biāo)磁盤(pán)執(zhí)行所述讀取區(qū)間大小的下一個(gè)區(qū)間的數(shù)據(jù)讀取,并放入緩 存中;以及在接到新的讀取請(qǐng)求時(shí),若所述新的讀取請(qǐng)求的位置位于所述第二目標(biāo)磁盤(pán)的 讀取區(qū)間范圍內(nèi),則從所述緩存中讀取對(duì)應(yīng)的數(shù)據(jù)。本發(fā)明考慮成員磁盤(pán)當(dāng)前I/O位置,磁盤(pán)效能,磁盤(pán)繁忙程度、用戶讀請(qǐng)求連續(xù)性 等等各種因素,從而控制多個(gè)成員磁盤(pán)并發(fā)高效地協(xié)同工作。這樣,讀取數(shù)據(jù)時(shí)候?qū)⒉辉儆?閑置磁盤(pán),尤其是順序讀大文件情況下。從而提高了 RAIDl設(shè)備的讀取效能,縮短用戶讀請(qǐng) 求響應(yīng)時(shí)間。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。
圖1為現(xiàn)有技術(shù)的RAIDl設(shè)備的讀取方法流程圖;圖2為本發(fā)明實(shí)施例的RAIDl設(shè)備的讀取裝置結(jié)構(gòu)原理圖;圖3為本發(fā)明的RAIDl設(shè)備的讀取方法流程圖;圖4為本發(fā)明一個(gè)實(shí)施例的RAIDl設(shè)備的讀取方法流程圖;以及圖5為本發(fā)明實(shí)施例的數(shù)據(jù)讀取示意圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號(hào)表示相同或類似的組件或具有相同或類似功能的組件。下面通過(guò)參考附 圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。首先參考圖2,該圖顯示了本發(fā)明實(shí)施例的RAIDl設(shè)備的讀取裝置結(jié)構(gòu)原理圖。如 圖2所示,針對(duì)由多個(gè)成員磁盤(pán),成員磁盤(pán)1,成員磁盤(pán)2,......成員磁盤(pán)η構(gòu)成的RAIDl設(shè)備10,本發(fā)明實(shí)施例的讀取裝置20包括信息統(tǒng)計(jì)模塊22、讀取塊劃分模塊沈以及讀請(qǐng) 求處理模塊觀。信息統(tǒng)計(jì)模塊22在接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí),統(tǒng)計(jì)RAIDl設(shè) 備所包含的各個(gè)成員磁盤(pán)1 η的當(dāng)前狀態(tài)信息。讀取塊劃分模塊沈根據(jù)請(qǐng)求對(duì)應(yīng)讀取 的數(shù)據(jù)的大小,劃分成員磁盤(pán)的讀取塊區(qū)間大小,以及讀請(qǐng)求處理模塊觀則根據(jù)各個(gè)成員 磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取塊區(qū)間大小,將讀取請(qǐng)求分配到成員磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀 取。在讀請(qǐng)求處理模塊觀內(nèi),處理當(dāng)前讀請(qǐng)求同時(shí),發(fā)現(xiàn)控制器內(nèi)存在空閑磁盤(pán),則將從空 閑磁盤(pán)提前讀取下一個(gè)區(qū)間數(shù)據(jù)進(jìn)入緩存。這樣,順序讀情況下會(huì)有較高效能。在一個(gè)實(shí)施例中,信息統(tǒng)計(jì)模塊22統(tǒng)計(jì)的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息包括成 員磁盤(pán)的繁忙程度和/或當(dāng)前I/O位置。其中,對(duì)于統(tǒng)計(jì)磁盤(pán)繁忙程度,可以根據(jù)操作系統(tǒng) 記錄的磁盤(pán)自開(kāi)機(jī)以來(lái)讀寫(xiě)請(qǐng)求總數(shù),統(tǒng)計(jì)磁盤(pán)讀寫(xiě)請(qǐng)求變化情況,并且動(dòng)態(tài)更新數(shù)據(jù)。根 據(jù)操作系統(tǒng)提供的這些信息,可以統(tǒng)計(jì)磁盤(pán)一個(gè)時(shí)間段到現(xiàn)在的繁忙程度。如果這個(gè)時(shí)間 比較短,例如前10秒,30秒的歷史數(shù)據(jù)統(tǒng)計(jì)等,這個(gè)繁忙程度可以反映當(dāng)前磁盤(pán)的狀態(tài)。另外,對(duì)于成員磁盤(pán)的當(dāng)前I/O位置統(tǒng)計(jì),在RAIDl控制器內(nèi),成員磁盤(pán)上包括兩 種類型讀寫(xiě)請(qǐng)求用戶下發(fā)的請(qǐng)求以及控制器自身更新元數(shù)據(jù)的請(qǐng)求。一般通過(guò)記錄上 一個(gè)用戶讀寫(xiě)請(qǐng)求位置來(lái)保存當(dāng)前磁盤(pán)的I/O位置,這種方式僅適用于追蹤用戶下發(fā)的請(qǐng) 求。除了用戶下發(fā)的讀寫(xiě)請(qǐng)求,成員磁盤(pán)上還有元數(shù)據(jù)更新請(qǐng)求,處理這些請(qǐng)求時(shí)候同樣要 記錄當(dāng)前I/O位置。在本發(fā)明一個(gè)實(shí)施例中,可以兼顧成員磁盤(pán)上全部I/O請(qǐng)求,準(zhǔn)確標(biāo)示 當(dāng)前I/O位置。讀取塊劃分模塊觀劃分成員磁盤(pán)的讀取塊區(qū)間大小是為了實(shí)現(xiàn)多個(gè)成員磁盤(pán)并 發(fā)讀取,由讀取塊劃分模塊觀自動(dòng)設(shè)置。在自動(dòng)設(shè)置時(shí)候,讀取塊劃分模塊觀列舉一些區(qū) 間值,分別測(cè)試這些區(qū)間值,選擇并發(fā)效能最好的(如64k,32k)。測(cè)試區(qū)間值時(shí)候,順序讀 取成員磁盤(pán),從一個(gè)成員磁盤(pán)上讀取一定區(qū)間大小的數(shù)據(jù),從另一塊成員磁盤(pán)上讀取下一 個(gè)區(qū)間大小的數(shù)據(jù),如果采用該區(qū)間大小,另一塊成員磁盤(pán)讀取的下一個(gè)區(qū)間數(shù)據(jù)在緩存 中被大部分命中,且兩塊磁盤(pán)讀效能接近,說(shuō)明采用該區(qū)間大小比較合適。因此,可以據(jù)此 將成員磁盤(pán)的讀取塊區(qū)間設(shè)大小置為該固定值。另外,在劃分成員磁盤(pán)的讀取塊區(qū)間大小時(shí),讀取塊劃分模塊觀還可以考慮磁盤(pán) 設(shè)備類型,不同類型具有不同的讀寫(xiě)效能。在RAIDl中,處理寫(xiě)請(qǐng)求時(shí)候數(shù)據(jù)會(huì)平行寫(xiě)入每 個(gè)磁盤(pán),因此數(shù)據(jù)塊(CHUNK)大小對(duì)寫(xiě)效能沒(méi)有影響;處理讀請(qǐng)求時(shí)候CHUNK是從磁盤(pán)讀取 的最小單位,CHUNK大小對(duì)設(shè)備效能影響非常明顯,因此需要設(shè)置合適的CHUNK大小。一般 而言,大塊文件讀寫(xiě)時(shí)讀取塊劃分模塊觀采用較大CHUNK大小系統(tǒng)消耗會(huì)小點(diǎn),而小文件 讀寫(xiě)時(shí)讀取塊劃分模塊觀采用較小CHUNK比較適宜。其次,還可以考慮到磁盤(pán)設(shè)備的預(yù)讀設(shè)置,為了提高讀取時(shí)候在緩存中的命中率, 一般系統(tǒng)都會(huì)提前把一定區(qū)間數(shù)據(jù)讀進(jìn)緩存。從而,計(jì)算成員磁盤(pán)合適的讀取區(qū)間大小。這 樣當(dāng)一塊成員磁盤(pán)讀取同時(shí),其它成員磁盤(pán)才能準(zhǔn)確定位并讀取其它區(qū)間。再者,設(shè)定合適的CHUNK大小,需要綜合考慮文件系統(tǒng),磁盤(pán)類型,系統(tǒng)配置等多 重因素。因此,讀取塊劃分模塊觀還可以為用戶設(shè)置CHUNK大小留下接口。S卩,讀取塊區(qū) 間大小也可以根據(jù)訪問(wèn)特點(diǎn),作為效能調(diào)節(jié)的一個(gè)參數(shù)供用戶設(shè)置或指定。讀請(qǐng)求處理模塊觀則綜合考慮上述統(tǒng)計(jì)信息,把讀取請(qǐng)求分散到多個(gè)成員磁盤(pán) 上,動(dòng)態(tài)平衡各個(gè)成員磁盤(pán)間負(fù)擔(dān),可以達(dá)到優(yōu)化RAIDl讀效能的目的。
5
具體來(lái)說(shuō),在每次讀取請(qǐng)求到來(lái)時(shí),讀請(qǐng)求處理模塊觀首先判斷請(qǐng)求位于的當(dāng)前 CHUNK是否已經(jīng)被某個(gè)成員磁盤(pán)提前讀出,如果是就把請(qǐng)求分配給這個(gè)成員磁盤(pán)。如果沒(méi)有 被提前讀出,根據(jù)成員磁盤(pán)的繁忙程度來(lái)選擇目標(biāo)磁盤(pán)若存在空閑的成員磁盤(pán)時(shí),根據(jù)讀 取請(qǐng)求的位置選擇一個(gè)空閑的成員磁盤(pán)作為目標(biāo)磁盤(pán)以執(zhí)行讀取區(qū)間大小的數(shù)據(jù)讀取。在 選擇目標(biāo)磁盤(pán)讀取的同時(shí),讀請(qǐng)求處理模塊觀再次檢查其它磁盤(pán)的繁忙程度。如果存在空 閑磁盤(pán),將這個(gè)空閑磁盤(pán)設(shè)置為新的目標(biāo)磁盤(pán),通知其讀取下一個(gè)CHUNK數(shù)據(jù)。這樣,實(shí)際上就有兩個(gè)磁盤(pán)在并發(fā)讀取,并且讀取的區(qū)間位置前后連續(xù)。新的目標(biāo) 磁盤(pán)讀取出的數(shù)據(jù)將放入緩存,并會(huì)記錄下新的目標(biāo)磁盤(pán)在陣列中的順序與讀取的位置。 這樣,當(dāng)新的讀取請(qǐng)求到來(lái)時(shí),讀請(qǐng)求處理模塊觀判斷新請(qǐng)求是否位于新的目標(biāo)磁盤(pán)讀取 出的區(qū)間范圍內(nèi)。如果位于,將這些請(qǐng)求發(fā)送給新的目標(biāo)磁盤(pán),因?yàn)檫@些數(shù)據(jù)已經(jīng)讀入緩 存,讀請(qǐng)求將從緩存中獲取數(shù)據(jù)并很快返回。若新的讀取請(qǐng)求的位置不在新的目標(biāo)磁盤(pán)的 讀取區(qū)間范圍內(nèi),則繼續(xù)根據(jù)成員磁盤(pán)的繁忙程度選擇一個(gè)空閑成員磁盤(pán)作為目標(biāo)磁盤(pán)以 分配該新的讀取請(qǐng)求。讀請(qǐng)求處理模塊觀這種讀取當(dāng)前目標(biāo)磁盤(pán)同時(shí)尋找新的目標(biāo)磁盤(pán) 動(dòng)作會(huì)繼續(xù)下去。在一個(gè)實(shí)施例中,讀請(qǐng)求處理模塊觀還可以進(jìn)一步結(jié)合空閑成員磁盤(pán)中距離讀 取請(qǐng)求的位置最近的當(dāng)前I/O位置選擇對(duì)應(yīng)的目標(biāo)磁盤(pán)。也就是說(shuō),如果I/O位置最接近, 且磁盤(pán)不處于繁忙狀態(tài),選擇當(dāng)前磁盤(pán)作為目標(biāo)磁盤(pán);如果I/O位置最接近,但磁盤(pán)處于繁 忙狀態(tài),選擇其它磁盤(pán)中當(dāng)前I/O位置比較接近的作為目標(biāo)磁盤(pán)。圖3給出了本發(fā)明RAIDl設(shè)備的讀取方法流程圖,如圖所示,包括以下步驟在 接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí),統(tǒng)計(jì)RAIDl設(shè)備所包含的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài) 信息(步驟20 ;然后,根據(jù)請(qǐng)求讀取的數(shù)據(jù)大小,劃分成員磁盤(pán)的讀取區(qū)間大小(步驟 204);最后,根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取區(qū)間大小,將讀取請(qǐng)求分配到成員 磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取(步驟208)。在一個(gè)實(shí)施例中,所統(tǒng)計(jì)的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息包括成員磁盤(pán)的繁忙 程度和/或當(dāng)前I/O位置。成員磁盤(pán)繁忙程度可以根據(jù)操作系統(tǒng)記錄的磁盤(pán)自開(kāi)機(jī)以來(lái)讀 寫(xiě)請(qǐng)求總數(shù),統(tǒng)計(jì)磁盤(pán)讀寫(xiě)請(qǐng)求變化情況,并且動(dòng)態(tài)更新數(shù)據(jù)。根據(jù)操作系統(tǒng)提供的這些信 息,可以統(tǒng)計(jì)磁盤(pán)一個(gè)時(shí)間段到現(xiàn)在的繁忙程度。另外,對(duì)于成員磁盤(pán)的當(dāng)前I/O位置統(tǒng)計(jì),在RAIDl控制器內(nèi),成員磁盤(pán)上可以包 括兩種類型讀寫(xiě)請(qǐng)求用戶下發(fā)的請(qǐng)求以及控制器自身更新元數(shù)據(jù)的請(qǐng)求。因此,成員磁盤(pán) 的當(dāng)前I/O位置可以根據(jù)上一個(gè)讀寫(xiě)請(qǐng)求的位置確定。在存在元數(shù)據(jù)更新請(qǐng)求時(shí),當(dāng)前I/ 0位置則根據(jù)元數(shù)據(jù)的更新請(qǐng)求確定。劃分成員磁盤(pán)的讀取塊區(qū)間大小是為了實(shí)現(xiàn)多個(gè)成員磁盤(pán)并發(fā)讀取,可由RAIDl 控制器自動(dòng)設(shè)置。在自動(dòng)設(shè)置時(shí)候,列舉一些區(qū)間值,分別測(cè)試這些區(qū)間值,選擇并發(fā)效能 最好的(如64k,32k)。測(cè)試區(qū)間值時(shí)候,順序讀取成員磁盤(pán),從一個(gè)成員磁盤(pán)上讀取一定區(qū) 間大小的數(shù)據(jù),從另一塊成員磁盤(pán)上讀取下一個(gè)區(qū)間大小的數(shù)據(jù),如果采用該區(qū)間大小,另 一塊成員磁盤(pán)讀取的下一個(gè)區(qū)間數(shù)據(jù)在緩存中被大部分命中,且兩塊磁盤(pán)讀效能接近,說(shuō) 明采用該區(qū)間大小比較合適。因此,可以據(jù)此將各個(gè)成員磁盤(pán)的讀取塊區(qū)間設(shè)大小置為該 固定值。另外,在劃分各個(gè)成員磁盤(pán)的讀取塊區(qū)間大小時(shí),還可以考慮磁盤(pán)設(shè)備類型,不同類型具有不同的讀寫(xiě)效能。處理讀請(qǐng)求時(shí)候CHUNK是從磁盤(pán)讀取的最小單位,CHUNK大小 對(duì)設(shè)備效能影響非常明顯,因此需要設(shè)置合適的CHUNK大小。一般而言,大塊文件讀寫(xiě)時(shí)采 用較大CHUNK大小系統(tǒng)消耗會(huì)小點(diǎn),而小文件讀寫(xiě)時(shí)采用較小CHUNK比較適宜。其次,還可以考慮到磁盤(pán)設(shè)備的預(yù)讀設(shè)置,為了提高讀取時(shí)候在緩存中的命中率, 一般系統(tǒng)都會(huì)提前把一定區(qū)間數(shù)據(jù)讀進(jìn)緩存。從而,計(jì)算成員磁盤(pán)合適的讀取區(qū)間大小。這 樣當(dāng)一塊成員磁盤(pán)讀取同時(shí),其它成員磁盤(pán)才能準(zhǔn)確定位并讀取其它區(qū)間。再者,設(shè)定合適的CHUNK大小,需要綜合考慮文件系統(tǒng),磁盤(pán)類型,系統(tǒng)配置等多 重因素。因此,本方法還可以包括為用戶設(shè)置CHUNK大小留下接口的步驟。即,讀取塊區(qū)間 大小也可以根據(jù)訪問(wèn)特點(diǎn),作為效能調(diào)節(jié)的一個(gè)參數(shù)供用戶設(shè)置或指定。通過(guò)綜合考慮上述統(tǒng)計(jì)信息以及合適大小的成員磁盤(pán)讀取區(qū)間,把讀取請(qǐng)求分散 到多個(gè)成員磁盤(pán)上,動(dòng)態(tài)平衡各個(gè)成員磁盤(pán)間負(fù)擔(dān),可以達(dá)到優(yōu)化RAIDl讀效能的目的。具體來(lái)說(shuō),在每次讀取請(qǐng)求到來(lái)時(shí),對(duì)于沒(méi)有被提前讀出的數(shù)據(jù),根據(jù)成員磁盤(pán)的 繁忙程度來(lái)選擇目標(biāo)磁盤(pán)若存在空閑的成員磁盤(pán)時(shí),根據(jù)讀取請(qǐng)求的位置選擇一個(gè)空閑 的成員磁盤(pán)作為目標(biāo)磁盤(pán)以執(zhí)行讀取區(qū)間大小的數(shù)據(jù)讀取。在選擇目標(biāo)磁盤(pán)讀取的同時(shí), 再次檢查其它磁盤(pán)的繁忙程度。如果存在空閑磁盤(pán),將這個(gè)空閑磁盤(pán)設(shè)置為新的目標(biāo)磁盤(pán), 通知其讀取下一個(gè)CHUNK數(shù)據(jù)。這樣,兩個(gè)磁盤(pán)并發(fā)讀取,并且讀取的區(qū)間位置前后連續(xù)。新的目標(biāo)磁盤(pán)讀取出的 數(shù)據(jù)將放入緩存,并會(huì)記錄下新的目標(biāo)磁盤(pán)在陣列中的順序與讀取的位置。這樣,當(dāng)新的讀 取請(qǐng)求到來(lái)時(shí),首先判斷新請(qǐng)求是否位于新的目標(biāo)磁盤(pán)讀取出的區(qū)間范圍內(nèi)。如果位于,將 這些請(qǐng)求發(fā)送給新的目標(biāo)磁盤(pán),因?yàn)檫@些數(shù)據(jù)已經(jīng)讀入緩存,讀請(qǐng)求將從緩存中獲取數(shù)據(jù) 并很快返回。若新的讀取請(qǐng)求的位置不在新的目標(biāo)磁盤(pán)的讀取區(qū)間范圍內(nèi),則繼續(xù)根據(jù)成 員磁盤(pán)的繁忙程度選擇一個(gè)空閑成員磁盤(pán)作為目標(biāo)磁盤(pán)以分配該新的讀取請(qǐng)求。這種讀取 當(dāng)前目標(biāo)磁盤(pán)同時(shí)尋找新的目標(biāo)磁盤(pán)動(dòng)作會(huì)繼續(xù)下去。當(dāng)前I/O位置關(guān)系來(lái)選擇目標(biāo)磁盤(pán)如果I/O位置最接近,且磁盤(pán)不處于繁忙狀 態(tài),選擇當(dāng)前磁盤(pán)作為目標(biāo)磁盤(pán);如果I/O位置最接近,但磁盤(pán)處于繁忙狀態(tài),選擇其它磁 盤(pán)中當(dāng)前I/O位置比較接近的作為目標(biāo)磁盤(pán)。圖4給出了本發(fā)明一個(gè)實(shí)施例的RAIDl設(shè)備的讀取方法流程圖,在該實(shí)施例中,本 發(fā)明的讀取方法同時(shí)考慮了成員磁盤(pán)的當(dāng)前I/O位置與繁忙程度等當(dāng)前狀態(tài)信息。具體來(lái)說(shuō),RAIDl設(shè)備首先接收到新的讀請(qǐng)求以讀取其中的數(shù)據(jù)(步驟30 ,之后 會(huì)判斷讀請(qǐng)求的數(shù)據(jù)是否被某個(gè)成員磁盤(pán)預(yù)先讀出(步驟304),這里的預(yù)先讀出是針對(duì)之 前存在讀請(qǐng)求的數(shù)據(jù)緩存讀取操作,在接收的讀請(qǐng)求為首次請(qǐng)求時(shí),該步驟則可以略去。如果沒(méi)有被提前讀出,則根據(jù)讀請(qǐng)求的位置和成員磁盤(pán)當(dāng)前I/O位置關(guān)系以及成 員磁盤(pán)當(dāng)前繁忙程度來(lái)選擇目標(biāo)磁盤(pán)處理讀請(qǐng)求(步驟306)如果I/O位置最接近,且磁 盤(pán)不處于繁忙狀態(tài),選擇當(dāng)前磁盤(pán)作為目標(biāo)磁盤(pán);如果I/O位置最接近,但磁盤(pán)處于繁忙狀 態(tài),選擇其它磁盤(pán)中當(dāng)前I/O位置比較接近的作為目標(biāo)磁盤(pán)。然后,在步驟306中選擇目標(biāo)磁盤(pán)讀取的同時(shí),再次檢查其它成員磁盤(pán)的繁忙程 度。如果存在空閑磁盤(pán),將這個(gè)空閑磁盤(pán)設(shè)置為新的目標(biāo)磁盤(pán),并從該空閑成員磁盤(pán)上讀取 與該請(qǐng)求相鄰的下一個(gè)區(qū)間數(shù)據(jù)(步驟308),并將讀取出的數(shù)據(jù)將放入緩存。最后,將讀請(qǐng)求對(duì)應(yīng)的直接讀取數(shù)據(jù)或者緩存讀取數(shù)據(jù)返回(步驟310)。重復(fù)上
7述步驟,即能夠不斷地處理每次的RAIDl數(shù)據(jù)讀取請(qǐng)求。圖5給出了利用本發(fā)明對(duì)由兩塊成員磁盤(pán)組成的RAIDl進(jìn)行數(shù)據(jù)讀取的例子,其 中成員磁盤(pán)30、40上分別存儲(chǔ)了相同的數(shù)據(jù)A,B, C,D。假定每個(gè)數(shù)據(jù)對(duì)應(yīng)一個(gè)讀取區(qū)間, 這四個(gè)數(shù)據(jù)連續(xù)存儲(chǔ),用戶需要讀取數(shù)據(jù)A時(shí),首先選擇成員磁盤(pán)30作為目標(biāo)磁盤(pán)讀取數(shù) 據(jù)A,讀取同時(shí)檢查成員磁盤(pán)40的狀態(tài)。如果設(shè)備處于閑置狀態(tài),則選擇成員磁盤(pán)40作為新的目標(biāo)磁盤(pán),通知其讀取數(shù)據(jù) B,這樣當(dāng)用戶需要讀取數(shù)據(jù)B時(shí)候,把成員磁盤(pán)40作為目標(biāo)磁盤(pán),因?yàn)閿?shù)據(jù)已經(jīng)讀出,可以 直接返給用戶。這個(gè)動(dòng)作會(huì)持續(xù)下去直至完成相應(yīng)的讀請(qǐng)求。由于RAIDl采用鏡像技術(shù),成員磁盤(pán)上保存的數(shù)據(jù)一致,因此本發(fā)明綜合考慮多 方面因素,例如成員磁盤(pán)當(dāng)前I/O位置,磁盤(pán)效能,磁盤(pán)繁忙程度,用戶讀請(qǐng)求連續(xù)性等等, 從而控制多個(gè)成員磁盤(pán)并發(fā)高效地協(xié)同工作。這樣,讀取數(shù)據(jù)時(shí)候?qū)⒉辉儆虚e置磁盤(pán),尤其 是順序讀大文件情況下。從而提高了 RAIDl設(shè)備的讀取效能,縮短用戶讀請(qǐng)求響應(yīng)時(shí)間。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟 悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變 形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種RAIDl設(shè)備的讀取裝置,其特征在于,所述讀取裝置包括信息統(tǒng)計(jì)模塊,所述信息統(tǒng)計(jì)模塊在接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí)統(tǒng)計(jì)RAIDl 設(shè)備所包含的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息;讀取塊劃分模塊,所述讀取塊劃分模塊根據(jù)所述請(qǐng)求讀取的數(shù)據(jù)的大小,劃分成員磁 盤(pán)的讀取塊區(qū)間大??;以及讀請(qǐng)求處理模塊,所述讀請(qǐng)求處理模塊根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取塊 區(qū)間大小,將所述讀取請(qǐng)求分配到成員磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取。
2.如權(quán)利要求1所述的RAIDl設(shè)備的讀取裝置,其特征在于,所述成員磁盤(pán)的當(dāng)前狀態(tài) 信息包括成員磁盤(pán)的繁忙程度和/或當(dāng)前I/O位置。
3.如權(quán)利要求2所述的RAIDl設(shè)備的讀取裝置,其特征在于,所述當(dāng)前I/O位置根據(jù)上 一個(gè)讀寫(xiě)請(qǐng)求的位置和/或根據(jù)元數(shù)據(jù)的更新請(qǐng)求確定。
4.如權(quán)利要求1所述的RAIDl設(shè)備的讀取裝置,其特征在于,所述讀取塊劃分模塊還根 據(jù)成員磁盤(pán)的設(shè)備類型及/或成員磁盤(pán)的預(yù)讀設(shè)置來(lái)確定所述讀取塊區(qū)間大小。
5.一種RAIDl設(shè)備的讀取方法,其特征在于,所述讀取方法包括以下步驟a)在接收到RAIDl設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí),統(tǒng)計(jì)RAIDl設(shè)備所包含的各個(gè)成員磁盤(pán)的 當(dāng)前狀態(tài)信息;b)根據(jù)請(qǐng)求讀取的數(shù)據(jù)大小,劃分成員磁盤(pán)的讀取區(qū)間大??;以及c)根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取區(qū)間大小,將所述讀取請(qǐng)求分配到成員 磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取。
6.如權(quán)利要求5所述的RAIDl設(shè)備的讀取方法,其特征在于,所述成員磁盤(pán)的當(dāng)前狀態(tài) 信息包括成員磁盤(pán)的繁忙程度和/或當(dāng)前I/O位置。
7.如權(quán)利要求6所述的RAIDl設(shè)備的讀取方法,其特征在于,所述當(dāng)前I/O位置根據(jù)上 一個(gè)讀寫(xiě)請(qǐng)求的位置和/或根據(jù)元數(shù)據(jù)的更新請(qǐng)求確定。
8.如權(quán)利要求5所述的RAIDl設(shè)備的讀取方法,其特征在于,所述讀取區(qū)間大小還進(jìn)一 步根據(jù)成員磁盤(pán)的設(shè)備類型及/或成員磁盤(pán)的預(yù)讀設(shè)置來(lái)確定。
9.如權(quán)利要求6所述的RAIDl設(shè)備的讀取方法,其特征在于,所述步驟c包括在接收到所述讀取請(qǐng)求時(shí),檢查各個(gè)成員磁盤(pán)的繁忙程度;若存在空閑的成員磁盤(pán)時(shí),根據(jù)所述讀取請(qǐng)求的位置選擇一個(gè)空閑的成員磁盤(pán)作為第 一目標(biāo)磁盤(pán)以執(zhí)行所述讀取區(qū)間大小的數(shù)據(jù)讀?。辉趫?zhí)行所述數(shù)據(jù)讀取的同時(shí)再次檢查其它成員磁盤(pán)的繁忙程度;若存在空閑的成員磁盤(pán)時(shí),選擇另一個(gè)空閑的成員磁盤(pán)作為第二目標(biāo)磁盤(pán)執(zhí)行所述讀 取區(qū)間大小的下一個(gè)區(qū)間的數(shù)據(jù)讀取,并放入緩存中;以及在接到新的讀取請(qǐng)求時(shí),若所述新的讀取請(qǐng)求的位置位于所述第二目標(biāo)磁盤(pán)的讀取區(qū) 間范圍內(nèi),則從所述緩存中讀取對(duì)應(yīng)的數(shù)據(jù)。
10.如權(quán)利要求9所述的RAIDl設(shè)備的讀取方法,其特征在于,進(jìn)一步根據(jù)空閑成員磁 盤(pán)中距離所述讀取請(qǐng)求的位置最近的當(dāng)前I/O位置選擇所述目標(biāo)磁盤(pán)。
全文摘要
本發(fā)明公開(kāi)了一種RAID1設(shè)備的讀取方法及裝置,該裝置包括信息統(tǒng)計(jì)模塊,在接收到RAID1設(shè)備數(shù)據(jù)的讀取請(qǐng)求時(shí)統(tǒng)計(jì)RAID1設(shè)備所包含的各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息;讀取塊劃分模塊,根據(jù)所述請(qǐng)求讀取的數(shù)據(jù)的大小,劃分成員磁盤(pán)的讀取塊區(qū)間大??;以及讀請(qǐng)求處理模塊,根據(jù)各個(gè)成員磁盤(pán)的當(dāng)前狀態(tài)信息以及讀取塊區(qū)間大小,將所述讀取請(qǐng)求分配到成員磁盤(pán)上執(zhí)行并行數(shù)據(jù)讀取,通知空閑成員磁盤(pán)將下一個(gè)區(qū)間數(shù)據(jù)提前讀入緩存。本發(fā)明能夠提高了RAID1設(shè)備的讀取效能。
文檔編號(hào)G06F12/08GK102081509SQ20091025332
公開(kāi)日2011年6月1日 申請(qǐng)日期2009年11月30日 優(yōu)先權(quán)日2009年11月30日
發(fā)明者姚海挺, 陳玄同 申請(qǐng)人:英業(yè)達(dá)股份有限公司