日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

磁盤陣列結構中進行回寫的方法

文檔序號:6420655閱讀:435來源:國知局
專利名稱:磁盤陣列結構中進行回寫的方法
技術領域
本發(fā)明涉及數據的存儲,尤其涉及一種磁盤陣列結構中進行回寫的方法。
背景技術
隨著計算機應用領域的不斷拓寬,用戶對于存儲系統的容量要求越來越大,對其可靠性、可用性要求越來越高,速度要求也越來越快。微處理器的處理速度相應提高很快。但是作為主要外存的磁盤由于機械運動的限制,其速度改善不大(存取時間停留在毫秒級),這樣就大大限制了SAN(存儲區(qū)域網絡)系統的整體性能。解決這個瓶頸的帶Cache(高速緩存)的磁盤陣列結構(RAID),以其高效、快速、大容量、高可靠性和靈活、價廉的優(yōu)點在高性能計算機存儲中占主導地位。
磁盤陣列技術將普通硬盤組成一個磁盤陣列,在主機寫入數據時,RAID控制器把主機要寫入的數據分解為多個數據塊,然后并行寫入磁盤陣列;主機讀取數據時,RAID控制器并行讀取分散在磁盤陣列中各個硬盤上的數據,把它們重新組合后提供給主機。由于采用并行讀寫操作,從而提高了存儲系統的存取程度。此外,RAID磁盤陣列還可以采用鏡像、奇偶校驗等措施,來提高系統的容錯能力,保證數據的可靠性。
根據RAID所采用的方法不同,可以將其分為0-5六個級別RAID 0即數據分條技術,主機要求寫入數據時,RAID控制器將數據分成許多塊,然后并行地將它們寫到磁盤陣列中的各個硬盤上;讀出數據時,RAID控制器從各個硬盤上讀取數據,把這些數據恢復為原來順序后傳給主機。整個邏輯盤的數據是被分條(stripped)分布在多個物理磁盤上,可以并行讀/寫,提供最快的速度,但沒有冗余能力。這種方法的優(yōu)點是采用數據分塊、并行傳送方式,能夠提高主機讀寫速度,并且磁盤陣列中存儲空間沒有冗余。但它對系統的可靠性沒有任何提高,任一個硬盤介質出現故障時,系統無法恢復。
RAID 1它把磁盤陣列中的硬盤分成相同的兩組,互為鏡像,當任一磁盤介質出現故障時,可以利用其鏡像上的數據恢復,從而提高系統的容錯能力。對數據的操作仍采用分塊后并行傳輸方式。所以RAID 1不僅提高了讀寫速度,也加強系統的可靠性。但其缺點是硬盤的利用率低,冗余度為50%。
RAID 2/RAID 4這兩個級別在實際中很少應用,多數系統也不支持,這里不作介紹。
RAID 3同RAID 0一樣,RAID 3也采用數據分塊并行傳送的方法,但所不同的是它在數據分塊之后計算它們的奇偶校驗和,然后把分塊數據和奇偶校驗信息一并寫到硬盤陣列中。采用這種方法對數據的存取速度和可靠性都有所改善,當陣列中任一硬盤損壞時,可以利用其它數據盤和奇偶校驗盤上的信息重構原始數據。在硬盤利用率方面,RAID 3比RAID 1要高,例如由5個硬盤組成的陣列,冗余度只有20%。不過,RAID 3也有缺點,由于奇偶校驗信息固定存儲在一個硬盤上,使該硬盤負擔較重,從而產生新的瓶頸。
RAID 5與RAID 3所采用的數據處理方法相似,所不同的是它把奇偶較驗信息交叉寫到陣列中的每個硬盤上,從而克服了RAID 3中的瓶頸問題。
如圖1所示為RAID5中分條單元及分條的結構示意圖,整個邏輯盤的數據是按分條分布在物理磁盤1、磁盤2、磁盤3和磁盤4上,可以并行讀/寫,主機訪問的邏輯盤地址是按照D1、D2、D3、D4、......D11、D12順序編排的。其中分條1由分條單元D1、D2、D3和校驗單元P組成。
目前在帶Cache(高速緩存)的磁盤陣列結構中普遍采用快速寫技術(Fast Write),即當主機寫請求到來時,數據塊寫進Cache后即發(fā)響應完成信號,實際回寫操作在后臺異步實現,減少了寫請求響應時間。因為實際寫入過程延遲,所以同磁道或柱面的數據可以一次寫入,從而減少了磁盤尋道次數。將多個小塊寫合并成一次大塊或滿塊寫,有效減少了小塊寫的比例,減少了磁盤寫入次數。
回寫是將Cache中寫數據寫入磁盤的過程,回寫時間=磁頭定位時間(尋道時間和旋轉延遲)+數據傳輸時間,相對來說磁頭定位時間是很長的(毫秒級別),而數據傳輸時間跟寫數據的大小有關,且沒有優(yōu)化的余地,因此要提高回寫效率,主要是減少磁頭定位時間。
RAID5技術將若干個物理磁盤捆綁在一起提供給用戶,通過為用戶數據維護校驗數據達到單盤故障仍能恢復數據的功能。用戶認為這若干個磁盤是一個磁盤(邏輯盤)。
其中,最常用的校驗數據公式為分條中的校驗數據=該分條中所有用戶數據分條單元數據的異或如圖2所示,就是校驗數據P=D0 XOR D1 XOR D2(其中,XOR為異或操作)。
每次對磁盤的寫,代表D0、D1或者D2有數據發(fā)生變化,此時校驗數據已經過時,不能用以故障恢復,因此RAID5技術對于每次寫都需要重新生成新校驗數據。為了使得每次生成校驗數據發(fā)生的讀寫次數最少,引入大寫和小寫兩個概念。
對于分條中大多數分條單元的寫,如分條中包含D0、D1、D2,用戶需要寫D0、D1,采用大寫方式。即把磁盤中D2數據讀出,然后根據P=D0 XOR D1 XOR D2直接得到新校驗數據。
對于分條中小部分分條單元的寫,如分條中包含D0、D1、D2、D3,用戶需要寫D0,采用小寫方式。因為假如此時用大寫方式,為了計算校驗數據需要把D1、D2、D3全部讀出來,才能根據P=D0 XOR D1 XOR D2XOR D3計算出來。此時可以用另外一個公式,也就是小寫計算校驗數據的公式新校驗數據=舊校驗數據XOR舊數據XOR新數據此時只需要讀磁盤的D0數據和舊校驗數據P就可以計算出校驗數據,比采用大寫方式讀取的分條單元數少。
滿寫,即當整個分條的數據全部在CACHE中,不需要從磁盤讀出時,此時只需要利用P=D0 XOR D1 XOR D2 XOR D3直接計算出校驗數據,直接寫磁盤就可以了,不用讀磁盤數據。
前面對大寫、小寫和滿寫的原理進行了介紹,下面結合圖示對大寫和小寫的流程進行具體說明如圖2所示,小寫是RAID5的一種寫技術,一般用于當“臟分條單元(即包含寫數據的分條單元,比如圖1中的D0)”個數<(1/2×成員磁盤個數(圖中等于4))時的寫,其寫過程為1)從磁盤讀出“臟分條單元”的原有數據D0old;2)從磁盤讀出“臟分條單元”對應的原校驗數據Pold;3)根據表達式〔(原有數據)XOR(新數據)〕XOR(原有校驗數據)=新的校驗數據異或生成新的校驗數據Pnew=D0oldXOR D0newXOR Pold;4)將“臟分條單元”和新的校驗數據寫入磁盤,即將“臟分條單元”的新數據寫入D0,新的檢驗數據寫入P中。
如圖3所示,大寫是RAID5的一種寫技術,一般用于當“臟分條單元(即包含寫數據的分條單元,比如圖2中的D0、D1)”個數≥(1/2×成員磁盤個數(圖中等于4))時的寫,其寫過程為1)對未被主機更新的分條單元,從磁盤讀出數據D2old;2)計算新的校驗數據Pnew=D0newXOR D1newXOR D2old;3)將“臟分條單元”和新的校驗數據寫入磁盤,即將“臟分條單元”的新數據寫入D0、D1,新的檢驗數據寫入P中。
業(yè)界對回寫的實現則是各顯神通,但大多數研究都集中在如何選取回寫的時機和回寫的數據,以達到回寫效率最高。這些研究包括IBM(國際商用機器公司)的專利US6192450“Destage of Data forWrite Cache”,采用LRU(最近最少使用)算法確定某個需要回寫的數據(作為種子結點),每次回寫由該種子結點確定的一個工作集進行回寫。
EMC公司(美國信息存儲廠商)的專利US6304946“System andMethod for Optimizing Cache Write Backs to Disks”,從當前磁頭位置來決定回寫的結點,從而達到減小回寫代價的目的,采用Write(寫)樹快速查找相鄰塊,以便合并寫操作。
HDS(日立數據系統公司)的專利US6327673“STORAGE UNITSUBSYSTEM”,主機寫請求到達時,判斷新的寫數據需要生成新校驗數據的信息是否在Cache中,如果不全在,則從磁盤讀入(包括舊數據、舊校驗數據),并生成校驗數據寫入Cache,Cache選定時間采用一定的回寫策略將數據寫入磁盤。其中,主機寫請求寫入Cache后就返回,向主機報告寫完成,以上校驗數據相關過程和主機讀寫過程獨立。
這些專利從某些方面研究了提高回寫效率的措施,但都沒能從整個系統(結合CACHE、RAID和磁盤通道處理)的角度來關注提高回寫操作本身的效率,從而無法達到回寫效率最優(yōu)的目的。
目前通常的技術是如圖4所示,對于Cache的回寫請求,按照RAID5的地址映射算法進行地址映射,將請求拆分成以分條為單位進行處理。對每個分條,先加分條鎖,然后根據請求判斷寫類型是小寫、大寫還是滿寫。對于大寫,需要下發(fā)分條中請求的補集部分的各磁盤舊數據子讀請求;對于小寫,需要讀取分條中請求部分的各磁盤舊數據子讀請求;對于滿寫,則直接異或生成校驗數據,下發(fā)磁盤的子寫請求(新數據和新校驗數據)。
如圖5所示,磁盤子讀請求返回時,判斷是否該分條的子讀請求均返回。如果全部返回,則異或生成校驗數據,下發(fā)磁盤的子寫請求(新數據和新校驗數據)。
如圖6所示,磁盤子寫請求返回后,判斷是否該分條中的所有子寫請求返回。如果是,對該分條解鎖。
該方案RAID5的回寫需要按分條對寫請求進行處理,分條的非滿寫(大寫和小寫)步驟包括先下發(fā)舊數據的子讀請求,等待返回,再做異或后下發(fā)新數據的子寫請求。當下發(fā)的某個分條的子讀請求返回時,系統開始逐步下發(fā)給磁盤處理程序的子寫請求。這種方案業(yè)務流程不保證同一磁盤的數據同時下發(fā),而且讀寫請求混雜在一起下發(fā),Cache未保證每次下發(fā)的分條盡量集中在相鄰區(qū)域,這樣導致磁盤處理合并效率比較低。
假如Cache回寫請求中的分條臟數據是不連續(xù)的,對于大寫和小寫,該方案需要下發(fā)給磁盤若干個很可能極小的讀寫請求,而磁盤對于少量數據的讀寫效率是極其低下的,對一個分條單元下發(fā)若干個讀請求的時間耗費遠比直接讀取一個分條單元的時間要長,這樣Cache回寫的效率很低。
上文都是以分條單元為最小單位來解釋大寫、小寫,但實際上分條單元(SU)可能大小為5Kbyte,用戶可能每次只寫很小的一個數據塊(BLOCK)。BLOCK是磁盤操作的最小數據單元,一般是512Byte。如圖7所示,圖中數字代表地址,如分條0中的0~7代表了8個Block。用戶如果需要寫第8、10、19個Block(即分條臟數據不連續(xù)),則需要更新分條0中的校驗數據P0和P2。P0對應的是臟塊Block10,P2對應的是臟塊Block8和19。按照小寫方式,更新P0需要讀取磁盤的Block10和P0,更新P2需要讀取磁盤的Block8、Block19和P2,這樣就會下發(fā)很多小塊的讀寫請求,導致Cache回寫的效率很低。

