用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法,包括:監(jiān)控集群中各存儲(chǔ)裝置的工作狀態(tài);當(dāng)存在失效存儲(chǔ)裝置時(shí),確定失效存儲(chǔ)裝置所在的至少一個(gè)存儲(chǔ)陣列、至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組;基于用戶對(duì)全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生成第一隊(duì)列和第二隊(duì)列,其中,第一隊(duì)列與全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二隊(duì)列與全部數(shù)據(jù)組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng);從集群中選擇可用存儲(chǔ)裝置替換失效存儲(chǔ)裝置;基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向可用存儲(chǔ)裝置遷移數(shù)據(jù)組。本發(fā)明優(yōu)先遷移熱點(diǎn)數(shù)據(jù),降低熱點(diǎn)數(shù)據(jù)丟失的概率,提高數(shù)據(jù)安全性。
【專利說(shuō)明】
用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,尤其設(shè)及一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法及系 統(tǒng)。
【背景技術(shù)】
[0002] 分布式存儲(chǔ)系統(tǒng),是將數(shù)據(jù)按照一定規(guī)則切分并打散存儲(chǔ)在多臺(tái)獨(dú)立通用存儲(chǔ)服 務(wù)器上。傳統(tǒng)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)采用集中的存儲(chǔ)服務(wù)器存放所有數(shù)據(jù),存儲(chǔ)服務(wù)器成為系統(tǒng) 性能的瓶頸,也是可靠性和安全性的焦點(diǎn),不能滿足大規(guī)模存儲(chǔ)應(yīng)用的需要,而分布式存儲(chǔ) 系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用位置存儲(chǔ)服務(wù)器定 位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。存儲(chǔ)集群的成 千上萬(wàn)臺(tái)存儲(chǔ)模塊可W將數(shù)據(jù)充分冗余,從而可W顯著提高數(shù)據(jù)的安全性。
[0003] 在存儲(chǔ)領(lǐng)域,通常使用年故障率(AFR)來(lái)表征磁盤的可靠性,現(xiàn)在市場(chǎng)上通用的磁 盤的AFR-般是4%左右,即如果一個(gè)集群中有365塊磁盤,那么一年中有磁盤損害的概率為 pow(0.96,365) =0.9999996619351175,即一年中幾乎肯定有磁盤失效。而對(duì)于分布式存儲(chǔ) 集群,實(shí)際上磁盤個(gè)數(shù)通常都達(dá)到了上千塊,因此應(yīng)對(duì)磁盤損壞成為了每一個(gè)存儲(chǔ)系統(tǒng)都 要解決的問(wèn)題。
[0004] 現(xiàn)有技術(shù)中,通過(guò)數(shù)據(jù)冗余來(lái)處理磁盤失效的問(wèn)題,通常是每一份數(shù)據(jù)都可W存 儲(chǔ)于=塊甚至更多塊磁盤上,當(dāng)某塊磁盤失效時(shí),可W依靠剩下的兩個(gè)副本做數(shù)據(jù)恢復(fù),防 止在磁盤損壞或者存儲(chǔ)模塊巖機(jī)時(shí)數(shù)據(jù)丟失。但實(shí)際上,數(shù)據(jù)恢復(fù)策略必須要得到完善的 設(shè)計(jì),否則還是會(huì)遇到數(shù)據(jù)丟失的問(wèn)題。企業(yè)在搭建存儲(chǔ)集群時(shí),通常都會(huì)同批次購(gòu)買很多 的存儲(chǔ)服務(wù)器和磁盤,同批次的磁盤往往具備類似的硬件規(guī)格和驅(qū)動(dòng)固件,即可能出現(xiàn)同 時(shí)失效的情況,在運(yùn)種情況下,某一塊磁盤開始失效之時(shí),存儲(chǔ)于此塊磁盤上的數(shù)據(jù)都處于 降級(jí)的狀態(tài),更壞的是,與之同批次的其他磁盤也隨之失效的概率就會(huì)提高,如果此時(shí)另外 一塊磁盤也失效,則一部分?jǐn)?shù)據(jù)將僅剩下一個(gè)存活的副本,并且降級(jí)程度進(jìn)一步惡化,如果 數(shù)據(jù)不能盡快修復(fù),降級(jí)的數(shù)據(jù)可能會(huì)因最后一個(gè)副本所在的磁盤的失效而完全丟失。
[0005] 處理磁盤失效問(wèn)題,通常的方案是增加副本數(shù),即由原來(lái)的=副本策略修改為四 副本,運(yùn)種簡(jiǎn)單粗暴的方案會(huì)嚴(yán)重增加企業(yè)的存儲(chǔ)成本,另外增加副本數(shù)之后,數(shù)據(jù)的寫入 性能也會(huì)降低,因此不是一個(gè)好的方案。
[0006] 通常而言,用戶的數(shù)據(jù)都具有明顯的冷熱區(qū)別,越熱的數(shù)據(jù)即越經(jīng)常被訪問(wèn)的數(shù) 據(jù),對(duì)于用戶而言也是越重要的數(shù)據(jù)。運(yùn)也是計(jì)算機(jī)系統(tǒng)中著名的局部性原理的一種體現(xiàn), 即用戶在某一天某一時(shí)刻訪問(wèn)的數(shù)據(jù)在未來(lái)仍需被訪問(wèn)的概率較高。分布式存儲(chǔ)系統(tǒng)都提 供了較高的可用性,即使數(shù)據(jù)的某一個(gè)副本損壞,當(dāng)用戶訪問(wèn)運(yùn)個(gè)數(shù)據(jù)時(shí),仍然可W從其他 副本中讀取并返回給用戶。但是對(duì)于被用戶訪問(wèn)到的重要的熱點(diǎn)數(shù)據(jù),如果不能夠盡快修 復(fù),那么如果磁盤繼續(xù)損壞,那么運(yùn)些重要數(shù)據(jù)將會(huì)出現(xiàn)丟失,給用戶帶來(lái)的損失也就更 大。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例提供一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法及系統(tǒng),優(yōu)先選擇用戶訪 問(wèn)的熱點(diǎn)數(shù)據(jù)進(jìn)行遷移,降低熱點(diǎn)數(shù)據(jù)丟失的概率,保障熱點(diǎn)數(shù)據(jù)的安全,從而顯著提高系 統(tǒng)的數(shù)據(jù)安全性和可用性。
[000引本發(fā)明實(shí)施例提供一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法,包括:
[0009] 監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài);
[0010] 當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在的至少一個(gè)存儲(chǔ)陣列、所述 至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組.
[0011] 基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生成第一隊(duì)列和第二隊(duì) 列,其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二隊(duì)列與所述全部數(shù)據(jù) 組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng);
[0012] 從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置;
[0013] 基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存 儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置遷移數(shù)據(jù)組。
[0014] 本發(fā)明實(shí)施例提供一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)系統(tǒng),包括:
[0015] 監(jiān)控模塊,用于監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài);
[0016] 遷移數(shù)據(jù)確定模塊,用于當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在的 至少一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ) 陣列相關(guān)的全部數(shù)據(jù)組;
[0017] 遷移序列生成模塊,基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生 成第一隊(duì)列和第二隊(duì)列,其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二 隊(duì)列與所述全部數(shù)據(jù)組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng);
[0018] 存儲(chǔ)修復(fù)模塊,從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置;
[0019] 數(shù)據(jù)遷移模塊,基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列 中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置遷移數(shù)據(jù)組。
【附圖說(shuō)明】
[0020] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可W根 據(jù)運(yùn)些附圖獲得其他的附圖。
[0021 ]圖1為本發(fā)明實(shí)施例用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法的流程圖;
[0022] 圖2為本發(fā)明用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法的一個(gè)實(shí)施例的流程圖;
[0023] 圖3為本發(fā)明用于分布式存儲(chǔ)的的數(shù)據(jù)存儲(chǔ)方法的另一個(gè)實(shí)施例的流程圖;
[0024] 圖4為本發(fā)明實(shí)施例用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;
[0025] 圖5為本發(fā)明用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0027] 根據(jù)本發(fā)明實(shí)施例提供的一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法,如圖1所示,包 括:
[0028] 監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài);
[0029] 當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在的至少一個(gè)存儲(chǔ)陣列、所述 至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組.
[0030] 基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生成第一隊(duì)列和第二隊(duì) 列,其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二隊(duì)列與所述全部數(shù)據(jù) 組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng);
[0031] 從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置;
[0032] 基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存 儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置遷移數(shù)據(jù)組。
[0033] 分布式存儲(chǔ)是將每個(gè)數(shù)據(jù)組均存儲(chǔ)到集群中的N個(gè)存儲(chǔ)裝置上,N為常數(shù),在優(yōu)選 的實(shí)施例中,N=3。
[0034] 在可選的實(shí)施例中,將每個(gè)數(shù)據(jù)組均存儲(chǔ)到集群中的3個(gè)存儲(chǔ)裝置上,并建立數(shù)據(jù) 組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用存儲(chǔ)裝置列表,其中,可用存儲(chǔ)裝置可W是已 經(jīng)使用但還有存儲(chǔ)空間的存儲(chǔ)裝置,也可W是沒(méi)有被使用的存儲(chǔ)裝置。
[0035] 在可選的實(shí)施例中,第一隊(duì)列和第二隊(duì)列可W通過(guò)W下步驟獲得:在確定所述失 效存儲(chǔ)裝置所在的至少一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與 所述至少一個(gè)存儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組之后,生成一個(gè)包含全部數(shù)據(jù)組的第一隊(duì)列和一 個(gè)空的第二隊(duì)列,若用戶對(duì)全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組訪問(wèn),則將用戶訪問(wèn)的至少一 個(gè)數(shù)據(jù)組添加到第二隊(duì)列中,添加完成后,將該至少一個(gè)數(shù)據(jù)組從第一隊(duì)列中刪除,其中, 第一隊(duì)列和第二隊(duì)列存儲(chǔ)的均是數(shù)據(jù)組的名稱而不是數(shù)據(jù)組本身。
[0036] 在利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置 遷移數(shù)據(jù)組期間,用戶請(qǐng)求訪問(wèn)全部數(shù)據(jù)組中的一個(gè)數(shù)據(jù)組,若該數(shù)據(jù)組在第一隊(duì)列中,貝U 將該數(shù)據(jù)組移至第二隊(duì)列,若該數(shù)據(jù)組在第二隊(duì)列中,則將該數(shù)據(jù)組移至第二隊(duì)列的隊(duì)首, 優(yōu)先進(jìn)行遷移。對(duì)于第二隊(duì)列中的數(shù)據(jù)組,被訪問(wèn)次數(shù)越多,在第二隊(duì)列中越靠前。
[0037] 在一些可選的實(shí)施例中,存儲(chǔ)裝置可W是各式存儲(chǔ)器,如RAM、R0M等,也可W是磁 盤或軟盤等其他能夠存儲(chǔ)數(shù)據(jù)的存儲(chǔ)介質(zhì)。
[0038] 在一些可選的實(shí)施例中,在每個(gè)存儲(chǔ)裝置上承載至少一組數(shù)據(jù)組,W便提高存儲(chǔ) 裝置的利用率,降低存儲(chǔ)成本。
[0039] 在一些可選的實(shí)施例中,將每組數(shù)據(jù)組均存儲(chǔ)到集群中的3個(gè)磁盤上,W形成數(shù)據(jù) 組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用磁盤列表,所述映射列表中的部分列表如下表 1所示,所述可用磁盤列表中的部分列表如下表2所示,
[0040] 表1:
[0041]
[0044] ~在本實(shí)施例中,"dg+常數(shù)"用于標(biāo)記不同的數(shù)據(jù)組,"d+常數(shù)"用于標(biāo)記不同的磁 盤,本公開在此方面沒(méi)有限制。
[0045] 在一些可選的實(shí)施例中,存儲(chǔ)陣列中存儲(chǔ)裝置的位置是有順序的,一方面,在存儲(chǔ) 陣列中位置靠前的存儲(chǔ)裝置負(fù)責(zé)接收寫入的數(shù)據(jù)組,并轉(zhuǎn)發(fā)給其所在存儲(chǔ)陣列中剩余的存 儲(chǔ)裝置,另一方面,當(dāng)存在失效存儲(chǔ)裝置時(shí),利用位置靠前的存儲(chǔ)裝置向新的存儲(chǔ)裝置進(jìn)行 數(shù)據(jù)組遷移。
[0046] 在一些可選的實(shí)施例中,監(jiān)控映射列表中磁盤的工作狀態(tài),可W通過(guò)不斷地對(duì)磁 盤進(jìn)行讀寫操作來(lái)監(jiān)控其工作狀態(tài),也可W通過(guò)每隔20s對(duì)磁盤進(jìn)行一次讀寫操作,還可W 利用現(xiàn)有技術(shù)中的監(jiān)控工具如smartmontools來(lái)監(jiān)控磁盤的工作狀態(tài)。
[0047] 當(dāng)存在失效磁盤時(shí),如磁盤d4失效時(shí),由表1確定失效磁盤d4所在的存儲(chǔ)陣列: ((14,(1666,(177)、((14,(18,(1666)和((14,(1123,(110),與存儲(chǔ)陣列((14,(1666,(177)相關(guān)的數(shù)據(jù)組 包括數(shù)據(jù)組dgl和數(shù)據(jù)組dg2,與存儲(chǔ)陣列(d4,d8,d666)相關(guān)的數(shù)據(jù)組包括數(shù)據(jù)組d的和數(shù) 據(jù)組dg4,與存儲(chǔ)陣列(d4,dl23,dl0)相關(guān)的數(shù)據(jù)組包括數(shù)據(jù)組dg5,遍歷全部數(shù)據(jù)組,生成 待遷移數(shù)據(jù)的第一隊(duì)列化和空的第二隊(duì)列化,其中,化={數(shù)據(jù)組dgl、數(shù)據(jù)組dg2、數(shù)據(jù)組 dg3、數(shù)據(jù)組dg4、數(shù)據(jù)組dg5}。
[004引此時(shí),用戶請(qǐng)求訪問(wèn)數(shù)據(jù)組dgl和數(shù)據(jù)組dg4,則將數(shù)據(jù)組dgl和數(shù)據(jù)組dg4從第一 隊(duì)列化中刪除并移至第二隊(duì)列化,此時(shí)化={數(shù)據(jù)組dgl、數(shù)據(jù)組dg4}。
[0049]其中,第一隊(duì)列和第二隊(duì)列中存儲(chǔ)的均是數(shù)據(jù)組的名稱而不是數(shù)據(jù)組本身。
[0化0] 在進(jìn)行數(shù)據(jù)組遷移期間,用戶再一次請(qǐng)求訪問(wèn)數(shù)據(jù)組dg4,此時(shí)數(shù)據(jù)組dg4已經(jīng)在 第二隊(duì)列中,且數(shù)據(jù)組dg4不在第二隊(duì)列的隊(duì)首,則將其移至隊(duì)首進(jìn)行優(yōu)先遷移。
[0051] 在一些可選的實(shí)施中,各數(shù)據(jù)組遷移完成后從其所在的隊(duì)列中刪除,當(dāng)全部數(shù)據(jù) 組遷移完成后刪除第一隊(duì)列和第二隊(duì)列。
[0052] 在一些可選的實(shí)施例中,第一隊(duì)列中的數(shù)據(jù)組可W按照數(shù)據(jù)組的名稱或數(shù)據(jù)組的 大小進(jìn)行排序,也可W根據(jù)用戶的具體需求進(jìn)行排序。本發(fā)明對(duì)第一隊(duì)列中數(shù)據(jù)組的順序 不做限制,在此不做寶述。
[0053] 在一些可選的實(shí)施例中,可W根據(jù)可用磁盤列表選擇=塊不同的可用磁盤分別替 換S個(gè)存儲(chǔ)陣列中的失效磁盤d4,如(dll0,d666,d77)、(d20,d8,d666WP(d456,dl23, dio),也可W選擇一塊可用磁盤替換替換S個(gè)存儲(chǔ)陣列中的失效磁盤d4,如(dll0,d666, d77)、(dll0,d8,d666WP(dll0,dl23,dl0)。
[0054] 在一些可選的實(shí)施例中,可W在確定磁盤d4失效之后立即從可用磁盤列表中選擇 新的可用磁盤如磁盤d 110替換磁盤d4,也可W在確定磁盤d4失效后一定時(shí)間內(nèi)如15分鐘 內(nèi),磁盤d4沒(méi)有修復(fù),則從可用磁盤列表中選擇新的磁盤替換磁盤d4。失效磁盤被替換后更 新映射列表。
[0055] 請(qǐng)參考圖2,當(dāng)剩余的存活存儲(chǔ)裝置的數(shù)量為兩個(gè)W上時(shí),根據(jù)剩余的各存活存儲(chǔ) 裝置在存儲(chǔ)陣列中的位置,生成存儲(chǔ)裝置恢復(fù)順序,具體而言,存儲(chǔ)裝置恢復(fù)順序可W為存 儲(chǔ)陣列中存儲(chǔ)裝置的位置順序,利用位置靠前的存儲(chǔ)裝置向新的存儲(chǔ)裝置進(jìn)行數(shù)據(jù)遷移。 如磁盤d4失效時(shí),確定其所在的存儲(chǔ)陣列包括(d4,d666,d77)、(d4,d8,d666WP(d456, dl23,dl0),對(duì)于數(shù)據(jù)組dgl和數(shù)據(jù)組dg2而言,利用磁盤d666向新的磁盤如dllO按照第二隊(duì) 列先于第一隊(duì)列的順序遷移數(shù)據(jù)組。對(duì)于數(shù)據(jù)組d3和數(shù)據(jù)組d4,利用磁盤d8向新的磁盤如 dllO按照第二隊(duì)列先于第一隊(duì)列的順序遷移數(shù)據(jù)組。對(duì)于數(shù)據(jù)組d5,利用磁盤dl23向新的 磁盤如dllO按照第二隊(duì)列先于第一隊(duì)列的順序遷移數(shù)據(jù)組。
[0056] 請(qǐng)參考圖3,當(dāng)失效存儲(chǔ)裝置的數(shù)量為兩個(gè)W上時(shí),根據(jù)與所述失效存儲(chǔ)裝置對(duì)應(yīng) 的至少兩個(gè)可用存儲(chǔ)裝置在存儲(chǔ)陣列中的位置,生成存儲(chǔ)裝置恢復(fù)順序,具體而言,所述存 儲(chǔ)裝置恢復(fù)順序可W為可用存儲(chǔ)裝置在存儲(chǔ)陣列的位置順序,位置靠前的可用存儲(chǔ)裝置先 于位置靠后的可用存儲(chǔ)裝置。如存儲(chǔ)陣列(d4,d666,d77)中磁盤d4和磁盤d666均失效后,由 磁盤dl 10替換磁盤d4,磁盤d20替換磁盤d666,則優(yōu)先向磁盤dl 10遷移相關(guān)的數(shù)據(jù)組,然后 再向磁盤d20遷移相關(guān)的數(shù)據(jù)組。
[0057] 下面W失效磁盤d4為例,具體說(shuō)明該數(shù)據(jù)存儲(chǔ)方法。
[005 引失效磁盤 d4 所在的存儲(chǔ)陣列包括:(d4,d666,d77)、(d4,d8,d666WP(d4,dl23, dlO),剩余存活磁盤包括:磁盤d666、磁盤d77、磁盤d8、磁盤dl23和磁盤dlO。與上述存儲(chǔ)陣 列相關(guān)的全部數(shù)據(jù)組包括數(shù)據(jù)組dgl、數(shù)據(jù)組dg2、數(shù)據(jù)組dg3、數(shù)據(jù)組dg4和數(shù)據(jù)組dg5。遍歷 全部數(shù)據(jù)組,生成第一隊(duì)列和空的第二隊(duì)列,其中,第一隊(duì)列化={數(shù)據(jù)組dgl,數(shù)據(jù)組dg2, 數(shù)據(jù)組dg3,數(shù)據(jù)組dg4,數(shù)據(jù)組dg引。根據(jù)可用磁盤列表選擇磁盤dl 10替換失效磁盤d4,貝。 替換后的存儲(chǔ)陣列為(dllO, d666,d77)、(dllO, d8,d666)和(dllO, dl23,dl0)。
[0059] 此時(shí),用戶請(qǐng)求訪問(wèn)數(shù)據(jù)組dgl和dg4,則將數(shù)據(jù)組dgl和數(shù)據(jù)組dg4從第一隊(duì)列中 刪除并移至第二隊(duì)列,則第二隊(duì)列化={數(shù)據(jù)組dgl,數(shù)據(jù)組dg4},
[0060] 利用剩余存活磁盤向磁盤dllO遷移數(shù)據(jù)組時(shí),優(yōu)先遷移第二隊(duì)列中的數(shù)據(jù)組。在 數(shù)據(jù)組遷移期間,用戶請(qǐng)求訪問(wèn)數(shù)據(jù)組dg3,則將數(shù)據(jù)組d的移至第二隊(duì)列,第二隊(duì)列化變?yōu)?Q2'= {數(shù)據(jù)組dgl,數(shù)據(jù)組dg4,數(shù)據(jù)組dg3}(數(shù)據(jù)組dgl還沒(méi)有遷移完成),若用戶再次請(qǐng)求 訪問(wèn)數(shù)據(jù)組dg3,數(shù)據(jù)組d的被訪問(wèn)了 2次,數(shù)據(jù)組dgl和數(shù)據(jù)組dg4被訪問(wèn)了 1次,則將數(shù)據(jù)組 d的移至隊(duì)首,第二隊(duì)列化'變?yōu)镼2" = {數(shù)據(jù)組dg3,數(shù)據(jù)組dgl,數(shù)據(jù)組dg4}。優(yōu)先向磁盤dllO 遷移第二隊(duì)列Q2"中的數(shù)據(jù)組,遷移完成之后,遷移第一隊(duì)列中的數(shù)據(jù)組。
[0061] 根據(jù)本發(fā)明實(shí)施例提供的一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)系統(tǒng)1000,如圖4所示, 包括:
[0062] 監(jiān)控模塊100,用于監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài);
[0063] 遷移數(shù)據(jù)確定模塊200,用于當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在 的至少一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存 儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組;
[0064] 遷移序列生成模塊300,基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn), 生成第一隊(duì)列和第二隊(duì)列,其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第 二隊(duì)列與所述全部數(shù)據(jù)組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng);
[0065] 存儲(chǔ)修復(fù)模塊400,從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置;
[0066] 數(shù)據(jù)遷移模塊500,基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣 列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置遷移數(shù)據(jù)組。
[0067] 該數(shù)據(jù)存儲(chǔ)系統(tǒng)用于執(zhí)行上述數(shù)據(jù)存儲(chǔ)方法,并能達(dá)到與數(shù)據(jù)存儲(chǔ)方法相同的技 術(shù)效果。
[0068] 圖5為本申請(qǐng)實(shí)施例提供的又一種數(shù)據(jù)存儲(chǔ)系統(tǒng)1200的結(jié)構(gòu)示意圖,本申請(qǐng)具體 實(shí)施例并不對(duì)用戶設(shè)備1200的具體實(shí)現(xiàn)做限定。如圖5所示,該用戶設(shè)備1200可W包括:
[0069] 處理器(processor) 1210、通信接口(Communications Interface) 1220、存儲(chǔ)器 (memory) 1230、W及通信總線1240。其中:
[0070] 處理器1210、通信接口 1220、W及存儲(chǔ)器1230通過(guò)通信總線1240完成相互間的通 信。
[0071] 通信接口 1220,用于與比如客戶端等的網(wǎng)元通信。
[0072] 處理器1210,用于執(zhí)行程序1232,具體可W執(zhí)行上述方法實(shí)施例中的相關(guān)步驟。
[0073] 具體地,程序1232可W包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。
[0074] 處理器1210可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實(shí)施本申請(qǐng)實(shí)施例的一個(gè)或多個(gè)集成電 路。
[0075] W上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可 W是或者也可W不是物理上分開的,作為單元顯示的部件可W是或者也可W不是物理單 元,即可W位于一個(gè)地方,或者也可W分布到多個(gè)網(wǎng)絡(luò)單元上。可W根據(jù)實(shí)際的需要選擇其 中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性 的勞動(dòng)的情況下,即可W理解并實(shí)施。
[0076] 通過(guò)W上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可W清楚地了解到各實(shí)施方式可 借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可W通過(guò)硬件?;谶\(yùn)樣的理解,上 述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可WW軟件產(chǎn)品的形式體現(xiàn)出來(lái),該 計(jì)算機(jī)軟件產(chǎn)品可W存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指 令用W使得一臺(tái)計(jì)算機(jī)設(shè)備(可W是個(gè)人計(jì)算機(jī),存儲(chǔ)模塊,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí) 施例或者實(shí)施例的某些部分所述的方法。
[0077] 最后應(yīng)說(shuō)明的是:W上實(shí)施例僅用W說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管 參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可 W對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換; 而運(yùn)些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和 范圍。
【主權(quán)項(xiàng)】
1. 一種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)方法,其特征在于,包括: 監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài); 當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在的至少一個(gè)存儲(chǔ)陣列、所述至少 一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ)陣列相關(guān)的全部數(shù)據(jù)組; 基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生成第一隊(duì)列和第二隊(duì)列, 其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二隊(duì)列與所述全部數(shù)據(jù)組 中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng); 從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置; 基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝 置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,對(duì)于第二隊(duì)列中的數(shù)據(jù)組,被訪 問(wèn)次數(shù)越多,在第二隊(duì)列中越靠前。3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,在確定所述失效存儲(chǔ)裝置所在的 至少一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ) 陣列相關(guān)的全部數(shù)據(jù)組后,所述方法還包括: 當(dāng)剩余的存活存儲(chǔ)裝置的數(shù)量為兩個(gè)以上時(shí),根據(jù)剩余的各存活存儲(chǔ)裝置在存儲(chǔ)陣列 中的位置,生成存儲(chǔ)裝置恢復(fù)順序; 基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝 置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組包括: 基于第二隊(duì)列先于第一隊(duì)列的順序,按照存儲(chǔ)裝置恢復(fù)順序,利用所述至少一個(gè)存儲(chǔ) 陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,在確定所述失效存儲(chǔ)裝置所在的 至少一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ) 陣列相關(guān)的全部數(shù)據(jù)組,所述方法還包括: 當(dāng)失效存儲(chǔ)裝置的數(shù)量為兩個(gè)以上時(shí),根據(jù)與所述失效存儲(chǔ)裝置對(duì)應(yīng)的至少兩個(gè)可用 存儲(chǔ)裝置在存儲(chǔ)陣列中的位置,生成存儲(chǔ)裝置恢復(fù)順序; 基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝 置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組包括: 基于第二隊(duì)列先于第一隊(duì)列的順序,按照存儲(chǔ)裝置恢復(fù)順序,利用所述至少一個(gè)存儲(chǔ) 陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。5. -種用于分布式存儲(chǔ)的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,包括: 監(jiān)控模塊,用于監(jiān)控分布式存儲(chǔ)的集群中各存儲(chǔ)裝置的工作狀態(tài); 迀移數(shù)據(jù)確定模塊,用于當(dāng)存在失效存儲(chǔ)裝置時(shí),確定所述失效存儲(chǔ)裝置所在的至少 一個(gè)存儲(chǔ)陣列、所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置及與所述至少一個(gè)存儲(chǔ)陣列 相關(guān)的全部數(shù)據(jù)組; 迀移序列生成模塊,基于用戶對(duì)所述全部數(shù)據(jù)組中的至少一個(gè)數(shù)據(jù)組的訪問(wèn),生成第 一隊(duì)列和第二隊(duì)列,其中,第一隊(duì)列與所述全部數(shù)據(jù)組中未被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng),第二隊(duì)列 與所述全部數(shù)據(jù)組中被訪問(wèn)的數(shù)據(jù)組對(duì)應(yīng); 存儲(chǔ)修復(fù)模塊,從集群中選擇可用存儲(chǔ)裝置替換所述失效存儲(chǔ)裝置; 數(shù)據(jù)迀移模塊,基于第二隊(duì)列先于第一隊(duì)列的順序,利用所述至少一個(gè)存儲(chǔ)陣列中剩 余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,對(duì)于第二隊(duì)列中的數(shù)據(jù)組,被訪 問(wèn)次數(shù)越多,在第二隊(duì)列中越靠前。7. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述系統(tǒng)還包括存儲(chǔ)順序確定模 塊,用于當(dāng)剩余的存活存儲(chǔ)裝置的數(shù)量為兩個(gè)以上時(shí),根據(jù)剩余的各存活存儲(chǔ)裝置在存儲(chǔ) 陣列中的位置,生成存儲(chǔ)裝置恢復(fù)順序; 所述數(shù)據(jù)迀移模塊用于基于第二隊(duì)列先于第一隊(duì)列的順序,按照存儲(chǔ)裝置恢復(fù)順序, 利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。8. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述系統(tǒng)還包括存儲(chǔ)順序確定模 塊,用于當(dāng)失效存儲(chǔ)裝置的數(shù)量為兩個(gè)以上時(shí),根據(jù)與所述失效存儲(chǔ)裝置對(duì)應(yīng)的至少兩個(gè) 可用存儲(chǔ)裝置在存儲(chǔ)陣列中的位置,生成存儲(chǔ)裝置恢復(fù)順序; 所述數(shù)據(jù)迀移模塊用于基于第二隊(duì)列先于第一隊(duì)列的順序,按照存儲(chǔ)裝置恢復(fù)順序, 利用所述至少一個(gè)存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置迀移數(shù)據(jù)組。
【文檔編號(hào)】G06F3/06GK106020739SQ201610547862
【公開日】2016年10月12日
【申請(qǐng)日】2016年7月12日
【發(fā)明人】吳興義
【申請(qǐng)人】樂(lè)視控股(北京)有限公司, 樂(lè)視云計(jì)算有限公司