一種磁碟陣列的數據讀寫方法
2023-05-30 21:46:01 1
專利名稱:一種磁碟陣列的數據讀寫方法
技術領域:
本發明涉及計算機存儲領域,尤其涉及該領域內的獨立冗餘磁碟陣列 的數據讀寫方法。
背景技術:
隨著信息技術的飛速發展,各種行業應用都對信息的存儲提出了更高 的要求,這些要求主要包括存儲系統的速度、容量、可靠性、可用性和安 全性等方面,傳統的存儲系統已經無法滿足。
RAID (Redundant Array of Independent Disk,獨立冗餘》茲盤陣列)是一 種由多塊獨立磁碟構成的,能提高讀寫性能並具備容錯能力的存儲系統。 RAID實現了多個磁碟並行讀寫的功能,將用戶的數據拆分成多個數據塊並 行寫入多個磁碟。讀取數據時先從多個磁碟並行讀出數據塊再組合成用戶 需要的數據,使得存儲系統的帶寬由多個磁碟的帶寬疊加而成,大大提高 了存儲系統的訪問速度。RAID的容錯能力是通過冗餘方式實現的,所述冗 餘的方式有磁碟鏡像和設置校驗等。除了用戶需要的數據以外,RAID中還 存儲了大量的冗餘數據,通過所述容錯方法保證磁碟在出現錯誤的情況下 可以恢復數據。
RAID按照實現存儲的原理不同分為不同的級別,常見的具備容錯能力 的RAID級別有RAIDl, RAID5, RAID10等。請參閱圖1,為現有技術中 的由四塊磁碟構成的一個RAID5級磁碟陣列的數據分布示意圖,將所述四 塊磁碟命名為磁碟1、磁碟2、磁碟3和磁碟4,每個磁碟分成N個數據塊, 所述四個磁碟分別貢獻出一個數據塊構成一個磁碟條帶(StripeD)為該磁碟陣列的一行,可以理解,該RAID5具有N個磁碟條帶,每個磁碟條帶具 有一個校驗塊,其用於存放一個校驗值,所述校驗值由該磁碟條帶的另外 三個數據塊進行異或計算而得。
具體地說,來自磁碟1的數據塊0、來自磁碟2的數據塊1、來自磁碟 3的數據塊2以及來自磁碟4的校驗塊P,構成一個磁碟條帶1 ( StripeDi), 依次類推,構成StripeD2、 StripeD3.........StripeDN。
對所述磁碟陣列執行寫操作時,用戶數據被拆分成若干個數據塊,對 應寫入所述N個磁碟條帶中的數據塊內,其校驗塊P,的數據由數據塊0異 或數據塊1,接著異或數據塊2計算得到並寫入校驗塊P,內。
因此,可以理解的是,當其中一個磁碟出錯,都可以由其他磁碟通過 異或計算從而恢復其上的數據,例如,如果i茲盤2出錯,那麼磁碟2上的 數據塊1的數據可以由數據塊O、數據塊2和校驗塊P,異或計算得到,數 據塊4的數據可以由數據塊3、才L瞼塊P2和數據塊5異或計算得到,以此 類推,磁碟2的數據都可以恢復。
很明顯,每一次對》茲盤陣列上的一個數據塊進行寫操作,都要進行一 個對其他相關數據塊的讀操作和一次異或計算以更新校驗塊的值,例如, 在完成對數據塊0的寫操作時,除了寫數據塊0以外,還需要另外完成數 據塊1的讀操作,數據塊2的讀操作,以及校驗塊Pt的重新計算和寫操作。 此時,如果用戶再請求寫教:據塊1和數據塊2,那麼還需要完成數據塊0的 讀操作,校驗塊Pi的重新計算和寫操作。具體請參閱圖2,為圖l的磁碟 陣列處理用戶讀寫請求的時序圖,可見,每一次對其中一個數據塊的寫操 作(寫0、寫01、寫012或者寫2操作)都必須完成一個寫時間和一個校 驗塊的計算寫入時間。因此,為了保證》茲盤陣列的容錯能力,需要花費大 量的時間讀取同一/F茲盤條帶中的其他數據塊到內存中分配的條帶結構,並 重新計算和寫入校驗塊。這些讀操作和異或計算大大增加了磁碟陣列的負 擔,尤其在用戶寫請求頻繁的情況下,校驗塊內數據的反覆更新會大大增加磁碟陣列的開銷,降低系統的讀寫性能,嚴重影響磁碟陣列對用戶的響 應。
中國專利CN101055512A提出一種磁碟陣列的數據存取方法,具體為 建立一個寫記錄表,該寫記錄表中的每一項對應所述》茲盤陣列的一個》茲盤
條帶;觸發一個對該寫記錄表的定時和掃描任務。系統每次進行數據的寫 操作時都要更新該寫記錄表中寫操作所對應的磁碟條帶的記錄位。所述定 時的動作結束時,所述掃描任務啟動,如果發現所述記錄位為更新標識, 表示對應磁碟條帶的數據已經更新,校驗值則已經失效。讀取所述有更新 標識的記錄位所對應的^f茲盤條帶的全部數據塊,並根據這些數據塊來計算 校驗值,最後將校驗值寫入磁碟的校驗塊並更新記錄位。重複上述步驟至 所有的記錄位處理完畢,再重新啟動定時。由於該方法將對目標數據塊的 寫操作和對校驗塊的更新操作採用一個定時和掃描任務分開來,每次執行 寫操作都僅僅更新目標數據塊,並不更新對應的校驗塊,而是在所述定時 的時間之後再進行校驗塊的更新動作。
該中國專利的技術存在以下不足首先,系統每次執行寫操作時應該 進行的校驗數據更新都淨皮延後在所述定時時間之後,即分布在磁碟各個位 置的磁碟條帶都有可能未更新校驗塊,整個條帶的數據處於不一致狀態。 如果在條帶的校驗塊更新之前磁碟出現錯誤,也即是在該定時時間內磁碟 出現錯誤,則磁碟條帶的數據將無法恢復,因此,系統的容錯能力得不到 充分保證,數據丟失的風險較大。其次,寫記錄表的項數取決於磁碟容量, 在磁碟容量較大的情況下,每次對寫記錄表的掃描均會消耗大量處理器時 間,因此,所述寫記錄表的掃描開銷較大,加重系統負擔。該專利提出的 方法, 一個記錄位對應多個條帶,卻會造成不必要的校驗塊更新,無法降 低開銷。
又有美國專利6,282,671 "Method and system for improved efficiency of parity calculation in RAID system" 提出根據寫操作對磁碟條帶的覆蓋情況來選擇計算校驗塊的方法。校驗塊可以通過目標數據塊的新數據(new data value)和條帶中其他數據塊的舊數據(all other old data within the associated data stripe)的異或計算得到,或者通過目標數據塊的新數據(new data value)、 目標數據塊的舊數據(old data value)和舊校驗塊(old parity value)的異或計算 得到,校驗塊的計算選擇上述兩種計算方法中進行讀寫次數最少(the least number of input/output operations)的一種。"i亥美國專利提供的方法通過/鹹少 在計算校驗塊時系統進行讀操作的次數,因此在一定程度上減少了計算校 驗塊數據的時間,但是其寫校驗塊的時間仍然較長,尤其在寫操作頻繁的 情況下,校驗塊反覆更新的開銷仍然很高。
可見,現有技術還存在缺陷,有待於改進和發展。
發明內容
本發明的目的在於,提供一種磁碟陣列的自適應延遲校驗方法,在充 分保證磁碟陣列的容錯能力的同時,加快寫操作的處理速度,有效降低更 新校驗塊的開銷,提高磁碟陣列系統的讀寫性能。
為解決上述技術問題,本發明的技術方案如下
一種磁碟陣列的數據讀寫方法,所述磁碟陣列的每個磁碟條帶具有一 個狀態屬性,所述狀態屬性為寫操作頻繁狀態、寫操作不頻繁狀態或者延 遲更新校驗塊狀態,所述i茲盤陣列的數據讀寫方法包括以下步驟
A、 內存分配多個條帶結構,創建一個磁碟條帶狀態位圖,以記錄全部 磁碟條帶的狀態屬性;初始化所述磁碟條帶狀態位B、 接收用戶讀寫請求,並更新所述磁碟條帶狀態位圖上的目標磁碟條 帶的狀態屬性;
C、 執行用戶的讀寫請求,如果是寫請求,則執行寫目標磁碟條帶並根 據目標磁碟條帶的狀態屬性執行更新校驗塊或者延遲更新校驗塊,如果是 讀請求,則執行一讀請求處理流程。所述的》茲盤陣列的數據讀寫方法,其中,所述步驟c中,如果是寫請
求,則在執行所述寫目標磁碟條帶的同時檢查其狀態屬性是否為寫操作不 頻繁狀態,如果是則選擇執行所述更新校驗塊,如果不是則選擇執行所述 延遲更新校驗塊。
所述的萬茲盤陣列的翁:據讀寫方法,其中,所述步驟A中,所述初始化 ,茲盤條帶狀態位圖為將其上記錄的每個石茲盤條帶的狀態初始化為寫操作不 頻繁狀態。
所述的磁碟陣列的數據讀寫方法,其中,所述磁碟條帶的狀態屬性以 一個標記值記錄在所述》茲盤條帶狀態位圖上,所述標記值為2位二進位值, 所述寫操作頻繁狀態、寫操作不頻繁狀態或者延遲更新校驗塊狀態的標記 值不同。
所述的磁碟陣列的數據讀寫方法,其中,所述步驟C中,所述讀請求 處理流程包括以下步驟
將目標數據塊讀入對應條帶結構的數據緩沖區;
判斷所述對應的條帶結構的所有數據緩衝區是否完全更新,如果是, 則執行步驟A5;
所述步驟A5為檢查目標磁碟條帶的狀態屬性是否為延遲更新校驗塊 狀態,如果是,則更新目標磁碟條帶的校驗塊並更新所述目標磁碟條帶的 狀態屬性為寫操作不頻繁狀態。
所述的磁碟陣列的數據讀寫方法,其中,在執行步驟A中,在所述初 始化每個磁碟條帶的狀態屬性之前執行一個步驟D,所述步驟D為檢查 所述磁碟條帶狀態位圖是否記錄有延遲狀態,如果有則更新其相應^茲盤條 帶的校驗塊。
所述的磁碟陣列的數據讀寫方法,其中,步驟A中,所述條帶結構具 有一個寫計數屬性,其由一個寫計數屬性維護線程維護,^沒定所述計數屬 性維護線程一個計數周期,並設定一個閾值,初始化所述^茲盤條帶狀態位圖的同時對每個條帶結構的寫計數屬性清O,並開始一個計數周期;步驟B 中,接收用戶讀寫請求,每接收一個寫請求則所述寫計數屬性維護線程對 所述目標磁碟條帶所對應條帶結構的寫計數屬性加1,在所述計數周期結束 時,所述條帶結構的寫計數屬性大於所述閾值,則更新其對應的目標磁碟 條帶的狀態屬性為所述寫操作頻繁狀態,所述寫計數屬性小於或者等於所 述閾值,則更新其對應的目標磁碟條帶的狀態屬性為寫操作不頻繁狀態。
所述的磁碟陣列的數據讀寫方法,其中,所述更新校驗塊的步驟為讀 取目標^磁碟條帶的數據塊並依次進行異或計算,將所述異或計算的結果寫 入所述校-瞼塊。
所述的;茲盤陣列的數據讀寫方法,其中,所述步驟C中,所述執行延 遲更新校驗塊包括以下步驟
判斷所述目標磁碟條帶的狀態屬性為寫操作頻繁狀態還是延遲更新校 驗塊狀態,如果是寫操作頻繁狀態,則執行步驟A3,如果是延遲更新校驗 塊狀態,則執行步驟B3;
所述步驟A3為更新所述目標磁碟條帶的狀態屬性為延遲更新校驗塊 狀態,並開始計時一個延遲時間,在所述延遲時間內,延遲更新校驗塊;
所述步驟B3為判斷所述延遲時間是否結束,如果是,則執行更新校 驗塊並將目標^茲盤條帶的狀態屬性更新為寫操作不頻繁狀態。
所述的磁碟陣列的數據讀寫方法,其中,所述目標磁碟條帶的狀態屬 性由 一個狀態訪問線程訪問所述^f茲盤條帶位圖獲得,所述寫計數屬性維護 線程與狀態訪問線程互斥。
本發明提供了 一種磁碟陣列的自適應延遲校驗方法,動態地檢測並記 錄磁碟陣列中的寫操作頻率高的磁碟條帶,並延遲處理處於所述寫操作頻 率高的磁碟條帶的校驗塊更新。在保證系統容錯功能的前提下,本發明有 效減少了寫操作頻繁的情況下校驗塊的更新次數即校驗數據的計算和寫入 的次數,大大提高系統的讀寫處理速度,加快對用戶讀寫請求的響應,顯著改善》茲盤陣列的讀寫性能。
圖1是現有技術中的一種RAID系統的磁碟結構示意圖2是現有技術中的RAID系統處理用戶的讀寫請求的時序圖3是本發明第一實施例提供的一種磁碟陣列數據分布及其磁碟條帶
狀態位圖的示意圖4是本發明第一實施例提供的磁碟陣列的數據讀寫方法的流程圖; 圖5是本發明第一實施例提供的磁碟陣列的數據讀寫方法中的延遲校
驗處理的流程圖6是本發明第一實施例提供的磁碟陣列的數據讀寫方法中的讀請求 處理的流程圖7是採用本發明第一實施例提供的磁碟陣列的數據讀寫方法處理讀 寫請求的時序具體實施例方式
下面結合附圖和具體實施方式
對本發明進行詳細說明。 請參閱圖3,為本發明第一實施例提供的一種由四塊磁碟組成的一種 RAID5敘Jf茲盤陣列以及為所述磁碟陣列創建的一個磁碟條帶狀態為圖,所 述四塊磁碟分別為磁碟1、磁碟2、磁碟3以及磁碟4。所述磁碟陣列的數 據塊按照左旋不對稱方式分布。
每個磁碟被劃分為N個數據塊,所述四個磁碟分別貢獻出一個數據塊 構成該磁碟陣列中的一個磁碟條帶(StripeD),每個磁碟條帶為所述磁碟陣列 的一個行,可以理解所述磁碟陣列有N個磁碟條帶,來自磁碟I的一個數 據塊0、來自磁碟2的數據塊1、來自磁碟3的數據塊2以及來自磁碟4的 校驗塊Pl構成一個磁碟條帶1 (StripeDj ,依次類推,構成StripeD2、StripeD3.........StripeDN。
所述磁碟陣列的每個磁碟條帶具有一個狀態屬性,所述狀態屬性為寫 操作頻繁狀態、寫操作不頻繁狀態或者延遲更新校驗塊狀態。所述延遲更 新校驗塊狀態即是目標數據塊處於被寫中,而校驗塊未更新,校驗塊更新 操作被延遲至一延遲時間之後進行。
定義所述f茲盤條帶處於寫操作頻繁狀態為熱點狀態;定義所述磁碟條
帶處於寫操作不頻繁狀態為冰點狀態;定義所述磁碟條帶處於延遲更新檢
驗塊的狀態為延遲狀態。
優選地,在本實施例中,預先設定一個閾值,在一個計數周期內,目 標磁碟條帶被執行寫操作次數大於所述閾值時,標記該目標磁碟條帶處於
熱點狀態;目標磁碟條帶寫^:作次數小於或者等於該閾值時,標記該目標
磁碟條帶處於冰點狀態。
請參閱表l,優選地,本實施例提供的所述熱點狀態、冰點狀態以及延 遲狀態分別對應的標記值按照表1的對應關係。優選地,本實施例的所述 磁碟條帶狀態標記值採用2bit (位)。
表1
磁碟條帶狀態標記值磁碟條帶狀態
00冰點狀態
01熱點狀態
11延遲狀態
因此,可以理解的是,對於本實施例的磁碟陣列,StripeDl、 StripeD3 和StripeD5對應的狀態位圖標記為00,表示在目前的一個計數周期內, StripeDl、 StripeD3和StripeD5這些磁碟條帶作為目標的寫請求較少,即其 處於水點狀態;
StripeD2的狀態位圖為01,表示在該計數周期內,已接收到較多針對
12StripeD2的寫請求,此時StripeD2校驗塊的內容需要頻繁更新,但是這些 更新目前並未延遲處理,磁碟條帶處於熱點狀態;StripeD4的狀態位圖為 11,表示系統判定針對StripeD4的寫請求十分密集,處理寫請求時對 StripeD4的校驗塊更新做出延遲處理來提升性能,磁碟條帶處於延遲狀態。 當然,所述磁碟條帶狀態標記值不限於所述2bit格式,其只要能夠區 分所述三種磁碟條帶狀態且可以適合計算機存儲及辨識的值的形式都可 以。
當然,所述三種磁碟條帶狀態與標記值"00、 01、 11"的對應關係不 限於表1給出的對應關係,還可以為水點狀態對應"01"、熱點狀態對應 "00"以及延遲狀態對應"11"的對應關係等。
在實際情況中,由於寫請求通常具備連續性,則》茲盤陣列中的多個相 鄰磁碟條帶的狀態位圖標記相同。
在本實施例中,預先創建所述磁碟條帶狀態位圖,所述磁碟條帶狀態 位圖具有N個狀態塊,分別對應所述N個石茲盤條帶,記錄所述N個磁碟條 帶的狀態值,以標記其處於寫操作頻繁狀態、寫操作不頻繁狀態或者是延 遲更新校驗塊狀態。
優選地,在本實施例中,內存中每個條帶結構具有一個寫計數屬性, 系統分配一個寫計數屬性維護線程以維護所述寫計數屬性。具體地,系統 每接收一個寫請求,所迷寫計數維護線程對所述寫計數屬性加1,所述寫計 數維護線程採用定時機制,即設定一個計數周期,在所述一個計數周期內, 所述寫技術維護線程掃描該內存中正在使用(或者稱為被激活)的條帶結 構的寫計數屬性,判斷其是否超過一個閾值,如果超過所述閾值,則將其 對應的磁碟條帶對應的狀態塊更新為熱點狀態值;否則將其更新為水點狀 態值,如果所述狀態塊的位圖標記為延遲狀態,則不進^f亍更新。
上述判斷完畢,將所述寫計數屬性清O,所有被激活的條帶結構掃描完 成之後進入下一個周期。下面結合圖4詳細說明本發明第一實施例提供的》茲盤陣列的數據讀寫方法。
圖4為本發明第一實施例的磁碟P牟列的數據讀寫方法流程圖,包括步 驟一、步驟二和步驟三
步驟一 內存分配多個條帶結構,創建所述^f茲盤條帶狀態位圖,以記錄 所述^f茲盤條帶的狀態屬性;初始化所述磁碟條帶狀態位本領域的技術人員可以理解,內存分配出多個條帶結構(Stripe)。激 活其中一個條帶結構用於對應所述磁碟陣列的一個目標磁碟條帶StripeD, 所述目標磁碟條帶即為被請求讀操作或者寫操作的目標磁石茲盤條帶。所述 StripeD和Stripe中的數據塊大小是相同的。所述內存的條帶結構的數目遠 遠低於所述磁碟陣列中的磁碟條帶的數目,內存的條帶結構只分配給被用 戶請求到的StripeD即目標磁碟陣列,所述分配出的對應目標磁碟條帶的條 帶結構稱為被激活的條帶結構。
所述初始化所述磁碟條帶狀態位圖,具體為,將其上記錄的每個磁碟 條帶的狀態值初始化為所述冰點狀態。
設定所述計數屬性維護線程的計數周期,並設定所述闞值,初始化所 述磁碟條帶狀態位圖的同時對每個條帶結構的寫計數屬性清0,並開始所述 計數周期;
步驟二接收讀寫請求,並更新所述磁碟條帶狀態位圖。
本實施例中,在接收讀寫請求時執行一個寫計數以更新所述磁碟條帶
狀態位圖,所述執行寫計數為每接收一個寫請求,所述寫計數屬性維護
線程對目標磁碟條帶對應的條帶結構的寫計數屬性加1,並根據所述執行寫
計數的結果更新所述磁碟條帶狀態位圖。
具體地,在所述計數周期內,所述寫計數屬性大於所述閾值,更新所
述磁碟條帶的狀態屬性為所述熱點狀態,所述寫計數屬性小於或者等於所
述閾值,所述磁碟條帶的狀態屬性保持為冰點狀態。步驟三執行用戶的讀寫請求,如果是寫請求,則進入一個寫請求處理 流程,如果是讀請求,則進入一讀請求處理流程。
所述寫請求處理流程包括以下步驟判斷目標》茲盤條帶的狀態屬性是 否為水點狀態,如果是,則寫入目標數據塊並更新校驗塊,然後將目標磁 盤條帶的狀態位圖更新為水點狀態"00",如果否,則寫入目標數據塊, 然後進入一個校驗延遲處理流程。
所述寫請求處理流程中的更新校驗塊的步驟為讀取目標數據塊所在 磁碟條帶的其他數據塊並與目標數據塊進行依次異或計算,將所述異或計 算的結果寫入所述校驗塊;
下面結合圖5詳細說明所述寫請求處理流程中的校驗延遲處理流程, 所述校-險延遲處理流程的步驟為
判斷所述目標》茲盤條帶的狀態為熱點狀態還是延遲狀態;
如果所述目標》茲盤條帶的狀態是熱點狀態"01",則執行步驟A3,如 果所述目標磁碟條帶的狀態是延遲狀態"11",則執行步驟B3;
所述步驟A3為更新所述目標》茲盤條帶的狀態為延遲狀態,並開始計 時一個延遲時間。
所述步驟B3為首先判斷所述延遲狀態的延遲時間是否結束,如果所 述延遲時間結束,則執行更新校驗塊,並將目標磁碟條帶的狀態位圖更新 為水點狀態"00"。
可以理解的是,所述延遲時間的時間長度根據實際需要在系統初始化 時進行設定,不限於一個固定的值。當然,所述延遲時間越長,校驗更新 的次數會越少,磁碟陣列的讀寫效率會越高,而數據丟失的風險相對於延 遲時間較短的磁碟陣列而言則越大。
下面結合圖6詳細說明所述步驟三中的讀請求處理流程。
首先,讀取目標數據塊並寫入數據緩衝區;
具體地,將目標數據塊的數據讀入其所在^i盤條帶所對應的內存的條帶結構的數據緩衝區中。
然後,判斷目標數據塊所在磁碟條帶對應的條帶結構是否更新,是則
執行步驟A5,否則結束所述讀請求處理並返回;
所述步驟A5為查看所述^f茲盤條帶的狀態是否為延遲狀態,是則更新 校驗塊並結束所述校驗延遲時間,否則結束所述讀請求處理並返回。
在本實施例中,所述磁碟條帶的狀態屬性由一個狀態訪問線程訪問所 述磁碟條帶位圖獲得,所述寫計數屬性維護線程與狀態訪問線程互斥。優 選地,設定所述寫計數屬性維護線程的優先級高於所述磁碟條帶狀態位圖 訪問的優先級。
請參閱圖7,為圖3的磁碟陣列採用本發明第一實施例提供的磁碟陣列 數據讀寫方法的讀寫請求處理時序圖。
所述磁碟陣列執行對磁碟條帶StripeD,中數據塊的讀寫操作,包括寫數 據塊0,寫數據塊O和數據塊l,讀數據塊l,寫數據塊0、數據塊l和數 據塊2,以及寫數據塊2共計六次讀寫操作。
採用本發明第一實施例給出的磁碟陣列的數據讀寫方法後,如圖7所 示,計算和寫入校驗塊Pl的操作被延遲,在此之前針對StripeD,中數據塊 的寫操作處理都沒有更新Pl,節省了寫請求的處理時間,加快了磁碟陣列 處理讀寫的速度。
可見,採用本發明第一實施例提供的磁碟陣列的數據讀寫方法,在一 個計數周期內,讀寫處理時序明顯比現有技術的讀寫處理時序減少了多個 更新校驗的時間,提高了數據讀寫效率。在保證磁碟陣列容錯能力的前提 下,有效減少了寫操作頻繁的情況下校驗數據的更新次數,大大提高系統 的讀寫處理速度,加快磁碟陣列對用戶的響應,有效改善磁碟陣列的讀寫性能。
下面詳細說明本發明第二實施例的磁碟陣列的數據讀取方法,其與本 發明第一實施例的不同點在於,在步驟一中,在所述初始化每個i茲盤條帶
16的狀態屬性之前執行一個步驟D,所述步驟D為檢查所述磁碟條帶狀態 位圖是否記錄有延遲狀態,如果有則更新其相應磁碟條帶的校驗塊。
可以理解的是,本發明第二實施例的磁碟陣列,在當磁碟陣列意外被 停止運行,系統在下一次啟動時,在所述初始化每個磁碟條帶的狀態屬性 之前,執行步驟D,可以恢復磁碟陣列被停止運行時的數據,在具備本發 明第一實施例的有益效果基礎上,數據安全性更高。
以上說明書中的具體實施部分,僅是本發明的較佳實施例而已,並非 對本發明作任何形式上的限制,雖然本發明已以較佳實施例揭露如上,然 而並非用以限定本發明,任何熟悉本專業的技術人員,在不脫離本發明技 術方案範圍內,當可利用上述揭示的方法及技術內容做出些許的更動或修 飾為等同變化的等效實施例,但是凡是未脫離本發明技術方案的內容,依 據本發明的技術實質對以上實施例所作的任何簡單修改、等同變化與修飾, 均仍屬於本發明技術方案的範圍內。
權利要求
1、一種磁碟陣列的數據讀寫方法,所述磁碟陣列的每個磁碟條帶具有一個狀態屬性,所述狀態屬性為寫操作頻繁狀態、寫操作不頻繁狀態或者延遲更新校驗塊狀態,所述磁碟陣列的數據讀寫方法包括以下步驟A、內存分配多個條帶結構,創建一個磁碟條帶狀態位圖,以記錄全部磁碟條帶的狀態屬性;初始化所述磁碟條帶狀態位圖;B、接收用戶讀寫請求,並更新所述磁碟條帶狀態位圖上的目標磁碟條帶的狀態屬性;C、執行用戶的讀寫請求,如果是寫請求,則執行寫目標磁碟條帶並根據目標磁碟條帶的狀態屬性執行更新校驗塊或者延遲更新校驗塊,如果是讀請求,則執行一讀請求處理流程。
2、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,所述 步驟C中,如果是寫請求,則在執行所述寫目標磁碟條帶的同時檢查其狀 態屬性是否為寫操作不頻繁狀態,如果是則選擇執行所述更新校驗塊,如 杲不是則選擇執行所述延遲更新校驗塊。
3、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,所述 步驟A中,所述初始化》茲盤條帶狀態位圖為將其上記錄的每個磁碟條帶的 狀態初始化為寫操作不頻繁狀態。
4、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,所述 磁碟條帶的狀態屬性以一個標記值記錄在所述磁碟條帶狀態位圖上,所述 標記值為2位二進位值,所述寫操作頻繁狀態、寫操作不頻繁狀態或者延 遲更新校驗塊狀態的標記值不同。
5、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,所述步驟C中,所述讀請求處理流程包括以下步驟將目標數據塊讀入對應條帶結構的數據緩衝區;判斷所述對應的條帶結構的所有數據緩衝區是否完全更新,如果是, 則執行步驟A5;所述步驟A5為檢查目標磁碟條帶的狀態屬性是否為延遲更新校驗塊 狀態,如果是,則更新目標磁碟條帶的校驗塊並更新所述目標磁碟條帶的 狀態屬性為寫操作不頻繁狀態。
6、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,在執 行步驟A中,在所述初始化每個磁碟條帶的狀態屬性之前執行一個步驟D, 所述步驟D為檢查所述磁碟條帶狀態位圖是否記錄有延遲狀態,如果有 則更新其相應磁碟條帶的校驗塊。
7、 如權利要求1所述的磁碟陣列的數據讀寫方法,其特徵在於,步驟 A中,所述條帶結構具有一個寫計數屬性,其由一個寫計數屬性維護線程 維護,設定所述計數屬性維護線程一個計數周期,並設定一個閾值,初始 化所述磁碟條帶狀態位圖的同時對每個條帶結構的寫計數屬性清0,並開始 一個計數周期;步驟B中,接收用戶讀寫請求,每接收一個寫請求則所述 寫計數屬性維護線程對所述目標磁碟條帶所對應條帶結構的寫計數屬性加 1,在所述計數周期結束時,所述條帶結構的寫計數屬性大於所述閾值,則 更新其對應的目標磁碟條帶的狀態屬性為所述寫操作頻繁狀態,所述寫計 數屬性小於或者等於所述閾值,則更新其對應的目標磁碟條帶的狀態屬性 為寫操作不頻繁狀態。
8、 如權利要求1或2所述的磁碟陣列的數據讀寫方法,其特徵在於, 所述更新校驗塊的步驟為讀取目標磁碟條帶的數據塊並依次進行異或計 算,將所述異或計算的結果寫入所述校驗塊。
9、 如權利要求2所述的磁碟陣列的數椐讀寫方法,其特徵在於,所述 步驟C中,所述執行延遲更新校驗塊包括以下步驟判斷所述目標磁碟條帶的狀態屬性為寫操作頻繁狀態還是延遲更新校 驗塊狀態,如果是寫操作頻繁狀態,則執行步驟A3,如果是延遲更新校驗 塊狀態,則執行步驟B3;所述步驟A3為更新所述目標^茲盤條帶的狀態屬性為延遲更新校驗塊 狀態,並開始計時一個延遲時間,在所述延遲時間內,延遲更新校驗塊;所述步驟B3為判斷所述延遲時間是否結束,如果是,則執行更新校 驗塊並將目標磁碟條帶的狀態屬性更新為寫操作不頻繁狀態。
10、 如權利要求2或9所述的磁碟陣列的數據讀寫方法,其特徵在於, 所迷目標磁碟條帶的狀態屬性由一個狀態訪問線程訪問所述磁碟條帶位圖 獲得,所述寫計數屬性維護線程與狀態訪問線程互斥。
全文摘要
本發明提供了一種磁碟陣列的數據讀寫方法,其包括以下步驟內存分配多個條帶結構,創建一個磁碟條帶狀態位圖,以記錄全部磁碟條帶的狀態屬性;初始化所述磁碟條帶狀態位圖;接收用戶讀寫請求,並更新所述磁碟條帶狀態位圖;執行用戶的讀寫請求,如果是寫請求,則執行寫目標數據塊並根據所述目標數據塊所在磁碟條帶的狀態屬性執行更新校驗塊或者延遲執行更新校驗塊,如果是讀請求,則執行一讀請求處理流程。本發明的磁碟陣列的數據讀寫方法,採用磁碟條帶狀態位圖自適應檢測其被寫操作頻度,對於寫操作頻率高的磁碟條帶,延遲更新檢驗塊,加快所述磁碟陣列的讀寫處理效率。
文檔編號G06F3/06GK101566924SQ20081006700
公開日2009年10月28日 申請日期2008年4月23日 優先權日2008年4月23日
發明者佳 王 申請人:中興通訊股份有限公司