發(fā)明內容
本發(fā)明所要解決的技術問題是克服現有的帶Cache的磁盤陣列結構中回寫效率低的不足,提供一種磁盤陣列結構中進行回寫的方法,從而提高Cache回寫效率,優(yōu)化存儲系統性能。
本發(fā)明為解決上述技術問題所采用的技術方案為這種磁盤陣列結構中進行回寫的方法,包括以下步驟A1、高速緩存(Cache)按照一定的策略選取要回寫的區(qū)域;A2、對回寫區(qū)域數據進行預處理,集中批量下發(fā)對磁盤的子讀請求;A3、對返回的磁盤子讀請求響應進行處理;A4、集中批量下發(fā)對磁盤的子寫請求;A5、對返回的磁盤子寫請求響應進行處理。
所述步驟A1中,Cache選取回寫區(qū)域的策略為選擇最近最少使用的數據所在的區(qū)域;或優(yōu)先選擇大量連續(xù)數據所在區(qū)域;或統計所有區(qū)域中的臟塊數量,優(yōu)先回寫超過平均臟塊數量的區(qū)域。
所述步驟A1中,Cache選取回寫區(qū)域的策略還包括同一時間內一個磁盤陣列(RAID)組中只有一個區(qū)域在回寫。
所述步驟A2中,對回寫區(qū)域數據的預處理包括以下步驟B1、將回寫區(qū)域分解成分條單元矩陣,矩陣的橫、縱坐標分別為最大分條個數和磁盤陣列組中成員磁盤個數;
B2、對分條單元做地址映射,得到磁盤標識和起始的物理地址;B3、根據臟數據是否滿及分條中臟數據特征對分條單元做讀、寫標記。
所述步驟B3中,對分條中臟且不滿的分條單元做讀滿標記,確保磁盤陣列處理的最小單元為分條單元。
所述步驟B3中,在對某分條單元做讀磁盤標記前,向Cache查詢其舊數據是否為滿,如果是,則不做標記;否則如果臟分條單元個數等于成員磁盤個數,則滿寫,對所有分條單元做回寫標記;如果臟分條單元個數大于等于成員磁盤個數的二分之一,則大寫,對干凈分條單元做讀磁盤標記,對臟分條單元做寫標記,對校驗分條單元做寫標記;如果臟分條單元個數小于成員磁盤個數的二分之一,則小寫,對臟分條單元、校驗分條單元做讀磁盤標記,對臟分條單元、校驗分條單元做寫磁盤標記。
對當前分條的讀寫標記完成后,如果發(fā)現本分條沒有讀磁盤請求標記,則提前啟動對此分條的異或處理生成新校驗數據。
所述步驟A3中,對返回的磁盤子讀請求響應進行處理包括如果請求響應正常返回,則對以將分條單元變?yōu)闈M為目的的讀,將讀取的舊數據寫入Cache;如果此請求響應對應分條的所有讀請求都已返回,則對本分條進行異或處理;如果請求響應異常返回,則放棄此區(qū)域的回寫,向Cache報告區(qū)域回寫失敗,并對后續(xù)此區(qū)域返回的讀磁盤響應作簡單拋棄處理。
所述的集中批量下發(fā)對磁盤的子讀請求是對分條單元矩陣的每一列,發(fā)所有置了讀標記的分條單元的讀磁盤請求;所述的集中批量下發(fā)對磁盤的子寫請求是對分條單元矩陣的每一列,發(fā)所有置了寫標記的分條單元的寫磁盤請求。
所述的步驟A5中,循環(huán)讀取磁盤返回的寫請求響應消息,如果磁盤返回異常,報告磁盤失?。蝗绻疟P返回正常,則判斷是否所有寫請求都已返回,如果是,則通知CACHE此區(qū)域回寫完成。
本發(fā)明的有益效果為本發(fā)明中Cache對回寫區(qū)域的選擇保證了最需要回寫的數據得到回寫,回寫完成后能夠空出盡量多的Cache空間;而且每次回寫磁頭的移動固定在一個區(qū)域中,有效減少了回寫中磁頭的定位時間。
本發(fā)明中Cache提供給RAID的最小單位是分條單元,保證了回寫模塊發(fā)送給磁盤的讀寫請求都是分條單元級別的,這樣克服了分條臟數據不連續(xù)所帶來的回寫效率低的不足。回寫區(qū)域的回寫分成預回寫和回寫兩個階段,通過先對分條單元作讀、寫標記,保證了所有分條的讀、寫請求可按磁盤集中下發(fā)給磁盤通道處理模塊,從而磁盤通道處理模塊對該磁盤的請求能夠進行有效地合并和調度,進而提高了回寫效率。
本發(fā)明站在系統的級別,對回寫的整個流程進行優(yōu)化,從回寫的源頭Cache開始,歷經RAID處理模塊和磁盤通道處理模塊,提高了回寫效率,優(yōu)化了系統性能。


