專利名稱:一種數(shù)據(jù)的存儲方法和存儲裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)的存儲方法和存儲裝置。
背景技術(shù):
在數(shù)據(jù)的存儲系統(tǒng)運行中,存儲系統(tǒng)的可靠性是非常重要的,因為數(shù)據(jù)的
丟失所造成的損失是難以挽回的?,F(xiàn)階段,存儲系統(tǒng)中緩存(Cache)模塊在
表現(xiàn)在 一是在用戶寫操作時,當(dāng)用戶的寫數(shù)據(jù)寫入Cache模塊中時,系統(tǒng)就會響應(yīng)寫操作完成,用戶執(zhí)行下一個想要執(zhí)行的操作,此時,在存儲系統(tǒng)內(nèi)部,Cache模塊中用戶的寫數(shù)據(jù)每隔一段時間被集中寫入存儲介質(zhì)(存儲介質(zhì)通常是磁盤、硬盤)。二是在用戶讀操作時,由于Cache模塊中存放了讀取頻率較高的數(shù)據(jù),因此,用戶的讀取數(shù)據(jù)的請求可以不需要訪問存儲介質(zhì),而直接從Cache模塊中讀取,解決了物理磁盤讀取速度慢的問題。為了防止Cgche模塊中存儲的需要寫入存儲介質(zhì)中的數(shù)據(jù)丟失,需要對Cache模塊中存儲的需要寫入存儲介質(zhì)中的數(shù)據(jù)備份,將存儲在Cache模塊中且還沒有存儲到存儲介質(zhì)中的數(shù)據(jù)(即臟數(shù)據(jù)Dirty Data)進(jìn)行備份,防止在將臟數(shù)據(jù)存儲到磁盤時,發(fā)生數(shù)據(jù)丟失,而導(dǎo)致數(shù)據(jù)的永久丟失。
為了易于理解現(xiàn)有技術(shù)中對Cache才莫塊中的臟數(shù)據(jù)備份的方法,首先對存儲系統(tǒng)中的邏輯架構(gòu)做說明,參見圖l所示,為一種可以實現(xiàn)Cache模塊中的臟數(shù)據(jù)備份的存儲系統(tǒng)邏輯架構(gòu),該存儲系統(tǒng)中包含有控制器A和控制器B,每個控制器的結(jié)構(gòu)相同,都包括控制模塊、用戶接口模塊、Cache模塊和磁盤接口模塊,用戶要寫入的數(shù)據(jù)通過用戶接口模塊寫入Cache模塊,成為了臟數(shù)據(jù),臟數(shù)據(jù)通過磁盤接口模塊寫入到磁盤中,以上所說的過程通過控制模塊來控制??刂破鰽中Cache模塊中的臟數(shù)據(jù)通過鏡像通道,備份到控制器B中的Cache模塊中,同理,控制器B中Cache模塊中的臟數(shù)據(jù)也可以通過鏡像通道,^f分到控制器A中的Cache模塊中。為了便于以下的說明,需要理解的Cache模塊在物理實現(xiàn)上為Cache板,即Cache模塊與Cache板是相同,全文都有這樣的理解。
現(xiàn)有高端的存儲設(shè)備中,通常有多個控制器,每個存儲器的結(jié)構(gòu)與控制器
A相似,控制器中Cache模塊的臟數(shù)據(jù)通過循環(huán)鏡像方法來實現(xiàn)備份。參見圖2所示,圖中的箭頭表示數(shù)據(jù)備份或者鏡像的存儲地址,前一個Cache板中的臟數(shù)據(jù)鏡像到后面一個Cache板中,最后一個Cache板中的臟數(shù)據(jù)鏡像到第一個Cache板中。多于兩個控制器的存儲設(shè)備中的各控制器根據(jù)該循環(huán)鏡像關(guān)系,執(zhí)行對臟數(shù)據(jù)的備份。當(dāng)多個Cache板中有一個損壞,假設(shè)為圖2中Cache板2,該Cache板2中的數(shù)據(jù)被及時的存儲到存儲介質(zhì)中,在沒有新的Cache板替換該損壞的Cache板2時,需要構(gòu)建Cache板1和Cache板3之間的鏡像關(guān)系,即將Cache板l中的寫數(shù)據(jù)存儲到Cache板3中;當(dāng)有新的Cache板替換損壞的Cache板2時,需要構(gòu)建Cache板1和新Cache板、新Cache板和Cache板3這兩個鏡像關(guān)系,即將Cache板1中的寫數(shù)據(jù)鏡像到新Cache板中,配置將新Cache板接收到的寫數(shù)據(jù)鏡像到Cache板3中的信息。
在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),這種具有多個控制器的存儲設(shè)備中,如果其中某個控制器中的Cache板損壞了,在用好的Cache板替換損壞的Cache板之前和之后,都需要重新構(gòu)建各Cache板之間的鏡像關(guān)系,不利于提高存儲設(shè)備的工作效率。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種數(shù)據(jù)的存儲方法和存儲裝置,打破各Cache板之間固定的鏡像關(guān)系,實現(xiàn)提高存儲設(shè)備工作效率的目的。本發(fā)明實施例提供一種數(shù)據(jù)的存儲方法,包括
根據(jù)接收到的寫請求,獲取不在同一個緩存板上的至少兩個空白內(nèi)存塊,每個緩存板包括多于1個的空白內(nèi)存塊;
將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);
將所述至少兩個空白內(nèi)存塊中的其中 一個內(nèi)存塊中的數(shù)據(jù)發(fā)送給存儲介質(zhì)。
本發(fā)明實施例還提供一種數(shù)據(jù)的存儲裝置,包括
5存儲單元,包括多于至少兩個的緩存板,每個緩存板包括多于l個的內(nèi)存
塊;
接收單元,用于接收寫請求;
獲取單元,用于根據(jù)接收到的寫請求,獲取不在同一個緩存板上的至少兩 個空白內(nèi)存塊,將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述至少兩 個內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);
第一發(fā)送單元,用于將所述至少兩個內(nèi)存塊中的其中一個內(nèi)存塊中的數(shù)據(jù) 發(fā)送給存儲介質(zhì)。
本發(fā)明實施例采用存儲裝置將數(shù)據(jù)分別寫入不屬于同一Cache板的至少兩 個空白內(nèi)存塊中,由于每次寫入數(shù)據(jù)之前獲取的空白內(nèi)存塊是從各個Cache板 組成的可以使用的存儲空間中的內(nèi)存塊,不是固定屬于某個Cache板,當(dāng)有 Cache板損壞不能使用時,不需要重新構(gòu)建各個Cache板之間的鏡像關(guān)系,而是 在接收到寫請求之后,才需要獲取不在同 一個緩存Cache板上的至少兩個空白 內(nèi)存塊,將數(shù)據(jù)存儲到所述獲取的至少兩個內(nèi)存塊中,從而提高了存儲設(shè)備的 工作效率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案;下面將對實施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述 中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付 出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖l是現(xiàn)有技術(shù)中具有兩個控制器的存儲裝置實現(xiàn)鏡像的簡易邏輯架構(gòu); 圖2是現(xiàn)有技術(shù)中具有多于兩個控制器的存儲裝置中數(shù)據(jù)備份的簡易邏輯
圖3是本發(fā)明實施例一提供的一種數(shù)據(jù)的存儲方法的簡易流程圖; 圖4是本發(fā)明實施例一中表示內(nèi)存塊之間鏡像關(guān)系的示意簡圖; 圖5是本發(fā)明實施例二提供的一種數(shù)據(jù)的存儲方法的簡易流程圖; 圖6是本發(fā)明實施例三提供的一種存儲裝置的邏輯單元圖; 圖7是本發(fā)明實施例四提供的一種存儲裝置的模塊圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清 楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是 全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造 性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
本發(fā)明實施例提供了一種數(shù)據(jù)的存儲方法,參見圖3所示,該方法包括 步驟l:接收寫請求;
其中,步驟l中存儲裝置接收到的寫請求可以是由主機直接發(fā)送的,也可 以是主機通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)到該存儲裝置的。
步驟2:根據(jù)接收到的寫請求,獲取不在同一個緩存Cache板上的至少兩個 空白的內(nèi)存塊,每個Cache板包括多于l個的內(nèi)存塊;
其中,步驟2中的Cache板與Cache;f莫塊可以認(rèn)為是相同的,多個Cache模塊 在物理實現(xiàn)上可以是多個Cache板,每個Cache板上的存儲空間又可以劃分為多 個內(nèi)存塊。如圖4所示,可以認(rèn)為每個Cache板分為三部分,包括讀空間、寫 空間和鏡像空間,其中,鏡像空間用于存儲的數(shù)據(jù)是其他Cache板中的寫凄t據(jù) 的備份。如圖4所示,假設(shè)該存儲設(shè)備中包括4個Cache板,該存儲設(shè)備中的各 Cache板不是固定的如現(xiàn)有技術(shù)中的鏡像關(guān)系,而是將Cache板中的存儲控制劃 分為更小的內(nèi)存塊,按照內(nèi)存塊之間的鏡像,達(dá)到備份數(shù)據(jù)的目的。圖4中的 箭頭表示兩內(nèi)存塊的鏡像關(guān)系。
在本發(fā)明實施例中Cache板被劃分為多于1個的內(nèi)存塊,不同于現(xiàn)有4支術(shù)中 存儲數(shù)據(jù)的內(nèi)存資源是以Cache板為單位,在本實施例中存儲數(shù)據(jù)的內(nèi)存資源 是以更小的內(nèi)存塊為單位,因此,不需要專門設(shè)置各Cache板之間的鏡像關(guān)系, 而是,在需要存儲數(shù)據(jù)時,獲取至少兩個空白內(nèi)存塊,建立內(nèi)存塊之間的鏡像 關(guān)系。Cache板被劃分的內(nèi)存塊越多,可用的內(nèi)存資源越豐富。
還需要說明的是,獲取不在同 一個Cache板上的至少兩個空白的內(nèi)存塊可 以是在隨機的、哈希(HASH)算法或者按照Cache板的負(fù)荷狀況的其中任一 種方法,選擇不是同一個Cache板上的內(nèi)存塊。步驟3:將數(shù)據(jù)存儲到獲取的至少兩個空白內(nèi)存塊,使得內(nèi)存塊中每塊存 儲的數(shù)據(jù)相同;
其中,步驟3中主機發(fā)送的、或者網(wǎng)絡(luò)中傳輸設(shè)備發(fā)送的數(shù)據(jù)要通過存儲 裝置中的用戶接口,使得主機發(fā)送的數(shù)據(jù)被存儲到獲取的內(nèi)存塊中。兩個或者 兩個以上的內(nèi)存塊中被寫入的數(shù)據(jù)是相同的,兩個或者兩個以上的內(nèi)存塊中的 數(shù)據(jù)互為鏡像(或者互為備份)。
步驟4:將執(zhí)行完成步驟3后的至少兩個內(nèi)存塊中其中 一個內(nèi)存塊中的數(shù)據(jù) 發(fā)送給存儲介質(zhì)。
通過步驟4,將緩存板中的數(shù)據(jù)存儲到存儲介質(zhì)(如磁盤)中,實現(xiàn)了對 數(shù)據(jù)的可靠存儲。
通過以上對本發(fā)明實施例提供的一種數(shù)據(jù)的存儲方法的說明,存儲裝置將 主機發(fā)送的數(shù)據(jù)分別寫入不屬于同一Cache板的兩個或者兩個以上內(nèi)存塊中, 由于每次寫入數(shù)據(jù)之前獲取的空白內(nèi)存塊是從各個Cache板組成的可以使用的 存儲空間中的內(nèi)存塊,不是固定屬于某個Cache板,當(dāng)有Cache板損壞不能使用 時,不需要重新構(gòu)建各個Cache板之間的鏡像關(guān)系,而是在接收到主機發(fā)送的 寫請求之后,才需要獲取不在同 一個緩存Cache板上的兩個或者兩個以上空白 內(nèi)存塊,將主機發(fā)送的數(shù)據(jù)存儲到所述獲取的兩個或者兩個以上內(nèi)存塊中,從 而提高了存儲設(shè)備的工作效率。
需要說明的是,該方法還可以包括
步驟5:保存獲取的至少兩個空白內(nèi)存塊之間的4封象關(guān)系;
需要說明的是,步驟2中獲取的至少兩個空白內(nèi)存塊是用來為存儲相同的 數(shù)據(jù),即對數(shù)據(jù)^f分,因此,不同與現(xiàn)有技術(shù)中存儲器中約定的鏡像關(guān)系,在 步驟4中需要建立兩個或者兩個以上內(nèi)存塊的鏡像關(guān)系,保證一個內(nèi)存塊在將 數(shù)據(jù)寫入存儲介質(zhì)(例如磁盤)發(fā)送錯誤時,根據(jù)該鏡像關(guān)系可以獲取到備 份數(shù)據(jù),再將備份數(shù)據(jù)寫入存儲介質(zhì),避免數(shù)據(jù)丟失。
建立鏡像關(guān)系可以是建立兩個或者兩個以上內(nèi)存塊之間的對應(yīng)關(guān)系,當(dāng)獲 知到其中 一個內(nèi)存塊的地址或者標(biāo)識,就可以獲知與其#^象的內(nèi)存塊的地址。
通過以上對該方法增加步驟5,使得存儲設(shè)備在寫操作錯誤時,可以容易
8免數(shù)據(jù)丟失。 實施例二
本發(fā)明實施例提供了一種數(shù)據(jù)的存儲方法,該方法與實施例一相似,都可
以實現(xiàn)當(dāng)存儲裝置中有Cache板損壞時,替換后Cache板被作為內(nèi)存塊資源,而 不需要立即構(gòu)建新Cache板的鏡像關(guān)系。本實施例是實施例一的具體說明,下 面對該實施例啦文i兌明。
結(jié)合圖5對本實施例做說明,該方法包括
步驟A1:接收主機發(fā)送的寫請求;
步驟A1中主機發(fā)送的寫請求可以是主機直接發(fā)送給存儲裝置的,也可以 是主機通過某個網(wǎng)絡(luò)(如某個局域網(wǎng))發(fā)送給存儲裝置的。
步驟A2:根據(jù)接收到的寫請求,判斷各個Cache板的負(fù)荷是否相同,如果 是,進(jìn)入步驟A3,如果否,進(jìn)入步驟A4;
其中,需要說明的是,Cache板按照存儲數(shù)據(jù)的用途可以分為三部分,包 括讀空間、寫空間和鏡像空間。因此,Cache板上的負(fù)荷包括三種 一是存 儲在Cache板上,要發(fā)送給主機讀的數(shù)據(jù);二是存儲在Cache板上要寫入磁盤的 數(shù)據(jù);三是防止寫操作時數(shù)據(jù)丟失的鏡像數(shù)據(jù),即備份數(shù)據(jù)。存儲裝置中判斷 每個Cache板上負(fù)荷是否 一樣,可以具體是判斷每個Cache板上存儲空間的利用 率,利用率高的Cache板的負(fù)荷重,利用率低的Cache板的負(fù)荷輕。
步驟A3:任意選擇兩個Cache板,從這兩個Cache板中獲取各一個空白的 內(nèi)存塊,進(jìn)入步驟A5;
步驟A4:選擇負(fù)荷按照由輕到重的順序,排列在第一和第二的兩個Cache 板,從這兩個Cache板中獲取各一塊空白的內(nèi)存塊,進(jìn)入步驟A5;
其中,還需要說明的是,步驟A3或者步驟A4中獲取的屬于不同Cache板上 的兩個空白內(nèi)存塊的存儲空間通常是相同大小,即一種簡單的做法是在該存儲 裝置中每個Cache板上劃分的內(nèi)存塊的存儲空間大小都相同,每個內(nèi)存塊的存 儲空間大小的具體數(shù)值可以根據(jù)設(shè)計要求來設(shè)定,通常,將Cache板劃分的內(nèi) 存塊越多,使得存儲數(shù)據(jù)的內(nèi)存資源更豐富,不需要專門建立Cache板之間的 內(nèi)存關(guān)系,而是根據(jù)需要存儲內(nèi)存塊之間的鏡像關(guān)系,提高了存儲裝置的工作效率。
步驟A5:將數(shù)據(jù)分別存儲到獲取的兩個空白內(nèi)存塊中,其中,兩個內(nèi)存 塊中存儲的數(shù)據(jù)相同;
步驟A6:將步驟A5中存儲有數(shù)據(jù)的兩個內(nèi)存塊中的其中一個內(nèi)存塊中的 數(shù)據(jù)發(fā)送給磁盤。
通過步驟A6將緩存中的數(shù)據(jù)存儲到存儲設(shè)備中。
本實施例提供的方法可以實現(xiàn)與實施例一相同技術(shù)效果,即將主機發(fā)送的 數(shù)據(jù)分別寫入不屬于同一Cache板的兩個空白內(nèi)存塊中;當(dāng)某個Cache板損壞、 且被好的Cache板替換時,替換后的新Cache板被作為內(nèi)存塊資源,不需要重新 構(gòu)建鏡像關(guān)系,而是當(dāng)有數(shù)據(jù)要寫入時,才需要獲取兩個空白內(nèi)存塊,提高了 存儲裝置的工作效率。該方法中通過判斷存儲裝置中各Cache板的負(fù)荷狀況, 選擇獲取不同在一個Cache板上的兩個空白內(nèi)存塊,可以實現(xiàn)各Cache板上的負(fù) 荷均衡,提高的存儲裝置的性能。
還需要說明的是,為了保證在數(shù)據(jù)丟失時,可以迅速的獲取到備份的數(shù)據(jù), 該方法還進(jìn)一步包括
步驟A7:保存兩個內(nèi)存塊之間的鏡像關(guān)系;
其中,步驟A7中保存的鏡像關(guān)系具體可以是建立兩個內(nèi)存塊之間的對 應(yīng)關(guān)系,當(dāng)獲取其中一個內(nèi)存塊的地址獲取標(biāo)識,就可以獲取與之鏡像的內(nèi)存 塊的地址,從而方便存儲設(shè)備獲取到備份數(shù)據(jù)(或者鏡像的數(shù)據(jù))。
還需要說明的是,存儲裝置在執(zhí)行一次將主機發(fā)送的數(shù)據(jù)存儲到磁盤的過 程中,內(nèi)存塊的存儲大小通常是固定的,因此,可能會出現(xiàn)主機發(fā)送的數(shù)據(jù)的 大小超出了一個內(nèi)存塊的存儲容量,因此,該方法還包括
步驟A8:判斷主機發(fā)送的數(shù)據(jù)是否超過了獲取的一個內(nèi)存塊的容量,如 果是,進(jìn)入步驟A2;如果否,則進(jìn)入步驟A8或者結(jié)束操作。
因此,內(nèi)存塊的存儲空間大小還應(yīng)該考慮每次臟數(shù)據(jù)的大小,對于一次寫 入的臟數(shù)據(jù)較大的情況,將超出內(nèi)存塊容量的數(shù)據(jù)再循環(huán)執(zhí)行獲取空白內(nèi)存 塊,使得該方法更完善。
步驟A9:發(fā)送寫完成響應(yīng)給主機。通過增加步驟A9,方便主4M艮據(jù)該寫完成響應(yīng)執(zhí)行其他操作。 以上對步驟A1至A9的說明,佳—得存儲設(shè)備在有Cache板損壞時,替換的新 Cache板不需要重新構(gòu)建鏡像關(guān)系,而是當(dāng)有數(shù)據(jù)寫入時,將新Cache板上的存 儲空間作為內(nèi)存塊資源,以備后續(xù)操作使用;通過判斷并且選擇負(fù)荷輕的Cache 板,使得Cache板上的負(fù)荷均衡,提高了存儲裝置的性能;
實施例三
本發(fā)明實施例提供了一種存儲裝置,參加圖6所示,該存儲裝置包括接 收單元100、獲取單元200、存儲單元300和第一發(fā)送單元600a。 其中,接收單元IOO,用于接收主機發(fā)送的寫請求;
獲取單元200,用于根據(jù)寫請求,獲取不在同一個緩存Cache板上的至少兩 個空白的內(nèi)存塊,將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述至少 兩個內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);
存儲單元300,包括多于兩個的緩存板,每個緩存板包括多于l個的內(nèi)存
塊;;
第一發(fā)送單元600a,用于將至少兩個存儲有數(shù)據(jù)的其中 一個內(nèi)存塊中的數(shù)
據(jù)發(fā)送給存儲介質(zhì)。
需要說明的是,存儲單元300中包括2個以上的Cache板,每個Cache板上包 括多于l個內(nèi)存塊。
接收單元1 OO接收到主機發(fā)送的寫請求后,通知獲取單元200 ,獲取單元200 根據(jù)接收到的寫請求,獲取不是同一個緩存Cache板上的至少兩個空白內(nèi)存塊, 其中,每個Cache板上包括多于l個的內(nèi)存塊,將主機發(fā)送的數(shù)據(jù)存儲到獲取的 兩個或者兩個以上的內(nèi)存塊中,且兩個或者兩個以上的內(nèi)存塊中存儲的數(shù)據(jù)相 同,因此,兩個或者兩個以上的內(nèi)存塊中的數(shù)據(jù)成互為鏡像數(shù)據(jù),當(dāng)一個Cache 板損壞時,存儲裝置可以從鏡像的內(nèi)存塊中獲取到數(shù)據(jù),將數(shù)據(jù)再存儲到存儲 介質(zhì)(如磁盤),從而避免了數(shù)據(jù)丟失。
通過以上對本實施例的說明,該存儲裝置根據(jù)獲取單元200獲取的不在同 一個Cache板上的至少兩個空白的內(nèi)存塊,將主機發(fā)送的數(shù)據(jù)分別寫入獲取的 每個獲取的內(nèi)存塊中,將其中 一個內(nèi)存塊中的數(shù)據(jù)通過第 一發(fā)送單元600遺送給存儲介質(zhì)。由于每次寫入數(shù)據(jù)之前獲取的空白內(nèi)存塊是從各個Cache板組成 的可以使用的存儲空間中的內(nèi)存塊,不是固定屬于某個Cache板,當(dāng)有Cache 板損壞不能使用時,不需要重新構(gòu)建各個Cache板之間的鏡像關(guān)系,而是在接 收到主機發(fā)送的寫請求之后,獲取單元200才獲取不在同一個緩存Cache板上的 至少兩個空白內(nèi)存塊,將主機發(fā)送的數(shù)據(jù)存儲到所述獲取的內(nèi)存塊中,從而提 高了存儲設(shè)備的工作效率。
可選的,該存儲裝置中的獲取單元200可以具體包括判斷負(fù)荷單元201 和選捧單元202。
其中,判斷負(fù)荷單元201,用于根據(jù)接收到的寫請求,判斷各個Cache板的 負(fù)荷是否一樣;當(dāng)判斷負(fù)荷單元201中判斷各Cache板上的負(fù)荷相同,則通知選 擇單元202,選擇單元202任意選擇不是同一Cache板上各一塊空白內(nèi)存塊;當(dāng)
按照由輕到重的順序,排列在第一和第二的兩個Cache板上的各一塊空白內(nèi)存塊。
JM m干7L^u丄t日'M于'j avT會Lacne;r厭工日'、j貝 否相同,由選擇單元202選擇負(fù)荷輕的Cache板上的空白內(nèi)存塊,使得各Cache 板上的負(fù)荷均衡,提高了存儲裝置的系統(tǒng)性能。 可選的,該存儲裝置還可以包括
存儲關(guān)系單元400,用于保存獲取的兩個內(nèi)存塊之間的4射象關(guān)系。 其中,存儲關(guān)系單元400存儲獲取的兩個內(nèi)存塊之間的鏡像關(guān)系,以便于 當(dāng)有 一 個Cache板損壞時,可以容易的獲取到備份的數(shù)據(jù)。 可選的,該存儲裝置還可以包括
判斷溢出單元500,用于判斷主機發(fā)送的數(shù)據(jù)的大小是否超過獲取的一個 內(nèi)存塊的容量;
第二發(fā)送單元600b,用于當(dāng)判斷溢出單元500中判斷出數(shù)據(jù)的大小沒有超 過獲取的一個內(nèi)存塊的容量時,發(fā)送寫完成響應(yīng)給主機。
其中,如果數(shù)據(jù)的大小超過了獲取的一個內(nèi)存塊的容量,通知獲取單元 200,再獲取兩個不同在一個Cache板上的空白內(nèi)存塊,具體可以是如果數(shù)據(jù)大小超過了一個內(nèi)存塊的容量,判斷溢出單元500將該結(jié)果通知獲取單元200中的 判斷負(fù)荷單元201;如果數(shù)據(jù)的大小沒有超過一個內(nèi)存塊的容量,則結(jié)束才喿作, 或者通知第二發(fā)送單元600b;第二發(fā)送單元600b發(fā)送寫完成響應(yīng)給主機。其中, 由于兩個塊的存儲空間通常是相同的,且獲取的兩個內(nèi)存塊中的存儲的數(shù)據(jù)是 相同的,當(dāng)主機發(fā)送的數(shù)據(jù)大小超過一個內(nèi)存塊的容量時,當(dāng)然與之鏡像的內(nèi) 存塊中數(shù)據(jù)大小也超過了內(nèi)存塊的容量。因此,需要循環(huán)執(zhí)行獲取空白內(nèi)存塊, 將數(shù)據(jù)存儲到內(nèi)存塊中。
通過增加判斷溢出單元500和發(fā)送單元600,使得該存儲裝置更智能,為用 戶提供更高的用戶體驗。
實施例四
本實施例提供一種存儲裝置,該實施例與實施例三提供的一種存儲裝置相 似,參見圖7所示,該存儲裝置10包括接口模塊IOI、交換模塊102、管理模 塊103,緩存Cache板104和磁盤節(jié)點105。
其中,接口模塊101用于接收主機或者網(wǎng)絡(luò)的傳輸設(shè)備發(fā)送的寫請求,與 實施例三中的接收模塊功能相似。外部的設(shè)備可以是主機,或者網(wǎng)絡(luò)中的傳輸 設(shè)備。接口模塊101中包括多個接口模塊,如圖中接口模塊101a,接口模塊101b, 接口模塊101c,接口模塊101d,通常不同的接口模塊代表不同主機與存儲裝置 的通信協(xié)議,如接口模塊101a采用光纖通道(FC, Fiber Channel)與主機進(jìn) 行通信,接口模塊10 lb釆用串行接口 ( SAS, Serial Attached SCSI)與主機通 信等。需要主機與存儲裝置的通信協(xié)議還有多種,此處不做限定。
交換模塊102可以包含多個,如圖交換模塊102a和交換模塊102b,此處以 接口模塊101a為例,交換模塊102a根據(jù)管理模塊103中的策略,將接口模塊101a 發(fā)送來的數(shù)據(jù)發(fā)送到對應(yīng)的Cache板,或者,將Cache板上的數(shù)據(jù)發(fā)送的數(shù)據(jù)發(fā) 送到對應(yīng)的接口模塊101a,從接口模塊101a中傳輸出該存儲裝置,其余接口模 塊與接口模塊101a的功能相同;交換模塊102b根據(jù)管理模塊103中的策略,將 不同的Cache板上的數(shù)據(jù),由該交換模塊102b發(fā)送到的對應(yīng)的磁盤節(jié)點105中存 儲,交換模塊可以與現(xiàn)有技術(shù)中的說明相似。
Cache板104至少為2個以上,可以將多個Cache板形成的存儲空間稱為存儲單元,該存儲單元與實施例三中的存儲單元有相似的說明。每個Cache板都用 于存儲數(shù)據(jù),磁盤節(jié)點105可以是一個,也可以是多個,用于存儲數(shù)據(jù),磁盤 節(jié)點也稱為存儲介質(zhì)。其中,Cache板存儲數(shù)據(jù)和DiskNode存儲的數(shù)據(jù)的關(guān)系 是公知常識,此處不贅述。
管理模塊103控制該存儲裝置中的其他模塊,具體說明包括存儲裝置通 過其接口模塊101接收到主機發(fā)送的寫請求后,管理模塊103根據(jù)該寫請求,獲 取不在同一個Cache板上的兩個空白內(nèi)存塊,每個Cache板包括多于l個的內(nèi)存 塊;管理模塊103控制將主機發(fā)送的數(shù)據(jù)存儲到獲取的兩個空白內(nèi)存塊中,管 理模塊103將存儲有數(shù)據(jù)的兩個內(nèi)存塊中的其中 一個內(nèi)存塊上的數(shù)據(jù)發(fā)送給磁 盤節(jié)點,磁盤節(jié)點接收其中一個內(nèi)存塊發(fā)送的數(shù)據(jù),且存儲在磁盤節(jié)點中。
需要理解的時,通過以上說明管理模塊103中包括了實施例三中說明的獲 取單元200,該管理模塊l03中還可以包括實施例三中的判斷溢出單元和發(fā)送單 元。但是,需要理解的是,該管理模塊103不可以簡單的認(rèn)為是實施例三中的 獲取單元200,該管理;漠塊還可以包括判斷溢出單元500、第一發(fā)送單元600a 和第二發(fā)送單元600b,該管理模塊103是該存儲裝置中的控制中心。
為了方便理解,圖7中還對該存儲裝置以外的邏輯架構(gòu)進(jìn)行的描繪,即一 個或者多個主機70,可以通過某個網(wǎng)絡(luò)80連接到該存儲裝置,使得主機可以與 該存儲裝置通信。
通過以上對本實施例提供的一種存儲裝置的說明,該存儲裝置中的管理模 塊103將主機發(fā)送的數(shù)據(jù)分別寫入不屬于同一Cache板的兩個內(nèi)存塊中,由于每 次寫入數(shù)據(jù)之前,管理模塊103獲取的空白內(nèi)存塊是從各個Cache板組成的可以 使用的存儲空間中的內(nèi)存塊,不是固定屬于某個Cache板,當(dāng)有Cache板損壞不 能使用時,不需要重新構(gòu)建各個Cache板之間的鏡像關(guān)系,而是在接收到主機 發(fā)送的寫請求之后,才需要獲取不在同一個緩存Cache板上的兩個空白內(nèi)存塊, 將主機發(fā)送的數(shù)據(jù)存儲到所述獲取的兩個空白內(nèi)存塊中,從而提高了存儲設(shè)備 的工作效率。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步 驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括ROM、 RAM、磁盤或光盤等。
以上對本發(fā)明實施例所提供的一種數(shù)據(jù)的存儲方法以及響應(yīng)的裝置進(jìn)行
本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均 會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1、一種數(shù)據(jù)的存儲方法,其特征在于,包括根據(jù)接收到的寫請求,獲取不在同一個緩存板上的至少兩個空白內(nèi)存塊,每個緩存板包括多于1個的空白內(nèi)存塊;將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);將所述至少兩個內(nèi)存塊中的其中一個內(nèi)存塊中的數(shù)據(jù)發(fā)送給存儲介質(zhì)。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述根據(jù)接收到的寫請求, 獲取不在同 一個緩存板上的至少兩個空白內(nèi)存塊,每個緩存板包括多于1個的 內(nèi)存塊,進(jìn)一步包括根據(jù)接收到的寫請求,和預(yù)置的哈希算法,獲取不在同一個緩存板上的至 少兩個空白的內(nèi)存塊。
3、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述根據(jù)接收到的寫請求, 獲取不在同 一個緩存板上的至少兩個空白內(nèi)存塊,每個緩存板包括多于1個的 內(nèi)存塊,進(jìn)一步包括才艮據(jù)接收到的寫請求,判斷各個緩存板上的負(fù)荷是否相同,如果判斷結(jié)果 是各個緩存板上的負(fù)荷不相同,則從負(fù)荷按照由輕到重的順序,排列在第一和 第二的兩個緩存板中各獲取一塊空白內(nèi)存塊。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)所述判斷各個緩存板上的 負(fù)荷為相同時,所述方法還包括從任意至少兩個緩存板上各獲取一塊空白內(nèi) 存塊。
5、 根據(jù)權(quán)利要求l、 3或4任一項所述的方法,其特征在于,所述方法還包括判斷數(shù)據(jù)的大小是否超過所述獲取的至少兩個空白內(nèi)存塊中的其中一塊 內(nèi)存塊的容量,如果是,重復(fù)執(zhí)行所述獲取不在同一個緩存板上的至少兩個空 白內(nèi)存塊的步驟。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,當(dāng)所述判斷數(shù)據(jù)大小沒有超 過所述獲取的至少兩個空白內(nèi)存塊中的其中一塊內(nèi)存塊的容量時,所述方法還 包括發(fā)送寫完成響應(yīng)給所述主機。
7、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述方法還包括 保存所述獲取的至少兩個空白內(nèi)存塊之間的鏡像關(guān)系。
8、 一種存儲裝置,其特征在于,包括存儲單元,包括多于至少兩個的緩存板,每個緩存板包括多于l個的內(nèi)存塊;接收單元,用于接收寫請求;獲取單元,用于根據(jù)接收到的寫請求,獲取不在同一個緩存板上的至少兩 個空白內(nèi)存塊,將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述至少兩 個內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);第一發(fā)送單元,用于將所述至少兩個內(nèi)存塊中的其中一個內(nèi)存塊中的數(shù)據(jù) 發(fā)送給存儲介質(zhì)。
9、 根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,所述獲取單元進(jìn)一步包括判斷負(fù)荷單元,用于根據(jù)接收到的寫請求,判斷各個緩存板上的負(fù)荷是否 相同;選擇單元,用于當(dāng)所述判斷負(fù)荷單元中的判斷結(jié)果為各個緩存板上的負(fù)荷 不相同時,從負(fù)荷按照由輕到重的順序,排列在第一和第二的兩個緩存板中各 獲取一塊空白內(nèi)存塊。
10、 根據(jù)權(quán)利要求9所述的存儲裝置,其特征在于,選擇單元還用于當(dāng)所 述判斷負(fù)荷單元中的判斷結(jié)果為各個緩存板上的負(fù)荷相同時,從任意至少兩個 緩存板上各獲取一塊空白內(nèi)存塊。
11、 根據(jù)權(quán)利要求8至10任一項所述的存儲裝置,其特征在于,所述存儲 裝置還包括判斷溢出單元,用于判斷數(shù)據(jù)大小是否超過所述獲取的至少兩個空白內(nèi)存 塊中的其中一塊內(nèi)存塊的容量,如果是,通知所述獲取單元。
12、 根據(jù)權(quán)利要求ll所述的存儲裝置,其特征在于,所述存儲裝置還包括 第二發(fā)送單元,用于當(dāng)所述判斷數(shù)據(jù)的大小是否超過所述獲取的至少兩個空白內(nèi)存塊中的其中 一塊內(nèi)存塊的容量,發(fā)送寫完成響應(yīng)給所述主機。
13、 根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,所述存儲裝置還包括: 存儲關(guān)系單元,用于保存所述獲取的至少兩個空白內(nèi)存塊之間的鏡像關(guān)系。
全文摘要
本發(fā)明實施例公開了一種數(shù)據(jù)的存儲方法,該方法包括根據(jù)接收到的寫請求,獲取不在同一個緩存板上的至少兩個空白內(nèi)存塊,每個緩存板包括多于1個的空白內(nèi)存塊;將數(shù)據(jù)存儲到所述獲取的至少兩個空白內(nèi)存塊中,所述內(nèi)存塊中存儲的數(shù)據(jù)是相同的數(shù)據(jù);將所述至少兩個內(nèi)存塊中的其中一個內(nèi)存塊中的數(shù)據(jù)發(fā)送給存儲介質(zhì)。本發(fā)明實施例還提供一種存儲裝置。本發(fā)明技術(shù)方案當(dāng)有Cache板損壞不能使用時,不用構(gòu)建各個Cache板之間的鏡像關(guān)系,而是接收到主機發(fā)送的寫請求之后,獲取不在同一個Cache板上的至少兩個空白內(nèi)存塊,將主機發(fā)送的數(shù)據(jù)存儲到所述獲取的內(nèi)存塊中,從而提高了存儲設(shè)備的工作效率。
文檔編號G06F11/14GK101515255SQ200910129420
公開日2009年8月26日 申請日期2009年3月18日 優(yōu)先權(quán)日2009年3月18日
發(fā)明者勝 李, 陳立耀 申請人:成都市華為賽門鐵克科技有限公司