專利名稱:Raid存儲(chǔ)系統(tǒng)和可進(jìn)行raid計(jì)算的存儲(chǔ)器及控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及^f茲盤冗余陣列(RAID)技術(shù),特別涉及一種RAID存儲(chǔ)系 統(tǒng)及該系統(tǒng)的控制方法、以及一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器及該存儲(chǔ)器的 片內(nèi)控制方法。
背景技術(shù):
RAID技術(shù)已廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)的各種場(chǎng)合。其中,RAID5、 RAID6 等具備冗余能力的RAID中,除了以條帶方式存儲(chǔ)數(shù)據(jù)之外,每一條帶還具 有可還原該條帶內(nèi)數(shù)據(jù)的校驗(yàn)數(shù)據(jù)。
RAID存儲(chǔ)系統(tǒng)分為硬RAID和軟RAID兩種。硬RAID中,系統(tǒng)CPU 和北橋(某些情況下可以不包含北橋)通過(guò)一個(gè)RAID控制器下掛有若干存 儲(chǔ)器,并由RAID控制器中的CPU計(jì)算(例如,RAID5所采用的RAID算 法為異或"Xor"運(yùn)算)若干存儲(chǔ)器的存儲(chǔ)空間中存儲(chǔ)的各條帶校驗(yàn)數(shù)據(jù); 軟RAID中則不具有RAID控制器,而是由系統(tǒng)CPU和北橋(某些情況下 可以不包含北橋)直接下掛存儲(chǔ)器、該存儲(chǔ)器中劃分有若干存儲(chǔ)空間,并由 系統(tǒng)CPU計(jì)算存儲(chǔ)器內(nèi)劃分的若干存儲(chǔ)空間中各條帶校驗(yàn)數(shù)據(jù)。
參見(jiàn)圖1,以類型為硬RAID的RAID5為例,條帶0的數(shù)據(jù)條塊Dl存 儲(chǔ)于存儲(chǔ)器1的存儲(chǔ)空間、數(shù)據(jù)條塊D2存儲(chǔ)于存儲(chǔ)器2的存儲(chǔ)空間、校驗(yàn) 數(shù)據(jù)El存儲(chǔ)于存儲(chǔ)器3的存儲(chǔ)空間,E1=D1 Xor D2;條帶1的數(shù)據(jù)條塊 D3存儲(chǔ)于存儲(chǔ)器1的存儲(chǔ)空間、數(shù)據(jù)條塊D4存儲(chǔ)于存儲(chǔ)器2的存儲(chǔ)空間、 校驗(yàn)數(shù)據(jù)E2存儲(chǔ)于存儲(chǔ)器3的存儲(chǔ)空間,E2=D3 Xor D4。
當(dāng)數(shù)據(jù)條塊D1改變?yōu)镈l,時(shí),需要重新計(jì)算條帶0的校驗(yàn)數(shù)據(jù)El,
步驟1,參見(jiàn)圖2a, RAID控制器中的CPU從存儲(chǔ)器1的存儲(chǔ)空間中讀取數(shù)據(jù)條塊D1;
步驟2,參見(jiàn)圖2b, RAID控制器中的CPU向存儲(chǔ)器1的存儲(chǔ)空間中寫 入改變后的數(shù)據(jù)條塊D1',實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
步驟3,參見(jiàn)圖2c,由于數(shù)據(jù)條塊D1改變?yōu)镈l,,因而需要重新計(jì)算 校驗(yàn)數(shù)據(jù)E1 , RAID控制器中的CPU從存儲(chǔ)器3的存儲(chǔ)空間中讀取校驗(yàn)數(shù) 據(jù)El;
步驟4, RAID控制器中的CPU計(jì)算得到E1,=D1, XorDl XorEl;
步驟5,參見(jiàn)圖2d, RAID控制器中的CPU再將計(jì)算得到的改變的校驗(yàn) 數(shù)據(jù)Er寫入至存儲(chǔ)器3的存儲(chǔ)空間中,實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更改,RAID控制 器中的CPU需要執(zhí)行2次讀、2次寫、以及1次計(jì)算共5個(gè)步驟,占用了 RAID控制器中的較多CPU資源,從而會(huì)影響RAID存儲(chǔ)系統(tǒng)的性能。
同理,對(duì)于軟RAID來(lái)說(shuō),為了實(shí)現(xiàn)RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更新,系 統(tǒng)CPU也需要針對(duì)存儲(chǔ)空間執(zhí)行上述5個(gè)步驟,即占用較多的CPU資源, 也會(huì)影響RAID存儲(chǔ)系統(tǒng)的性能。
可見(jiàn),現(xiàn)有技術(shù)中,無(wú)論是硬RAID還是軟RAID, RAID存儲(chǔ)系統(tǒng)在 更改數(shù)據(jù)時(shí)都會(huì)占用較多的CPU資源,從而使得RAID存儲(chǔ)系統(tǒng)的性能不 高。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種RAID存儲(chǔ)系統(tǒng)及該系統(tǒng)的控制方法、以 及一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器及該存儲(chǔ)器的片內(nèi)控制方法,能夠提高 RAID存儲(chǔ)系統(tǒng)的存儲(chǔ)性能。
本發(fā)明提供的一種RAID存儲(chǔ)系統(tǒng),包括RAID控制器和若干存儲(chǔ)器; 每一存儲(chǔ)器分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與RAID控制器中的 CPU連通;功能部件的透?jìng)鲝膶?duì)應(yīng)存儲(chǔ)器讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU將所述 讀取的該數(shù)據(jù)條塊、所述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在 存儲(chǔ)器所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存 儲(chǔ)器內(nèi)讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù),并利用RAID控制器中的CPU寫入的該數(shù) 據(jù)條塊、所述改變的該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù) 據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回至對(duì)應(yīng)存儲(chǔ)器內(nèi)。
可選地,所述RAID為RAID5或RAID6,所述RAID算法功能部件為 可執(zhí)行異或運(yùn)算的邏輯器件。
本發(fā)明提供的一種RAID存儲(chǔ)系統(tǒng)中的控制方法,設(shè)置每一存儲(chǔ)器分別 對(duì)應(yīng)連通一個(gè)RAID算法功能部件,并包括如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)RAID算法功能部件的透?jìng)鲝膶?duì)應(yīng) 存儲(chǔ)器讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,將所述讀取的該數(shù)據(jù)條塊、所 述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID 算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)器內(nèi)讀取所述對(duì)應(yīng)校 驗(yàn)數(shù)據(jù),并利用寫入該RAID算法功能部件的該數(shù)據(jù)條塊、所述改變的該數(shù) 據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫 回至對(duì)應(yīng)存儲(chǔ)器內(nèi)。
可選地,所述RAID為RAID5或RAID6,所述計(jì)算為異或運(yùn)算。
本發(fā)明提供的一種RAID存儲(chǔ)系統(tǒng),包括系統(tǒng)CPU和存儲(chǔ)器,所述存 儲(chǔ)器中劃分有若干存儲(chǔ)空間;
每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與系統(tǒng)CPU連通;
針對(duì)需要改變的數(shù)據(jù)條塊,系統(tǒng)CPU通過(guò)對(duì)應(yīng)RAID算法功能部件的 透?jìng)鲝拇鎯?chǔ)空間讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,系統(tǒng)CPU將所述讀取的該數(shù)
據(jù)條塊、所述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)空間所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)空間內(nèi) 讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù),并利用系統(tǒng)CPU寫入的該數(shù)據(jù)條塊、所述改變的 該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù) 據(jù)寫回至對(duì)應(yīng)存儲(chǔ)空間。
可選地,所述RAID為RAID 5或RAID6,所述RAID算法功能部件為 可執(zhí)行異或運(yùn)算的邏輯器件。
本發(fā)明提供的 一 種RAID存儲(chǔ)系統(tǒng)中的控制方法,設(shè)置存儲(chǔ)器中的每一 存4諸空間分別對(duì)應(yīng)連通一個(gè)RAID算法功能部件,與系統(tǒng)CPU連通,并包 括如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)RAID算法功能部件的透?jìng)鳎瑥拇?儲(chǔ)空間讀取數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,將所述讀取的數(shù)據(jù)條塊、所述 改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)空間所對(duì)應(yīng)的RAID 算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)空間內(nèi)讀取所述對(duì)應(yīng) 校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法功能部件的所述數(shù)據(jù)條塊、所述改變的 該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù) 據(jù)寫回至對(duì)應(yīng)存儲(chǔ)空間內(nèi)。
可選地,所述RAID為RAID5或RAID6,所述計(jì)算為異或運(yùn)算。
本發(fā)明提供的 一種RAID存儲(chǔ)系統(tǒng),包括RAID控制器和若干存儲(chǔ)器, 每一存儲(chǔ)器中又包括存儲(chǔ)空間,以及與RAID控制器中的CPU連通、并 通過(guò)讀寫總線與存儲(chǔ)空間連通的控制單元;
每一存儲(chǔ)器還包括RAID算法單元、以及切換單元;其中,切換單元的 輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另 一路輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通 過(guò)一控制線與RAID控制器中的CPU連通;
針對(duì)需要改變的數(shù)據(jù)條塊,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制
該存儲(chǔ)器中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,然后請(qǐng)求對(duì)應(yīng)存儲(chǔ)器中的控制單元通過(guò)讀總線從存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊、再請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫
入至存儲(chǔ)空間;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU通過(guò)對(duì) 應(yīng)控制線控制該存儲(chǔ)器中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有 RAID算法單元的寫總線與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通 過(guò)寫總線將改變前和改變后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供 RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法單元的 改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及該RAID算法單元讀取的校驗(yàn)數(shù)據(jù), 重新計(jì)算校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間。
可選地,所述RAID為RAID 5或RAID6,所述RAID計(jì)算單元為可執(zhí) 行異或運(yùn)算的邏輯單元。
本發(fā)明提供的 一種RAID存儲(chǔ)系統(tǒng)中的控制方法,在每一存儲(chǔ)器中設(shè)置 一RAID算法單元、以及一切換單元,其中,切換單元的輸入通過(guò)寫總線與 控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)串連 有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則連接一控制線;
該控制方法還包括如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中的切換單 元、使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,然后請(qǐng)求對(duì) 應(yīng)存儲(chǔ)器中的控制單元通過(guò)讀總線從存儲(chǔ)空間中讀取該數(shù)據(jù)條塊、再請(qǐng)求該 存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ)空間;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器 中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總 線與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變前和改 變后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供RAID算法單元從存儲(chǔ)空間 讀取校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù) 條塊、以及該RAID算法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間。
可選地,所述RAID為RAID 5或RAID6,所述計(jì)算為異或運(yùn)算。 本發(fā)明提供的一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器,包括存儲(chǔ)空間,以及
通過(guò)讀寫總線與存儲(chǔ)空間連通的控制單元;
包括RAID算法單元、以及切換單元;其中,切換單元的輸入通過(guò)寫總
線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)
串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通過(guò)一控制線與 夕卜部連通;
該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單元根據(jù) 外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存 儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ) 空間;
該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而 需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使該 存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通; 控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊寫 入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用 寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)椐條塊、以及該RAID算 法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回存儲(chǔ)空間。
可選地,所述RAID為RAID5或RAID6,所述RAID計(jì)算單元為可執(zhí) 行異或運(yùn)算的邏輯單元。
本發(fā)明提供的一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器的片內(nèi)控制方法,在每一 存儲(chǔ)器中設(shè)置一RAID算法單元、以及一切換單元,其中,切換單元的輸入 通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另一路 輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通過(guò)一 控制線與外部連通;該控制方法還包括如下步驟
在該存儲(chǔ)器的存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單元根據(jù) 外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存 儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ) 空間;
在該存儲(chǔ)器的存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而 需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使該 存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通; 控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊寫 入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用 寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及該RAID算 法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回存儲(chǔ)空間。
可選地,所述RAID為RAID5或RAID6,所述計(jì)算為異或運(yùn)算。
本發(fā)明提供的一種RAID存儲(chǔ)系統(tǒng),包括CPU和若干存儲(chǔ)空間,每一 存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能單元與CPU連通;
存儲(chǔ)空間內(nèi)改變的數(shù)據(jù)條塊,由CPU通過(guò)對(duì)應(yīng)RAID算法功能單元的 透?jìng)飨茸x取再寫入; 存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而被更新的奇偶校驗(yàn)數(shù)據(jù),由該存 儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根椐CPU寫入該RAID算法功能單元的 改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇偶校驗(yàn) 數(shù)據(jù)計(jì)算得到。
可選地,所述RAID為RAID 5或RAID6,所述RAID算法功能單元為 可執(zhí)行異或運(yùn)算的邏輯器件或功能單元。
本發(fā)明提供的一種RAID存儲(chǔ)系統(tǒng)的控制方法,其特征在于,為每一存 儲(chǔ)空間設(shè)置一對(duì)應(yīng)的RAID算法功能單元,且該控制方法包括如下步驟
通過(guò)對(duì)應(yīng)RAID算法功能單元的透?jìng)飨茸x取再寫入,改變存儲(chǔ)空間內(nèi)的數(shù)據(jù)條塊;
由對(duì)應(yīng)存儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根據(jù)寫入該RAID算法功能 單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇 偶校驗(yàn)數(shù)據(jù),更新存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而的奇偶校驗(yàn)數(shù)據(jù)。 可選地,所述RAID為RAID5或RAID6,所述計(jì)算為異或運(yùn)算。 由上述技術(shù)方案可見(jiàn),本發(fā)明為每個(gè)存儲(chǔ)器配備一 RAID算法功能部 件、或在每個(gè)存儲(chǔ)器內(nèi)增設(shè)可執(zhí)行RAID算法的邏輯單元,并由RAID控制 器或系統(tǒng)CPU,將RAID算法計(jì)算所需數(shù)據(jù)條塊調(diào)度至待更新校驗(yàn)數(shù)據(jù)所在 存儲(chǔ)器處,即可由該存儲(chǔ)器配備的RAID算法功能部件、或該存儲(chǔ)器內(nèi)增設(shè) 的可執(zhí)行RAID算法的邏輯單元實(shí)現(xiàn)RAID算法計(jì)算。如此一來(lái),RAID控 制器、系統(tǒng)CPU均不需要執(zhí)行RAID算法計(jì)算,而僅僅負(fù)責(zé)讀寫操作即可, 從而能夠節(jié)省RAID存儲(chǔ)系統(tǒng)中的CPU資源,進(jìn)而提高RAID存儲(chǔ)系統(tǒng)的 性能。
此外,本發(fā)明還可以在內(nèi)部增設(shè)有可執(zhí)行RAID算法的邏輯單元的存儲(chǔ) 器中,增設(shè)一切換開(kāi)關(guān)和控制線,用以將實(shí)現(xiàn)該存儲(chǔ)在具備RAID算法功能 和普通存儲(chǔ)功能之間切換,從而還能夠提高該存儲(chǔ)器的靈活性和通用性。
圖1為現(xiàn)有RAID存儲(chǔ)系統(tǒng)的一實(shí)例示意圖; 圖2a 圖2d為如圖1所示RAID存儲(chǔ)系統(tǒng)更改數(shù)據(jù)過(guò)程的示意圖; 圖3為本發(fā)明實(shí)施例一提供的RAID存儲(chǔ)系統(tǒng)的一實(shí)例示意圖; 圖4a 圖4d為本發(fā)明實(shí)施例一所提供的RAID存儲(chǔ)系統(tǒng)更改數(shù)據(jù)過(guò)程 的示意圖5為本發(fā)明實(shí)施例一提供的RAID存儲(chǔ)系統(tǒng)控制方法的流程示意圖; 圖6為本發(fā)明實(shí)施例二提供的RAID存儲(chǔ)系統(tǒng)的一實(shí)例示意圖; 圖7a 圖7d為本發(fā)明實(shí)施例二所提供的RAID存儲(chǔ)系統(tǒng)更改數(shù)據(jù)過(guò)程 的示意圖;圖8為本發(fā)明實(shí)施例二提供的RAID存儲(chǔ)系統(tǒng)控制方法的流程示意圖; 圖9本發(fā)明實(shí)施例三提供的存儲(chǔ)器的邏輯結(jié)構(gòu)示意圖; 圖IO為本發(fā)明實(shí)施例三提供的RAID存儲(chǔ)系統(tǒng)的一實(shí)例示意圖; 圖lla-圖lid為本發(fā)明實(shí)施例三所提供的RAID存儲(chǔ)系統(tǒng)更改數(shù)據(jù)過(guò) 程的示意圖12為本發(fā)明實(shí)施例三提供的RAID存儲(chǔ)系統(tǒng)控制方法的流程示意圖; 圖13為本發(fā)明實(shí)施例三提供的存儲(chǔ)器的片內(nèi)控制方法流程示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。 實(shí)施例一
本實(shí)施例提供了一種RAID存儲(chǔ)系統(tǒng),該RAID存儲(chǔ)系統(tǒng)屬于硬RAID, 即包含系統(tǒng)CPU、北橋(某些情況下可以不包含北橋)、以及RAID控制器 和若干存儲(chǔ)器。
除此之外,本實(shí)施例的RAID存儲(chǔ)系統(tǒng)中還包括與存儲(chǔ)器數(shù)量相等的 RAID算法功能部件,每一存儲(chǔ)器內(nèi)分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件 與RAID控制器中的CPU連通。
基于上述RAID存儲(chǔ)系統(tǒng)架構(gòu)
針對(duì)需要改變的數(shù)據(jù)條塊,RAID控制器中的CPU可通過(guò)對(duì)應(yīng)RAID算 法功能部件的透?jìng)?,從?duì)應(yīng)存儲(chǔ)器讀取原始的該數(shù)據(jù)條塊、并寫回改變的該 數(shù)據(jù)條塊,以實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
此后,針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU 還將讀取的原始的該數(shù)據(jù)條塊、以及讀取后寫回的改變的該數(shù)據(jù)條塊,依次 寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID算法功能部件中,由該對(duì)應(yīng) 的RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)器內(nèi)讀取對(duì)應(yīng)校驗(yàn)數(shù)據(jù),再利用RAID控 制器中的CPU寫入的原始數(shù)據(jù)條塊、改變的數(shù)據(jù)條塊、以及RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算出變化后的校驗(yàn)數(shù)據(jù)并寫回至對(duì)應(yīng)存儲(chǔ)器 內(nèi),以實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
參見(jiàn)圖3,以RAID5為例,條帶0的數(shù)據(jù)條塊D1存儲(chǔ)于存儲(chǔ)器1、數(shù) 據(jù)條塊D2存儲(chǔ)于存儲(chǔ)器2、校驗(yàn)數(shù)據(jù)E1存儲(chǔ)于存儲(chǔ)器3, El=DlXorD2; 條帶1的數(shù)據(jù)條塊D3存儲(chǔ)于存儲(chǔ)器1、數(shù)據(jù)條塊D4存儲(chǔ)于存儲(chǔ)器2、校驗(yàn) 數(shù)據(jù)E2存儲(chǔ)于存儲(chǔ)器3, E2=D3 Xor D4。
且在圖3中,存儲(chǔ)器1通過(guò)RAID算法功能部件1與RAID控制器的 CPU連通,存儲(chǔ)器2通過(guò)RAID算法功能部件2與RAID控制器的CPU連 通,存儲(chǔ)器3通過(guò)RAID算法功能部件3與RAID控制器的CPU連通。
當(dāng)數(shù)據(jù)條塊Dl改變?yōu)镈l,時(shí),需要重新計(jì)算條帶0的校驗(yàn)數(shù)據(jù)El,
步驟l,參見(jiàn)圖4a, RAID控制器中的CPU通過(guò)RAID算法功能部件1 的透?jìng)?,從存?chǔ)器1中讀取數(shù)據(jù)條塊Dl;
步驟2,參見(jiàn)圖4b, RAID控制器中的CPU通過(guò)RAID算法功能部件1 的透?jìng)鳎虼鎯?chǔ)器1中寫入改變后的數(shù)據(jù)條塊Dl,,實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
步驟3,參見(jiàn)圖4c,由于數(shù)據(jù)條塊D1改變?yōu)镈l,,因而需要重新計(jì)算 校驗(yàn)數(shù)據(jù)El, RAID控制器中的CPU將改變后的數(shù)據(jù)條塊Dl,,寫入至對(duì) 應(yīng)校驗(yàn)數(shù)據(jù)El所在存儲(chǔ)器3所對(duì)應(yīng)的RAID算法功能部件3中,并由RAID 算法功能部件3從存儲(chǔ)器3中讀取校驗(yàn)數(shù)據(jù)El,然后再由RAID算法功能 部件3計(jì)算得到El,-Dl,XorEl后,寫回至存儲(chǔ)器3中;
步驟4,參見(jiàn)圖4d, RAID控制器中的CPU還將改變前的數(shù)據(jù)條塊Dl, 寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)El所在存儲(chǔ)器3所對(duì)應(yīng)的RAID算法功能部件3中, 并由RAID算法功能部件3從存儲(chǔ)器3中讀取剛剛計(jì)算得到的校驗(yàn)數(shù)據(jù)El,, 然后再由RAID算法功能部件3計(jì)算得到E1"=D1 XorEl,-Dl XorDl, Xor El后,寫回至存儲(chǔ)器3中,實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更改,RAID控制 器中的CPU只需要執(zhí)行1次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少 了 1次計(jì)算、以及1次讀寫間的切換,從而減少了 RAID控制器中占用的CPU資源,進(jìn)而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。
基于上述RAID存儲(chǔ)系統(tǒng),本實(shí)施例還提供了 一種RAID存儲(chǔ)系統(tǒng)中的 控制方法,該控制方法可以由RAID控制器中的CPU來(lái)執(zhí)行、或由RAID 存儲(chǔ)系統(tǒng)中可對(duì)存儲(chǔ)器執(zhí)行讀寫操作的任意硬件設(shè)備來(lái)執(zhí)行。
具體說(shuō),以RAID控制器中的CPU來(lái)執(zhí)行該控制方法為例,本實(shí)施例 的控制方法中,首先需要設(shè)置與存儲(chǔ)器數(shù)量相等的RAID算法功能部件,并 設(shè)置每一存儲(chǔ)器分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與RAID控制器中的 CPU連通,然后執(zhí)行如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊,RAID控制器中的CPU通過(guò)對(duì)應(yīng)RAID算法 功能部件的透?jìng)鲝膶?duì)應(yīng)存儲(chǔ)器讀取原始的該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù) 條塊;
此后,針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU 將之前讀取的該數(shù)據(jù)條塊、以及改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)
據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從 對(duì)應(yīng)存儲(chǔ)器內(nèi)讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù)、并利用RAID控制器中的CPU寫入 的原始數(shù)據(jù)條塊、改變的數(shù)據(jù)條塊、以及RAID算法功能部件讀取的校驗(yàn)數(shù) 據(jù),重新計(jì)算出變化后的校驗(yàn)數(shù)據(jù)并寫回至對(duì)應(yīng)存儲(chǔ)器內(nèi),以實(shí)現(xiàn)校驗(yàn)數(shù)據(jù) 的更新。
參見(jiàn)圖5,以一完整的處理流程為例,本實(shí)施例中RAID存儲(chǔ)系統(tǒng)的控 制方法包括
步驟501, RAID控制器中的CPU通過(guò)RAID算法功能部件的透?jìng)?,?對(duì)應(yīng)存儲(chǔ)器中讀取需要改變的數(shù)據(jù)條塊;
步驟502, RAID控制器中的CPU將改變的該數(shù)據(jù)條塊再通過(guò)RAID算 法功能部件的透?jìng)鲗懟刂翆?duì)應(yīng)存儲(chǔ)器,實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
步驟503,由于步驟501讀取的數(shù)據(jù)條塊已在步驟502改變,因而需要 重新計(jì)算對(duì)應(yīng)的校驗(yàn)數(shù)據(jù),RAID控制器中的CPU將步驟502改變后的數(shù)據(jù) 條塊、以及步驟501中讀取的原始數(shù)據(jù)條塊寫入至該數(shù)據(jù)條塊對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID算法功能部件中;
步驟504, RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)器中讀取對(duì)應(yīng)校驗(yàn)數(shù)據(jù),然 后利用CPU寫入的改變前和改變后的數(shù)據(jù)條塊、以及RAID算法功能部件 讀取的對(duì)應(yīng)校驗(yàn)數(shù)據(jù),重新計(jì)算得到變化后的對(duì)應(yīng)校^^數(shù)據(jù)、并寫回至對(duì)應(yīng) 存儲(chǔ)器中,實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
至此,本流程結(jié)束。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更改,RAID控制 器中的CPU只需要執(zhí)行1次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少 了 1次計(jì)算、以及1次讀寫間的切換,從而減少了 RAID控制器中占用的 CPU資源,進(jìn)而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。 實(shí)施例二
本實(shí)施例提供了 一種RAID存儲(chǔ)系統(tǒng),該RAID存儲(chǔ)系統(tǒng)屬于軟RAID, 即包含系統(tǒng)CPU、北橋(某些情況下可以不包含北橋)和一個(gè)存儲(chǔ)器,存儲(chǔ) 器中劃分有若干存儲(chǔ)空間。
除此之外,每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與系統(tǒng) CPU連通。
基于上述RAID存儲(chǔ)系統(tǒng)架構(gòu)
針對(duì)需要改變的^t據(jù)條塊,系統(tǒng)CPU可通過(guò)對(duì)應(yīng)RAID算法功能部件 的透?jìng)鳎瑥拇鎯?chǔ)空間讀取原始的該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
此后,針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,系統(tǒng)CPU還可將讀取 的原始數(shù)據(jù)條塊、改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)空 間所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存^f^者空 間內(nèi)讀取對(duì)應(yīng)校驗(yàn)數(shù)據(jù),再利用系統(tǒng)CPU寫入的原始數(shù)據(jù)條塊、改變的數(shù) 據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算變化后的校 驗(yàn)數(shù)據(jù)并寫回至對(duì)應(yīng)存儲(chǔ)空間。
參見(jiàn)圖6,以RAID5為例,條帶0的數(shù)據(jù)條塊D1存儲(chǔ)于存儲(chǔ)器的存儲(chǔ) 空間1、數(shù)據(jù)條塊D2存儲(chǔ)于存儲(chǔ)器的存儲(chǔ)空間2、校驗(yàn)數(shù)據(jù)E1存儲(chǔ)于存儲(chǔ)器的存儲(chǔ)空間3, El=DlXorD2;條帶1的數(shù)據(jù)條塊D3存儲(chǔ)于存儲(chǔ)器的存 儲(chǔ)空間1、數(shù)據(jù)條塊D4存儲(chǔ)于存儲(chǔ)器的存儲(chǔ)空間2、校驗(yàn)數(shù)據(jù)E2存儲(chǔ)于存 儲(chǔ)器的存儲(chǔ)空間3, E2=D3 Xor D4 。
且在圖6中,存儲(chǔ)器的存儲(chǔ)空間1通過(guò)RAID算法功能部件1與系統(tǒng) CPU連通,存儲(chǔ)器的存儲(chǔ)空間2通過(guò)RAID算法功能部件2與系統(tǒng)CPU連 通,存儲(chǔ)器3的存儲(chǔ)空間通過(guò)RAID算法功能部件3與系統(tǒng)CPU連通。
當(dāng)數(shù)據(jù)條塊Dl改變?yōu)镈l,時(shí),需要重新計(jì)算條帶0的校驗(yàn)數(shù)據(jù)El,
步驟l,參見(jiàn)圖7a,系統(tǒng)CPU通過(guò)RAID算法功能部件1的透?jìng)鳎瑥?存儲(chǔ)器的存儲(chǔ)空間1中讀取數(shù)據(jù)條塊D1;
步驟2,參見(jiàn)圖7b,系統(tǒng)CPU通過(guò)RAID算法功能部件1的透?jìng)鳎?存儲(chǔ)器的存儲(chǔ)空間1中寫入改變后的數(shù)據(jù)條塊Dl,,實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
步驟3,參見(jiàn)圖7c,由于數(shù)據(jù)條塊D1改變?yōu)镈l,,因而需要重新計(jì)算 校驗(yàn)數(shù)據(jù)El,系統(tǒng)CPU將改變后的數(shù)據(jù)條塊D1',寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)E1 所在存儲(chǔ)器的存儲(chǔ)空間3所對(duì)應(yīng)的RAID算法功能部件3中,并由RAID算 法功能部件3從存儲(chǔ)器的存儲(chǔ)空間3中讀取校驗(yàn)數(shù)據(jù)El,然后再由RAID 算法功能部件3計(jì)算得到E1^D1, Xor El后,寫回至存儲(chǔ)器的存儲(chǔ)空間3 中;
步驟4,參見(jiàn)圖7d,系統(tǒng)CPU還將改變前的數(shù)據(jù)條塊D1,寫入至對(duì)應(yīng) 校驗(yàn)數(shù)據(jù)El所在存儲(chǔ)器的存儲(chǔ)空間3所對(duì)應(yīng)的RAID算法功能部件3中, 并由RAID算法功能部件3從存儲(chǔ)器的存儲(chǔ)空間3中讀取剛剛計(jì)算得到的校 驗(yàn)數(shù)據(jù)El,,然后再由RAID算法功能部件3計(jì)算得到E1"=D1 XorEl,=Dl XorDl,XorEl后,寫回至存儲(chǔ)器的存儲(chǔ)空間3中,實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更改,系統(tǒng)CPU 只需要執(zhí)行l(wèi)次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少了 l次計(jì)算、 以及l(fā)次讀寫間的切換,從而減少了 RAID控制器中占用的CPU資源,進(jìn) 而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。
基于上述RAID存儲(chǔ)系統(tǒng),本實(shí)施例還提供了一種RAID存儲(chǔ)系統(tǒng)中的控制方法,該控制方法可以由系統(tǒng)CPU來(lái)執(zhí)行、或由RAID存儲(chǔ)系統(tǒng)中可 對(duì)存儲(chǔ)器執(zhí)行讀寫操作的任意硬件設(shè)備來(lái)執(zhí)行。
具體說(shuō),以系統(tǒng)CPU來(lái)執(zhí)行該控制方法為例,該控制方法首先需要設(shè) 置存儲(chǔ)器中的每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與系統(tǒng) CPU連通,并包括如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊,系統(tǒng)CPU通過(guò)對(duì)應(yīng)RAID算法功能部件的 透?jìng)鳎瑥拇鎯?chǔ)空間讀取原始的該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;
此后,針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,系統(tǒng)CPU將所迷讀取 的原始的該數(shù)據(jù)條塊、所述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所 在存儲(chǔ)空間所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì) 應(yīng)存儲(chǔ)空間內(nèi)讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù),再利用系統(tǒng)CPU寫入的原始數(shù)據(jù)條 塊、改變的數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì) 算變化后的校驗(yàn)數(shù)據(jù)寫回至對(duì)應(yīng)存儲(chǔ)空間內(nèi)。
參見(jiàn)圖8,以一完整的處理流程為例,本實(shí)施例中RAID存儲(chǔ)系統(tǒng)的控 制方法包括
步驟801,系統(tǒng)CPU通過(guò)RAID算法功能部件的透?jìng)鳎?人對(duì)應(yīng)存儲(chǔ)空間 中讀取需改變的原始數(shù)據(jù)條塊;
步驟802,系統(tǒng)CPU將改變后的該^t據(jù)條塊再通過(guò)RAID算法功能部件 的透?jìng)鲗懟刂翆?duì)應(yīng)存儲(chǔ)空間,實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
步驟803,由于步驟801讀取的數(shù)據(jù)條塊已在步驟802發(fā)生改變,因而 需要重新計(jì)算對(duì)應(yīng)的校驗(yàn)數(shù)據(jù),系統(tǒng)CPU將步驟802改變后的數(shù)據(jù)條塊、 以及步驟801中讀取的原始數(shù)據(jù)條塊寫入至該數(shù)據(jù)條塊對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在 存儲(chǔ)空間所對(duì)應(yīng)的RAID算法功能部件中;
步驟804, RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)空間中讀取對(duì)應(yīng)校驗(yàn)數(shù)據(jù), 然后利用系統(tǒng)CPU寫入的改變前和改變后的數(shù)據(jù)條塊、以及讀取的對(duì)應(yīng)校 驗(yàn)數(shù)據(jù),計(jì)算得到變化后的對(duì)應(yīng)校驗(yàn)數(shù)據(jù)、并寫回至對(duì)應(yīng)存儲(chǔ)空間中,實(shí)現(xiàn) 校驗(yàn)數(shù)據(jù)的更新。至此,本流程結(jié)束。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的^t據(jù)更改,系統(tǒng)CPU 只需要執(zhí)行l(wèi)次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少了 l次計(jì)算、 以及l(fā)次讀寫間的切換,從而減少了 RAID控制器中占用的CPU資源,進(jìn) 而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。 實(shí)施例三
本實(shí)施例提供了 一種RAID存儲(chǔ)系統(tǒng),該RAID存儲(chǔ)系統(tǒng)屬于硬RAID, 即包含系統(tǒng)CPU、北橋(某些情況下可以不包含北橋)、以及RAID控制器 和若干存儲(chǔ)器。
除此之外,本實(shí)施例的RAID存儲(chǔ)系統(tǒng)中,參見(jiàn)圖9,每一存儲(chǔ)器除了 包括存儲(chǔ)空間和承載于片內(nèi)控制器的控制單元(與RAID控制器中的CPU 連通、并通過(guò)讀寫總線與存儲(chǔ)空間連通)之外,還包括承載于片內(nèi)控制器的 RAID算法單元、以及切換單元;其中,切換單元的輸入通過(guò)寫總線與控制 單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)串連有 RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通過(guò)一控制線與RAID 控制器中的CPU連通。當(dāng)然,片內(nèi)控制器還可包括例如譯碼單元等其他現(xiàn) 有功能單元,在本文中不予——贅述。
也就是說(shuō),相比于實(shí)施例一在存儲(chǔ)器外部增加RAID算法功能部件,本 實(shí)施例中的區(qū)別在于,將RAID計(jì)算功能增設(shè)在了存儲(chǔ)器內(nèi)部。
如此一來(lái),基于上述可進(jìn)行RAID計(jì)算的存儲(chǔ)器
針對(duì)需要改變的數(shù)據(jù)條塊、即對(duì)于存儲(chǔ)空間內(nèi)存有需改變數(shù)據(jù)條塊的存 儲(chǔ)器,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中的切換單元、 使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,然后請(qǐng)求對(duì)應(yīng)存 儲(chǔ)器中的控制單元通過(guò)讀總線從存儲(chǔ)空間中讀取原始的該數(shù)據(jù)條塊、再請(qǐng)求 該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ)空間;
相應(yīng)地,存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單 元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中 讀取該數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入 至存儲(chǔ)空間,實(shí)現(xiàn)數(shù)據(jù)條塊的更新;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新、即對(duì)于存儲(chǔ)空間內(nèi)存有需更新 校驗(yàn)數(shù)據(jù)的存儲(chǔ)器,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中 的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線 與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變前和改變 后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供RAID算法單元從存儲(chǔ)空間讀 取校驗(yàn)數(shù)據(jù)、并重新計(jì)算校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間;
相應(yīng)地,存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改 變而需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、 使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連 通;控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條 塊寫入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),再 利用該RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù)、以及RAID控制器中的 CPU請(qǐng)求控制單元寫入的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊,重新計(jì)算得到變 化后的校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間,實(shí)現(xiàn)校驗(yàn)數(shù)據(jù)的更新。
參見(jiàn)圖10,以RAID5為例,條帶0的數(shù)據(jù)條塊Dl存儲(chǔ)于存儲(chǔ)器1的 存儲(chǔ)空間內(nèi)、數(shù)據(jù)條塊D2存儲(chǔ)于存儲(chǔ)器2的存儲(chǔ)空間內(nèi)、校驗(yàn)數(shù)據(jù)El存 儲(chǔ)于存儲(chǔ)器3的存儲(chǔ)空間內(nèi),E1-D1 XorD2;條帶1的數(shù)據(jù)條塊D3存儲(chǔ)于 存儲(chǔ)器l的存儲(chǔ)空間內(nèi)、數(shù)據(jù)條塊D4存儲(chǔ)于存儲(chǔ)器2的存儲(chǔ)空間內(nèi)、校驗(yàn) 數(shù)據(jù)E2存儲(chǔ)于存儲(chǔ)器3的存儲(chǔ)空間內(nèi),E2=D3 Xor D4。
且在圖10中,存儲(chǔ)器l、存儲(chǔ)器2、存儲(chǔ)器3中均包括承載于片內(nèi)控制 器的RAID算法單元、以及切換單元;其中,切換單元的輸入通過(guò)寫總線與 控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)串連 有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通過(guò)一控制線與 RAID控制器中的CPU連通。此外,由于存儲(chǔ)器1和存儲(chǔ)器2中僅存有數(shù)據(jù)條塊,因而RAID控制器 中的CPU通過(guò)對(duì)應(yīng)控制線控制存儲(chǔ)器1和存儲(chǔ)器2中的切換單元、使存儲(chǔ) 器l和存儲(chǔ)器2中的控制單元直接通過(guò)寫總線與存儲(chǔ)空間連通;而由于存儲(chǔ) 器3中僅存有校驗(yàn)數(shù)據(jù),因而RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制 存儲(chǔ)器3中的切換單元、使存儲(chǔ)器3中的控制單元通過(guò)串連有RAID算法單 元的寫總線與存儲(chǔ)空間連通。
當(dāng)然,圖10中僅僅是以存儲(chǔ)器1和存儲(chǔ)器2中僅存有數(shù)據(jù)條塊、存儲(chǔ) 器3中僅存有校驗(yàn)數(shù)據(jù)為例,實(shí)際應(yīng)用中,每一存儲(chǔ)器中均可同時(shí)存放數(shù)據(jù) 條塊以及校驗(yàn)數(shù)據(jù),這種情況下,就需要RAID控制器中的CPU根據(jù)實(shí)際 操作反復(fù)通過(guò)控制線控制對(duì)應(yīng)控制器中的切換單元進(jìn)行切換即可。
當(dāng)數(shù)據(jù)條塊D1改變?yōu)镈l,時(shí),需要重新計(jì)算條帶0的校驗(yàn)數(shù)據(jù)El,
步驟1,參見(jiàn)圖lla, RAID控制器中的CPU請(qǐng)求存儲(chǔ)器1中的控制單 元通過(guò)讀總線讀取存儲(chǔ)器1中存儲(chǔ)空間內(nèi)的數(shù)據(jù)條塊D1;
步驟2,參見(jiàn)圖llb,存儲(chǔ)器1中的控制單元直接通過(guò)寫總線與存儲(chǔ)空 間連通,因而RAID控制器中的CPU請(qǐng)求存儲(chǔ)器1中的控制單元直接通過(guò) 寫總線將改變后的數(shù)據(jù)條塊D1,寫入至存儲(chǔ)器1中的存儲(chǔ)空間內(nèi),實(shí)現(xiàn)數(shù)據(jù) 條塊的更新;
步驟3,參見(jiàn)圖llc,由于數(shù)據(jù)條塊D1改變?yōu)镈l',因而需要重新計(jì)算 校驗(yàn)數(shù)據(jù)El,在圖llc中,存儲(chǔ)器3中的控制單元通過(guò)串連有RAID算法 單元的寫總線與存儲(chǔ)空間連通,RAID控制器中的CPU請(qǐng)求存儲(chǔ)器3中的控 制單元,將改變后的數(shù)據(jù)條塊D1,寫入至存儲(chǔ)器3中的RAID算法單元,并 由存儲(chǔ)器3中的RAID算法單元從存儲(chǔ)器3的存儲(chǔ)空間中讀取校驗(yàn)數(shù)據(jù)El, 然后再由存儲(chǔ)器3中的RAID算法單元計(jì)算得到El,= Dl, XorEl后,寫回 至存儲(chǔ)器3的存儲(chǔ)空間中;
步驟4,參見(jiàn)圖lld, RAID控制器中的CPU請(qǐng)求存儲(chǔ)器3中的控制單 元,將改變前的數(shù)據(jù)條塊D1寫入至存儲(chǔ)器3中的RAID算法單元,并由存 儲(chǔ)器3中的RAID算法單元從存儲(chǔ)器3中的存儲(chǔ)空間內(nèi)讀取剛剛計(jì)算得到的校驗(yàn)數(shù)據(jù)El,,然后再由存儲(chǔ)器3中的RAID算法單元計(jì)算得到El"= Dl Xor E1,=D1 XorDl, XorEl后,寫回至存儲(chǔ)器3中的存儲(chǔ)空間內(nèi),實(shí)現(xiàn)校驗(yàn)數(shù) 據(jù)的更新。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的數(shù)據(jù)更改,RAID控制 器中的CPU只需要執(zhí)行1次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少 了 1次計(jì)算、以及1次讀寫間的切換,從而減少了 RAID控制器中占用的 CPU資源,進(jìn)而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。
基于上述包含有可進(jìn)行RAID計(jì)算的存儲(chǔ)器的RAID存儲(chǔ)系統(tǒng),本實(shí)施 例還提供了一種RAID存儲(chǔ)系統(tǒng)中的控制方法,該控制方法可以由RAID控 制器中的CPU來(lái)執(zhí)行、或由RAID存儲(chǔ)系統(tǒng)中可對(duì)存儲(chǔ)器執(zhí)行讀寫操作的 任意硬件設(shè)備來(lái)執(zhí)行。
具體說(shuō),以RAID控制器中的CPU來(lái)執(zhí)行該RAID存儲(chǔ)系統(tǒng)中的控制 方法為例,該控制方法首先在每一存儲(chǔ)器中設(shè)置一RAID算法單元、以及一 切換單元,其中,切換單元的輸入通過(guò)寫總線與控制單元連通、 一路輸出通 過(guò)寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)串連有RAID算法單元的寫總線 與存儲(chǔ)空間連通、控制端則通過(guò)一控制線與RAID控制器中的CPU連通。 此外,該RAID存儲(chǔ)系統(tǒng)中的控制方法還包括如下步驟
針對(duì)需要改變的數(shù)據(jù)條塊、即對(duì)于存儲(chǔ)空間內(nèi)存有需改變數(shù)據(jù)條塊的存 儲(chǔ)器,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中的切換單元、 使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,然后請(qǐng)求對(duì)應(yīng)存 儲(chǔ)器中的控制單元通過(guò)讀總線從存儲(chǔ)空間中讀取原始的該數(shù)據(jù)條塊、再請(qǐng)求 該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ)空間,以 實(shí)現(xiàn)對(duì)數(shù)據(jù)條塊的更新;
針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新、即對(duì)于存儲(chǔ)空間內(nèi)存有需更新 校驗(yàn)數(shù)據(jù)的存儲(chǔ)器,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中 的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線 與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變前和改變后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供RAID算法單元從存儲(chǔ)空間讀 取校驗(yàn)數(shù)據(jù)、與改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊一起重新計(jì)算得到變化后的 校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間,以實(shí)現(xiàn)對(duì)校驗(yàn)數(shù)據(jù)的更新。
參見(jiàn)圖12,以一完整的處理流程為例,本實(shí)施例中RAID存儲(chǔ)系統(tǒng)的 控制方法包括
步驟1201, RAID控制器中的CPU請(qǐng)求對(duì)應(yīng)存儲(chǔ)器中的控制單元通過(guò) 讀總線從存儲(chǔ)空間中讀取需改變的原始數(shù)據(jù)條塊;
步驟1202, RAID控制器中的CPU控制該存儲(chǔ)器中的切換單元、使該 存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的 控制單元通過(guò)寫總線將數(shù)據(jù)條塊寫入至存儲(chǔ)空間;
步驟1203,由于步驟1201讀取的數(shù)據(jù)條塊已在步驟1202發(fā)生改變, 因而需要重新計(jì)算對(duì)應(yīng)的校驗(yàn)數(shù)據(jù),RAID控制器中的CPU控制對(duì)應(yīng)校驗(yàn)數(shù) 據(jù)所在存儲(chǔ)器中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算 法單元的寫總線與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元將步驟1202 改變后的數(shù)據(jù)條塊、以及步驟1201中讀取的原始數(shù)據(jù)條塊寫入至該存儲(chǔ)器 中的RAID算法單元,以供RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù)、與改 變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊一起計(jì)算得到變化后的校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ) 空間。
至此,本流程結(jié)束。
由上述過(guò)程可見(jiàn),為了完成RAID存儲(chǔ)系統(tǒng)中的^t據(jù)更改,RAID控制 器中的CPU只需要執(zhí)行1次讀、3次寫共4個(gè)步驟,相比于現(xiàn)有技術(shù),減少 了 1次計(jì)算、以及1次讀寫間的切換,從而減少了 RAID控制器中占用的 CPU資源,進(jìn)而能夠提高RAID存儲(chǔ)系統(tǒng)的性能。
相應(yīng)地,針對(duì)如前所述的可進(jìn)行RAID計(jì)算的存儲(chǔ)器,本實(shí)施例還提供 了一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器的片內(nèi)控制方法,該片內(nèi)控制方法可以由 存儲(chǔ)器中承載于片內(nèi)控制器的控制單元、切換單元、以及RAID算法單元協(xié) 同執(zhí)行。具體說(shuō),以存儲(chǔ)器中承載于片內(nèi)控制器的控制單元來(lái)執(zhí)行該片內(nèi)控制方
法為例,該片內(nèi)控制方法首先在存儲(chǔ)器中設(shè)置一RAID算法單元、以及一切 換單元,其中,切換單元的輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò) 寫總線與存儲(chǔ)空間連通、另一路輸出通過(guò)串連有RAID算法單元的寫總線與 存儲(chǔ)空間連通、控制端則通過(guò)一控制線與外部RAID控制器中的CPU、或其 他可對(duì)該存儲(chǔ)器進(jìn)行讀寫的硬件設(shè)備連通。此外,該片內(nèi)控制方法還包括如 下步驟
該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單元根據(jù) 外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存 儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀取原 始的該數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入 至存儲(chǔ)空間,以實(shí)現(xiàn)對(duì)數(shù)據(jù)條塊的更新;
該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而 需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使該 存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通, 且控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊 寫入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù)、與改 變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊一起重新計(jì)算得到變化后的校驗(yàn)數(shù)據(jù)并寫回 存儲(chǔ)空間,以實(shí)現(xiàn)對(duì)校驗(yàn)數(shù)據(jù)的更新。
參見(jiàn)圖13,以一完整的處理流程為例,本實(shí)施例中可進(jìn)行RAID計(jì)算 的存儲(chǔ)器的片內(nèi)控制方法包括
步驟1301,控制單元根據(jù)外部的讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀 取需改變的原始數(shù)據(jù)條塊;
步驟1302,切換單元根據(jù)外部控制信號(hào)進(jìn)行切換,使該存儲(chǔ)器中的控 制單元通過(guò)寫總線直接與存儲(chǔ)空間連通;
步驟1303,控制單元根據(jù)外部的寫請(qǐng)求,通過(guò)寫 線將改變的該數(shù)據(jù) 條塊寫入至存儲(chǔ)空間;步驟1304,當(dāng)存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的其他存儲(chǔ)器中存儲(chǔ)的 數(shù)據(jù)條塊發(fā)生變化,則需要重新計(jì)算存儲(chǔ)空間內(nèi)存儲(chǔ)的該校驗(yàn)數(shù)據(jù),切換單 元根據(jù)外部控制信號(hào)進(jìn)行切換、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID 算法單元的寫總線與存儲(chǔ)空間連通;
步驟1305,控制單元根據(jù)外部的讀請(qǐng)求,將其他存儲(chǔ)器中存儲(chǔ)的改變 前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊寫入至該存儲(chǔ)器中的RAID算法單元;
步驟1306, RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù)、與控制單元寫入 的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊一起計(jì)算得到變化后的校驗(yàn)數(shù)據(jù),然后寫 回存儲(chǔ)空間。
至此,本流程結(jié)束。
以上三個(gè)實(shí)施例中,列舉了硬RAID、軟RAID、以及存儲(chǔ)器內(nèi)部或外 部增加RAID計(jì)算功能的各種方案。實(shí)際應(yīng)用中,還有可能存在其他軟硬件 環(huán)境,那么無(wú)論針對(duì)何種軟硬件環(huán)境,均會(huì)存在一CPU和若干存儲(chǔ)空間。
這樣,本發(fā)明還提供了一種可通用于各種軟硬件環(huán)境的RAID存儲(chǔ)系 統(tǒng),包括CPU和若干存儲(chǔ)空間、且每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID 算法功能單元(既可以是硬件實(shí)現(xiàn)、也可以是軟件實(shí)現(xiàn),且既可以位于存儲(chǔ) 器內(nèi)、也可以位于存儲(chǔ)器外部)與CPU連通,其中,
存儲(chǔ)空間內(nèi)改變的數(shù)據(jù)條塊,由CPU通過(guò)對(duì)應(yīng)RAID算法功能單元的 透?jìng)飨茸x取再寫入;
存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而被更新的奇偶校驗(yàn)數(shù)據(jù),由該存 儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根據(jù)CPU寫入該RAID算法功能單元的 改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇偶校驗(yàn) 數(shù)據(jù)計(jì)算得到。
此外,本發(fā)明還提供了一種可通用于各種軟硬件環(huán)境的RAID存儲(chǔ)系統(tǒng) 控制方法,該方法可由RAID存儲(chǔ)系統(tǒng)中的CPU(可以是任意硬件設(shè)備中的 CPU)來(lái)執(zhí)行,該方法首先為每一存儲(chǔ)空間設(shè)置一對(duì)應(yīng)的RAID算法功能單 元(既可以是硬件實(shí)現(xiàn)、也可以是軟件實(shí)現(xiàn),且既可以位于存儲(chǔ)器內(nèi)、也可以位于存儲(chǔ)器外部),且該控制方法包括如下步驟
通過(guò)對(duì)應(yīng)RAID算法功能單元的透?jìng)飨茸x取再寫入,改變存儲(chǔ)空間內(nèi)的 數(shù)據(jù)條塊;
由對(duì)應(yīng)存儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根據(jù)寫入該RAID算法功能 單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇 偶校驗(yàn)數(shù)據(jù),更新存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而的奇偶校驗(yàn)數(shù)據(jù)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng),包括RAID控制器和若干存儲(chǔ)器;其特征在于,每一存儲(chǔ)器分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與RAID控制器中的CPU連通;針對(duì)需要改變的數(shù)據(jù)條塊,RAID控制器中的CPU通過(guò)對(duì)應(yīng)RAID算法功能部件的透?jìng)鲝膶?duì)應(yīng)存儲(chǔ)器讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU將所述讀取的該數(shù)據(jù)條塊、所述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)器內(nèi)讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù),并利用RAID控制器中的CPU寫入的該數(shù)據(jù)條塊、所述改變的該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回至對(duì)應(yīng)存儲(chǔ)器內(nèi)。
2、 如權(quán)利要求1所述的RAID存儲(chǔ)系統(tǒng),其特征在于,所述RAID為 RAID 5或RAID6,所述RAID算法功能部件為可執(zhí)行異或運(yùn)算的邏輯器件。
3、 一種^茲盤冗余陣列RAID存儲(chǔ)系統(tǒng)中的控制方法,其特征在于,設(shè) 置每一存儲(chǔ)器分別對(duì)應(yīng)連通一個(gè)RAID算法功能部件,并包括如下步驟針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)RAID算法功能部件的透?jìng)鲝膶?duì)應(yīng) 存儲(chǔ)器讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,將所述讀取的該數(shù)據(jù)條塊、所 述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器所對(duì)應(yīng)的RAID 算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)器內(nèi)讀取所述對(duì)應(yīng)校 驗(yàn)數(shù)據(jù),并利用寫入該RAID算法功能部件的該數(shù)據(jù)條塊、所述改變的該數(shù) 據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫 回至對(duì)應(yīng)存儲(chǔ)器內(nèi)。
4、 如權(quán)利要求3所述的控制方法,其特征在于,所述RAID為RAID5 或RAID6,所述計(jì)算為異或運(yùn)算。
5、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng),包括系統(tǒng)CPU和存儲(chǔ)器,所述 存儲(chǔ)器中劃分有若干存儲(chǔ)空間;其特征在于,每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能部件與系 統(tǒng)CPU連通;針對(duì)需要改變的數(shù)據(jù)條塊,系統(tǒng)CPU通過(guò)對(duì)應(yīng)RAID算法功能部件的 透?jìng)鲝拇鎯?chǔ)空間讀取該數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,系統(tǒng)CPU將所述讀取的該數(shù) 據(jù)條塊、所述改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)空間所 對(duì)應(yīng)的RAID算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)空間內(nèi) 讀取所述對(duì)應(yīng)校驗(yàn)數(shù)據(jù),并利用系統(tǒng)CPU寫入的該數(shù)據(jù)條塊、所述改變的 該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù) 據(jù)寫回至對(duì)應(yīng)存儲(chǔ)空間。
6、 如權(quán)利要求5所述的RAID存儲(chǔ)系統(tǒng),其特征在于,所述RAID為 RAID 5或RAID6,所述RAID算法功能部件為可執(zhí)行異或運(yùn)算的邏輯器件。
7、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng)中的控制方法,其特征在于,設(shè) 置存儲(chǔ)器中的每一存儲(chǔ)空間分別對(duì)應(yīng)連通一個(gè)RAID算法功能部件,與系統(tǒng) CPU連通,并包括如下步驟針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)RAID算法功能部件的透?jìng)?,從?儲(chǔ)空間讀取數(shù)據(jù)條塊、并寫回改變的該數(shù)據(jù)條塊;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,將所述讀取的數(shù)據(jù)條塊、所述 改變的該數(shù)據(jù)條塊,依次寫入至對(duì)應(yīng)校驗(yàn)數(shù)據(jù)所在存儲(chǔ)空間所對(duì)應(yīng)的RAID 算法功能部件中,由該RAID算法功能部件從對(duì)應(yīng)存儲(chǔ)空間內(nèi)讀取所述對(duì)應(yīng) 校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法功能部件的所述數(shù)據(jù)條塊、所述改變的 該數(shù)據(jù)條塊、以及該RAID算法功能部件讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù) 據(jù)寫回至對(duì)應(yīng)存儲(chǔ)空間內(nèi)。
8、 如權(quán)利要求7所述的控制方法,其特征在于,所述RAID為RAID 5 或RAID6,所述計(jì)算為異或運(yùn)算。
9、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng),包括RAID控制器和若干存儲(chǔ) 器,每一存儲(chǔ)器中又包括存儲(chǔ)空間,以及與RAID控制器中的CPU連通、 并通過(guò)讀寫總線與存儲(chǔ)空間連通的控制單元;其特征在于,每一存儲(chǔ)器還包括RAID算法單元、以及切換單元;其中, 切換單元的輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空 間連通、另一路輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、 控制端則通過(guò)一控制線與RAID控制器中的CPU連通;針對(duì)需要改變的數(shù)據(jù)條塊,RAID控制器中的CPU通過(guò)對(duì)應(yīng)控制線控制 該存儲(chǔ)器中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空 間連通,然后請(qǐng)求對(duì)應(yīng)存儲(chǔ)器中的控制單元通過(guò)讀總線乂人存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊、再請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫 入至存儲(chǔ)空間;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,RAID控制器中的CPU通過(guò)對(duì) 應(yīng)控制線控制該存儲(chǔ)器中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有 RAID算法單元的寫總線與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通 過(guò)寫總線將改變前和改變后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供 RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法單元的 改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及該RAID算法單元讀取的4交驗(yàn)數(shù)據(jù), 重新計(jì)算校驗(yàn)數(shù)據(jù)并寫回存儲(chǔ)空間。
10、 如權(quán)利要求9所述的RAID存儲(chǔ)系統(tǒng),其特征在于,所述RAID為 RAID 5或RAID6,所述RAID計(jì)算單元為可執(zhí)行異或運(yùn)算的邏輯單元。
11、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng)中的控制方法,其特征在于,在 每一存儲(chǔ)器中設(shè)置一RAID算法單元、以及一切換單元,其中,切換單元的 輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另 一路輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則連 接一控制線;該控制方法還包括如下步驟針對(duì)需要改變的數(shù)據(jù)條塊,通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器中的切換單 元、使該存儲(chǔ)器中的控制單元通過(guò)寫總線直接與存儲(chǔ)空間連通,然后請(qǐng)求對(duì) 應(yīng)存儲(chǔ)器中的控制單元通過(guò)讀總線從存儲(chǔ)空間中讀取該數(shù)據(jù)條塊、再請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ)空間;針對(duì)該數(shù)據(jù)條塊改變后的校驗(yàn)數(shù)據(jù)更新,通過(guò)對(duì)應(yīng)控制線控制該存儲(chǔ)器 中的切換單元、使該存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總 線與存儲(chǔ)空間連通,并請(qǐng)求該存儲(chǔ)器中的控制單元通過(guò)寫總線將改變前和改 變后的該數(shù)據(jù)條塊寫入至RAID算法單元,以供RAID算法單元乂人存儲(chǔ)空間 讀取校驗(yàn)數(shù)據(jù),并利用寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù) 條塊、以及該RAID算法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)并寫回存 儲(chǔ)空間。
12、 如權(quán)利要求11所述的控制方法,其特征在于,所述RAID為RAID 5或RAID6,所述計(jì)算為異或運(yùn)算。
13、 一種可進(jìn)行-磁盤冗余陣列RAID計(jì)算的存儲(chǔ)器,包括存儲(chǔ)空間, 以及通過(guò)讀寫總線與存儲(chǔ)空間連通的控制單元;其特征在于,包括RAID算法單元、以及切換單元;其中,切換單元的 輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連通、另 一路輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制端則通 過(guò)一控制線與外部連通;該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單元根據(jù) 外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存 儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ) 空間;該存儲(chǔ)器在其存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而 需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使該 存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通;控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊寫入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用 寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及該RAID算 法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回存儲(chǔ)空間。
14、 如權(quán)利要求13所述的存儲(chǔ)器,其特征在于,所述RAID為RAID5 或RAID6,所述RAID計(jì)算單元為可執(zhí)行異或運(yùn)算的邏輯單元。
15、 一種可進(jìn)行磁盤冗余陣列計(jì)算的存儲(chǔ)器的片內(nèi)控制方法,其特征在 于,在每一存儲(chǔ)器中設(shè)置一RAID算法單元、以及一切換單元,其中,切換 單元的輸入通過(guò)寫總線與控制單元連通、 一路輸出通過(guò)寫總線與存儲(chǔ)空間連 通、另一路輸出通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通、控制 端則通過(guò)一控制線與外部連通;該控制方法還包括如下步驟在該存儲(chǔ)器的存儲(chǔ)空間內(nèi)存儲(chǔ)的數(shù)據(jù)條塊需要被改變時(shí),切換單元根據(jù) 外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使控制單元通過(guò)寫總線直接與存 儲(chǔ)空間連通;控制單元先根據(jù)外部讀請(qǐng)求,通過(guò)讀總線從存儲(chǔ)空間中讀取該 數(shù)據(jù)條塊,再根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變的該數(shù)據(jù)條塊寫入至存儲(chǔ) 空間;在該存儲(chǔ)器的存儲(chǔ)空間內(nèi)存儲(chǔ)的校驗(yàn)數(shù)據(jù)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而 需要更新時(shí),切換單元根據(jù)外部通過(guò)控制線發(fā)送的控制信號(hào)進(jìn)行切換、使該 存儲(chǔ)器中的控制單元通過(guò)串連有RAID算法單元的寫總線與存儲(chǔ)空間連通; 控制單元根據(jù)外部寫請(qǐng)求,通過(guò)寫總線將改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊寫 入至RAID算法單元,由RAID算法單元從存儲(chǔ)空間讀取校驗(yàn)數(shù)據(jù),并利用 寫入該RAID算法單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及該RAID算 法單元讀取的校驗(yàn)數(shù)據(jù),重新計(jì)算校驗(yàn)數(shù)據(jù)寫回存儲(chǔ)空間。
16、 如權(quán)利要求15所述的控制方法,其特征在于,所述RAID為RAID 5或RAID6,所述計(jì)算為異或運(yùn)算。
17、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng),包括CPU和若干存儲(chǔ)空間,其特征在于,每一存儲(chǔ)空間分別通過(guò)一對(duì)應(yīng)的RAID算法功能單元與CPU 連通;存儲(chǔ)空間內(nèi)改變的數(shù)據(jù)條塊,由CPU通過(guò)對(duì)應(yīng)RAID算法功能單元的 透?jìng)飨茸x取再寫入;存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而被更新的奇偶校驗(yàn)數(shù)據(jù),由該存 儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根據(jù)CPU寫入該RAID算法功能單元的 改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇偶校驗(yàn) 數(shù)據(jù)計(jì)算得到。
18、 如權(quán)利要求17所述的RAID存儲(chǔ)單元,其特征在于,所述RAID 為RAID5或RAID6,所述RAID算法功能單元為可執(zhí)行異或運(yùn)算的邏輯器 件或功能單元。
19、 一種磁盤冗余陣列RAID存儲(chǔ)系統(tǒng)的控制方法,其特征在于,為每 一存儲(chǔ)空間設(shè)置一對(duì)應(yīng)的RAID算法功能單元,且該控制方法包括如下步驟通過(guò)對(duì)應(yīng)RAID算法功能單元的透?jìng)飨茸x取再寫入,改變存儲(chǔ)空間內(nèi)的 數(shù)據(jù)條塊;由對(duì)應(yīng)存儲(chǔ)空間對(duì)應(yīng)的RAID算法功能單元根據(jù)寫入該RAID算法功能 單元的改變前和改變后的對(duì)應(yīng)數(shù)據(jù)條塊、以及從存儲(chǔ)空內(nèi)讀取的更新前的奇 偶校驗(yàn)數(shù)據(jù),更新存儲(chǔ)空間內(nèi)由于對(duì)應(yīng)數(shù)據(jù)條塊的改變而的奇偶校驗(yàn)數(shù)據(jù)。
20、 如權(quán)利要求19所述的控制方法,其特征在于,所述RAID為RAID 5或RAID6,所述計(jì)算為異或運(yùn)算。
全文摘要
本發(fā)明公開(kāi)了一種磁盤冗余陣列(RAID)存儲(chǔ)系統(tǒng)及該系統(tǒng)的控制方法、以及一種可進(jìn)行RAID計(jì)算的存儲(chǔ)器及該存儲(chǔ)器的片內(nèi)控制方法。本發(fā)明為每個(gè)存儲(chǔ)器配備一RAID算法功能部件、或在每個(gè)存儲(chǔ)器內(nèi)增設(shè)可執(zhí)行RAID算法的邏輯單元,并由RAID控制器或系統(tǒng)CPU,將RAID算法計(jì)算所需數(shù)據(jù)條塊調(diào)度至待更新校驗(yàn)數(shù)據(jù)所在存儲(chǔ)器處,即可由該存儲(chǔ)器配備的RAID算法功能部件、或該存儲(chǔ)器內(nèi)增設(shè)的可執(zhí)行RAID算法的邏輯單元實(shí)現(xiàn)RAID算法計(jì)算。如此一來(lái),RAID控制器、系統(tǒng)CPU均不需要執(zhí)行RAID算法計(jì)算,而僅僅負(fù)責(zé)讀寫操作即可,從而能夠節(jié)省RAID存儲(chǔ)系統(tǒng)中的CPU資源,進(jìn)而提高RAID存儲(chǔ)系統(tǒng)的性能。
文檔編號(hào)G06F3/06GK101615105SQ20091009036
公開(kāi)日2009年12月30日 申請(qǐng)日期2009年8月6日 優(yōu)先權(quán)日2009年8月6日
發(fā)明者劉介良, 珊 呂, 輝 安, 俊 張, 盛啟龍, 賴守鋒 申請(qǐng)人:杭州華三通信技術(shù)有限公司