圖1為RAID5中分條單元及分條的結構示意圖;圖2為RAID5中小寫示意圖;圖3為RAID5中大寫示意圖;圖4為現有的回寫預處理流程圖;圖5為現有的讀返回處理流程圖;圖6為現有的寫返回處理流程圖;
圖7為分條臟數據不連續(xù)結構示意圖;圖8為本發(fā)明回寫原理模塊示意圖。
具體實施例方式
下面根據附圖和實施例對本發(fā)明作進一步詳細說明本發(fā)明旨在提高存儲系統中Cache的回寫效率,站在系統的級別,對回寫的整個流程進行優(yōu)化。從回寫的源頭Cache開始優(yōu)化,歷經RAID處理模塊和磁盤通道處理模塊,專門對回寫提供一套流程以提高效率。
首先在Cache中,每次選擇一個區(qū)域進行回寫,并且確保同一時間內一個RAID組中只有一個區(qū)域在回寫,以保證在這一段時間內每個磁盤磁頭的移動固定在一個區(qū)域中,有效減少回寫中磁頭定位時間,從而極大地提高磁盤讀寫效率。
在Cache中幫助RAID屏蔽掉BLOCK的概念。由于主機寫請求的最小單位不確定,導致Cache中回寫分條中的臟數據可能不連續(xù),而RAID對于這種不連續(xù)的分條的回寫將下發(fā)BLOCK級別的磁盤讀寫請求,導致效率低下。本發(fā)明中Cache提供給RAID的最小單位是分條單元,保證了RAID發(fā)送給磁盤通道處理模塊的讀寫請求都是分條單元級別的,從而提高磁盤讀寫效率。
本發(fā)明將回寫區(qū)域的回寫分成兩個階段讀階段(或稱為預回寫階段)和寫階段。分條的非滿寫(大寫和小寫)步驟包括先下發(fā)舊數據的子讀請求,等待返回,再做異或后下發(fā)新數據的子寫請求。如果將工作集中所有分條的讀作為一個階段按磁盤集中下發(fā)給磁盤通道處理模塊,寫作為另一個階段也按磁盤集中下發(fā),磁盤通道處理模塊就能夠對該磁盤的請求進行有效的合并和調度,進而提高回寫效率。
假如一個RAID組包括四個成員磁盤,回寫是需要讀磁盤然后寫磁盤的。如果一次回寫包括10個分條的回寫,通常對四個成員磁盤都有一部分讀操作和一部分寫操作。譬如對磁盤1有5個分條單元的讀,8個分條單元的寫,則把對5個分條單元的讀請求集中下發(fā)給磁盤處理程序,由于這些分條單元地址相鄰,磁盤定位時間一般只需一次,就可以提高回寫效率。
如圖8所示,本發(fā)明RAID處理模塊由RAID5預處理子模塊、讀響應處理子模塊及寫響應處理子模塊組成。RAID5預處理子模塊主要功能為,對RAID5類型的區(qū)域先做矩陣分解、映射、讀寫標記,再批量下發(fā)讀磁盤請求;讀響應處理子模塊對讀磁盤請求響應進行正常、異常處理;寫響應處理子模塊為對寫磁盤請求響應的正常、異常處理。
回寫的數據流向過程如下(1)Cache下發(fā)要回寫的區(qū)域,Cache選擇回寫區(qū)域的原則可以有A、寫Cache的LRU(最近最少使用)鏈表結點所在區(qū)域;B、大量連續(xù)數據所在區(qū)域(大量連續(xù)定義為存在滿分條N,N+1...,N+m,m值大于一給定值);C、Cache統計所有區(qū)域中的臟塊數量,優(yōu)先回寫超過平均臟塊數量的區(qū)域;D、同一時間內一個RAID組中只有一個區(qū)域在回寫。
(2)調用RAID5的分解函數將此區(qū)域分解成分條單元矩陣;預處理子模塊將區(qū)域分解成分條單元矩陣M×N,M為區(qū)域包含最大分條個數,N為RAID組中成員磁盤個數;(3)循環(huán)對區(qū)域中的可回寫分條做下面的處理調用MAP的函數(地址映射函數)對分條單元做地址映射,并根據臟數據是否滿、分條中臟數據特征做讀寫標記;A、調用地址映射模塊的函數對分條中每個分條單元做地址映射,得到磁盤標識(DISKID)和起始的物理LBA(邏輯扇區(qū)地址);B、對分條中臟且不滿的分條單元做讀滿標記,確保RAID處理的最小單元為分條單元;C、再根據RAID組狀態(tài)對分條做RAID處理的讀寫標記,在對某分條單元做讀磁盤標記前,向Cache查詢其舊數據是否為滿,如果是則不做標記;否則,a)如果臟分條單元個數等于成員磁盤個數,則滿寫,對所有分條單元做回寫標記;b)如果臟分條單元個數大于等于成員磁盤個數/2,則大寫,對干凈分條單元做讀磁盤標記,對臟分條單元做寫標記,對校驗分條單元做寫標記;c)如果臟分條單元個數小于成員磁盤個數/2,則小寫,對臟分條單元、校驗分條單元做讀磁盤標記,對臟分條單元、校驗分條單元做寫磁盤標記;D、對當前分條做RAID處理的讀寫標記完成后,如果發(fā)現本分條沒有讀磁盤請求標記,則提前啟動對此分條的XOR(異或)處理生成新校驗數據。
(4)調用批量磁盤處理函數對分條單元矩陣批量下發(fā)讀磁盤請求(即循環(huán)對分條單元矩陣的每一列,下發(fā)所有置了讀標記的分條單元的讀磁盤請求),并記錄下發(fā)讀磁盤請求總個數;(5)讀磁盤響應返回;(6)循環(huán)讀取磁盤返回的讀請求響應消息,并處理A、如果請求正常返回,則對以將分條單元變?yōu)椤皾M”為目的的讀,要將讀取的舊數據寫入Cache;B、如果此請求響應對應分條的所有讀請求都已返回,則按XOR規(guī)則完成本分條的所有XOR操作;C、如果此請求響應對應區(qū)域的所有讀請求都已返回,跳至步驟8。
(7)如果請求響應異常返回,則進行異常處理
A、報告磁盤失敗;B、放棄此區(qū)域的回寫,向Cache報告區(qū)域回寫失敗;C、對后續(xù)此區(qū)域返回的讀磁盤響應作簡單拋棄處理。
(8)所有讀請求都已返回,并處理完成后,調用磁盤通道處理模塊的接口函數進行批量下發(fā)寫磁盤請求,即循環(huán)對分條單元矩陣的每一列,發(fā)所有置了寫標記的分條單元的寫磁盤請求,并記錄下發(fā)寫磁盤請求總個數。
(9)寫磁盤通道處理模塊響應返回消息隊列;(10)對每個磁盤通道處理模塊寫響應進行處理,包括異常處理;(11)如果所有寫請求都已返回,則通知Cache此區(qū)域回寫完成。
循環(huán)讀取磁盤返回的寫請求響應消息,如果磁盤返回異常,報告磁盤失敗;如果磁盤返回正常,判斷是否所有寫請求都已返回,如果是,則通知CACHE此區(qū)域回寫完成。
所有XOR在分條所有讀磁盤都返回以后開始(根據分條讀磁盤的個數來判斷),XOR的單位都是分條單元大小,生成新校驗XOR的源數據,在小寫時,為所有臟分條單元的舊數據、所有臟分條單元的新數據、校驗分條單元的舊數據;在大寫時,為所有干凈分條單元的舊數據、所有臟分條單元的新數據;在滿寫時,為所有臟分條單元的新數據;生成新校驗XOR的結果數據是校驗分條單元。
本發(fā)明站在系統的級別,對回寫的整個流程進行優(yōu)化,從回寫的源頭Cache開始,歷經RAID處理模塊和磁盤通道處理模塊,提高了回寫效率,優(yōu)化了系統性能。
權利要求
1.一種磁盤陣列結構中進行回寫的方法,其特征在于,包括以下步驟A1、高速緩存(Cache)按照一定的策略選取要回寫的區(qū)域;A2、對回寫區(qū)域數據進行預處理,集中批量下發(fā)對磁盤的子讀請求;A3、對返回的磁盤子讀請求響應進行處理;A4、集中批量下發(fā)對磁盤的子寫請求;A5、對返回的磁盤子寫請求響應進行處理。
2.根據權利要求1所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟A1中,Cache選取回寫區(qū)域的策略為選擇最近最少使用的數據所在的區(qū)域;或優(yōu)先選擇大量連續(xù)數據所在區(qū)域;或統計所有區(qū)域中的臟塊數量,優(yōu)先回寫超過平均臟塊數量的區(qū)域。
3.根據權利要求2所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟A1中,Cache選取回寫區(qū)域的策略還包括同一時間內一個磁盤陣列(RAID)組中只有一個區(qū)域在回寫。
4.根據權利要求1、2或3所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟A1中,對回寫區(qū)域數據的預處理包括以下步驟B1、將回寫區(qū)域分解成分條單元矩陣,矩陣的橫、縱坐標分別為最大分條個數和磁盤陣列組中成員磁盤個數;B2、對分條單元做地址映射,得到磁盤標識和起始的物理地址;B3、根據臟數據是否滿及分條中臟數據特征對分條單元做讀、寫標記。
5.根據權利要求4所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟B3中,對分條中臟且不滿的分條單元做讀滿標記,確保磁盤陣列處理的最小單元為分條單元。
6.根據權利要求4所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟B3中,在對某分條單元做讀磁盤標記前,向Cache查詢其舊數據是否為滿,如果是,則不做標記;否則如果臟分條單元個數等于成員磁盤個數,則滿寫,對所有分條單元做回寫標記;如果臟分條單元個數大于等于成員磁盤個數的二分之一,則大寫,對干凈分條單元做讀磁盤標記,對臟分條單元做寫標記,對校驗分條單元做寫標記;如果臟分條單元個數小于成員磁盤個數的二分之一,則小寫,對臟分條單元、校驗分條單元做讀磁盤標記,對臟分條單元、校驗分條單元做寫磁盤標記。
7.根據權利要求4所述的磁盤陣列結構中進行回寫的方法,其特征在于對當前分條的讀寫標記完成后,如果發(fā)現本分條沒有讀磁盤請求標記,則提前啟動對此分條的異或處理生成新校驗數據。
8.根據權利要求1所述的磁盤陣列結構中進行回寫的方法,其特征在于所述步驟A3中,對返回的磁盤子讀請求響應進行處理包括如果請求響應正常返回,則對以將分條單元變?yōu)闈M為目的的讀,將讀取的舊數據寫入Cache;如果此請求響應對應分條的所有讀請求都已返回,則對本分條進行異或處理;如果請求響應異常返回,則放棄此區(qū)域的回寫,向Cache報告區(qū)域回寫失敗,并對后續(xù)此區(qū)域返回的讀磁盤響應作簡單拋棄處理。
9.根據權利要求4所述的磁盤陣列結構中進行回寫的方法,其特征在于所述的集中批量下發(fā)對磁盤的子讀請求是對分條單元矩陣的每一列,發(fā)所有置了讀標記的分條單元的讀磁盤請求;所述的集中批量下發(fā)對磁盤的子寫請求是對分條單元矩陣的每一列,發(fā)所有置了寫標記的分條單元的寫磁盤請求。
10.根據權利要求1所述的磁盤陣列結構中進行回寫的方法,其特征在于所述的步驟A5中,循環(huán)讀取磁盤返回的寫請求響應消息,如果磁盤返回異常,報告磁盤失敗;如果磁盤返回正常,則判斷是否所有寫請求都已返回,如果是,則通知CACHE此區(qū)域回寫完成。
全文摘要
一種磁盤陣列結構中進行回寫的方法,高速緩存(Cache)按照一定的策略選取要回寫的區(qū)域,對回寫區(qū)域數據進行預處理,集中批量下發(fā)對磁盤的子讀請求,對返回的子讀請求響應進行處理,再集中批量下發(fā)對磁盤的子寫請求,對返回的子寫請求響應進行處理。本發(fā)明中Cache對回寫區(qū)域的選擇保證了最需要回寫的數據得到回寫,回寫完成后能夠空出盡量多的Cache空間,而且每次回寫磁頭的移動固定在一個區(qū)域中,有效減少了回寫中磁頭的定位時間,Cache提供給RAID的最小單位是分條單元,而且所有分條的讀、寫請求按磁盤集中下發(fā),從而對該磁盤的讀、寫請求能夠進行有效地合并和調度,進而提高了回寫效率。
文檔編號G06F12/08GK1617110SQ200310114090
公開日2005年5月18日 申請日期2003年11月12日 優(yōu)先權日2003年11月12日
發(fā)明者陳紹元, 黃玉環(huán), 唐小松, 張粵, 張國彬, 張巍, 任雷鳴 申請人:華為技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1