本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法及系統(tǒng)。
背景技術(shù):
:分布式存儲(chǔ)系統(tǒng),是將數(shù)據(jù)按照一定規(guī)則切分并打散存儲(chǔ)在多臺(tái)獨(dú)立通用存儲(chǔ)存儲(chǔ)模塊上。傳統(tǒng)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)采用集中的存儲(chǔ)存儲(chǔ)模塊存放所有數(shù)據(jù),存儲(chǔ)存儲(chǔ)模塊成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點(diǎn),不能滿足大規(guī)模存儲(chǔ)應(yīng)用的需要,而分布式存儲(chǔ)系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)存儲(chǔ)模塊分擔(dān)存儲(chǔ)負(fù)荷,利用位置存儲(chǔ)模塊定位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。存儲(chǔ)集群的成千上萬(wàn)臺(tái)存儲(chǔ)模塊可以將數(shù)據(jù)充分冗余,從而可以顯著提高數(shù)據(jù)的安全性。在存儲(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)題。現(xiàn)有技術(shù)中,通過(guò)數(shù)據(jù)冗余來(lái)處理磁盤失效的問(wèn)題,通常是每一份數(shù)據(jù)都可以存儲(chǔ)于三塊甚至更多塊磁盤上,當(dāng)某塊磁盤失效時(shí),可以依靠剩下的兩個(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ǔ)存儲(chǔ)模塊和磁盤,同批次的磁盤往往具備類似的硬件規(guī)格和驅(qū)動(dòng)固件,即可能出現(xiàn)同時(shí)失效的情況,在這種情況下,某一塊磁盤開(kāi)始失效之時(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è)副本所在的磁盤的失效而完全丟失。傳統(tǒng)的數(shù)據(jù)恢復(fù)機(jī)制缺乏對(duì)磁盤中對(duì)象的統(tǒng)一管理,當(dāng)三個(gè)副本中有兩個(gè)副本損壞時(shí),在插入替換壞盤的新盤之后,因?yàn)閿?shù)據(jù)都是打散存儲(chǔ)的,所以兩塊新盤都需要向集群中的多塊磁盤發(fā)起讀請(qǐng)求,要求這些磁盤向其發(fā)送數(shù)據(jù),這樣會(huì)帶來(lái)兩個(gè)問(wèn)題,首先是這種基于拉數(shù)據(jù)的方式會(huì)帶來(lái)同一份數(shù)據(jù)的兩次獨(dú)立的讀請(qǐng)求,比如損壞的磁盤d0和d1都向磁盤d2拉數(shù)據(jù),因?yàn)閐0和d1拉數(shù)據(jù)時(shí),并不存在彼此之間的協(xié)調(diào),也就是說(shuō)它們進(jìn)行數(shù)據(jù)遷移的進(jìn)度并不一致,這就意味著它們是獨(dú)立拉數(shù)據(jù)時(shí),磁盤d2需要分別應(yīng)對(duì)兩次讀請(qǐng)求,并兩次從磁盤中讀取數(shù)據(jù)并發(fā)送給磁盤d0和磁盤d1,這樣無(wú)疑會(huì)減慢數(shù)據(jù)遷移的速度,從而威脅數(shù)據(jù)安全;其次是,這種基于拉數(shù)據(jù)的方式不利于數(shù)據(jù)遷移進(jìn)度和數(shù)據(jù)降級(jí)程度的管理和查詢,即我們并不能夠準(zhǔn)確的獲知每個(gè)文件的降級(jí)程度,比如文件file1,可能已經(jīng)被磁盤d0或者磁盤d1之一拉過(guò)去,或者已經(jīng)被兩者拉過(guò)去了,或者一個(gè)來(lái)拉的也沒(méi)有,即降級(jí)程度存在3種可能。綜合上述內(nèi)容,亟需設(shè)計(jì)出一種當(dāng)進(jìn)行數(shù)據(jù)恢復(fù)時(shí)能夠提高數(shù)據(jù)遷移效率,并且便于管理和查詢數(shù)據(jù)遷移進(jìn)度和數(shù)據(jù)降級(jí)程度的數(shù)據(jù)存儲(chǔ)方法。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中當(dāng)存在多塊磁盤損壞并進(jìn)行數(shù)據(jù)恢復(fù)時(shí)面臨的多次讀取問(wèn)題,和解決數(shù)據(jù)遷移進(jìn)度和數(shù)據(jù)降級(jí)程度不方便管理的問(wèn)題。本發(fā)明實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)方法,包括:將每組數(shù)據(jù)組均存儲(chǔ)到集群中的N個(gè)存儲(chǔ)裝置上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用存儲(chǔ)裝置列表;監(jiān)控各存儲(chǔ)陣列的工作狀態(tài);當(dāng)一個(gè)存儲(chǔ)陣列存在失效存儲(chǔ)裝置時(shí),基于該存儲(chǔ)陣列所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列;確定數(shù)據(jù)遷移序列中的各數(shù)據(jù)組的降級(jí)程度,所述各數(shù)據(jù)組的降級(jí)程度與承載各數(shù)據(jù)組的失效存儲(chǔ)裝置的數(shù)量成正比;當(dāng)所述失效存儲(chǔ)裝置包括多個(gè)先后失效的存儲(chǔ)裝置時(shí),從所述可用存儲(chǔ)裝置列表中按先后順序依次選擇可用存儲(chǔ)裝置以替換所述多個(gè)失效存儲(chǔ)裝置;按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組。本發(fā)明實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括:映射模塊,將每組數(shù)據(jù)組均存儲(chǔ)到集群中的N個(gè)存儲(chǔ)裝置上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用存儲(chǔ)裝置列表;監(jiān)控模塊,監(jiān)控各存儲(chǔ)陣列的工作狀態(tài);遷移序列生成模塊,當(dāng)一個(gè)存儲(chǔ)陣列存在失效存儲(chǔ)裝置時(shí),基于該存儲(chǔ)陣列所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列;降級(jí)程度確定模塊,用于確定數(shù)據(jù)遷移序列中的各數(shù)據(jù)組的降級(jí)程度,所述各數(shù)據(jù)組的降級(jí)程度與承載各數(shù)據(jù)組的失效存儲(chǔ)裝置的數(shù)量成正比;存儲(chǔ)修復(fù)模塊,當(dāng)所述失效存儲(chǔ)裝置包括多個(gè)先后失效的存儲(chǔ)裝置時(shí),從所述可用存儲(chǔ)裝置列表中按先后順序依次選擇可用存儲(chǔ)裝置以替換所述多個(gè)失效存儲(chǔ)裝置;數(shù)據(jù)遷移模塊,按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組。本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法及系統(tǒng),當(dāng)系統(tǒng)中存在多個(gè)存儲(chǔ)裝置失效并進(jìn)行數(shù)據(jù)遷移時(shí),按照數(shù)據(jù)遷移序列向替換后的可用存儲(chǔ)裝置遷移數(shù)據(jù)組,避免同一數(shù)據(jù)組的多次讀取問(wèn)題,便于統(tǒng)一管理數(shù)據(jù)遷移進(jìn)度和數(shù)據(jù)降級(jí)程度,從而顯著提高數(shù)據(jù)安全性和可用性。附圖說(shuō)明為了更清楚地說(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)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本公開(kāi)數(shù)據(jù)存儲(chǔ)方法的流程圖;圖2為本公開(kāi)的數(shù)據(jù)存儲(chǔ)方法的一個(gè)實(shí)施例的流程圖;圖3為本公開(kāi)的數(shù)據(jù)存儲(chǔ)方法的另一個(gè)實(shí)施例的流程圖;圖4為本公開(kāi)數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;圖5為本公開(kāi)實(shí)施例的一種數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。根據(jù)本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)方法,如圖1所示,包括:將每組數(shù)據(jù)組均存儲(chǔ)到集群中的N個(gè)存儲(chǔ)裝置上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用存儲(chǔ)裝置列表;監(jiān)控各存儲(chǔ)陣列的工作狀態(tài);當(dāng)一個(gè)存儲(chǔ)陣列存在失效存儲(chǔ)裝置時(shí),基于該存儲(chǔ)陣列所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列;確定數(shù)據(jù)遷移序列中的各數(shù)據(jù)組的降級(jí)程度,所述各數(shù)據(jù)組的降級(jí)程度與承載各數(shù)據(jù)組的失效存儲(chǔ)裝置的數(shù)量成正比;當(dāng)所述失效存儲(chǔ)裝置包括多個(gè)先后失效的存儲(chǔ)裝置時(shí),從所述可用存儲(chǔ)裝置列表中按先后順序依次選擇可用存儲(chǔ)裝置以替換所述多個(gè)失效存儲(chǔ)裝置;按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組。對(duì)于具有N個(gè)副本的各數(shù)據(jù)組而言:當(dāng)各數(shù)據(jù)組所對(duì)應(yīng)的存儲(chǔ)陣列中沒(méi)有存儲(chǔ)裝置失效,則各數(shù)據(jù)組的降級(jí)程度為0,此時(shí)數(shù)據(jù)是安全的;當(dāng)各數(shù)據(jù)組所對(duì)應(yīng)的存儲(chǔ)陣列中有一個(gè)存儲(chǔ)裝置失效,則降級(jí)程度為-1,此時(shí)數(shù)據(jù)組丟失的概率較低;當(dāng)各數(shù)據(jù)組所對(duì)應(yīng)的存儲(chǔ)陣列中有兩個(gè)存儲(chǔ)裝置失效,則降級(jí)程度為-2,此時(shí)數(shù)據(jù)組僅剩下(N-2)個(gè)副本,需要優(yōu)先向新磁盤進(jìn)行遷移;當(dāng)各數(shù)據(jù)組所對(duì)應(yīng)的存儲(chǔ)陣列中有N個(gè)存儲(chǔ)裝置失效,則降級(jí)程度為-N,此時(shí)數(shù)據(jù)組已經(jīng)丟失。在一些可選的實(shí)施例中,存儲(chǔ)陣列中存儲(chǔ)裝置的位置是有順序的,一方面,在存儲(chǔ)陣列中位置靠前的存儲(chǔ)裝置負(fù)責(zé)接收寫入的數(shù)據(jù)組,并轉(zhuǎn)發(fā)給其所在存儲(chǔ)陣列中剩余的存儲(chǔ)裝置,另一方面,當(dāng)存在失效存儲(chǔ)裝置時(shí),利用位置靠前的存儲(chǔ)裝置向新的存儲(chǔ)裝置進(jìn)行數(shù)據(jù)組遷移。在一些可選的實(shí)施例中,存儲(chǔ)裝置可以是各式存儲(chǔ)器,如RAM、ROM等,也可以是磁盤或軟盤等其他能夠存儲(chǔ)數(shù)據(jù)的存儲(chǔ)介質(zhì)。在一些可選的實(shí)施例中,在每個(gè)存儲(chǔ)裝置上承載至少一組數(shù)據(jù)組,以便提高存儲(chǔ)裝置的利用率,降低存儲(chǔ)成本。在一些可選的實(shí)施例中,可用存儲(chǔ)裝置列表中既包括已經(jīng)使用但還有足夠的空間去承載其他數(shù)據(jù)組的存儲(chǔ)裝置,又包括沒(méi)有被使用的存儲(chǔ)裝置。在一些可選的實(shí)施例中,監(jiān)控各存儲(chǔ)陣列的工作狀態(tài)為監(jiān)控各存儲(chǔ)陣列中的各存儲(chǔ)裝置是否失效,如可以通過(guò)不斷地對(duì)磁盤進(jìn)行讀寫操作來(lái)監(jiān)控其是否失效,也可以通過(guò)每隔20s對(duì)磁盤進(jìn)行一次讀寫操作,還可以利用現(xiàn)有技術(shù)中的監(jiān)控工具如smartmontools來(lái)監(jiān)控磁盤是否失效。在一些可選的實(shí)施例中,如圖2所示,所述失效存儲(chǔ)裝置包括第一失效存儲(chǔ)裝置和第二失效存儲(chǔ)裝置,并且第一失效存儲(chǔ)裝置的失效時(shí)間先于第二失效存儲(chǔ)裝置的失效時(shí)間,按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組包括:當(dāng)利用第一可用存儲(chǔ)裝置對(duì)第一失效存儲(chǔ)裝置替換完成時(shí),利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的第一可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組,隨著數(shù)據(jù)組的遷移,基于所述數(shù)據(jù)遷移序列生成逐漸減少的第一遷移隊(duì)列;當(dāng)利用第二可用存儲(chǔ)裝置對(duì)第二失效存儲(chǔ)裝置替換完成時(shí),若此時(shí)第一遷移隊(duì)列不為空且第一遷移隊(duì)列中的各數(shù)據(jù)組的降級(jí)程度相同,則利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置同時(shí)向第一可用存儲(chǔ)裝置和第二可用存儲(chǔ)裝置按照第一遷移隊(duì)列遷移數(shù)據(jù)組;當(dāng)按照第一遷移隊(duì)列完成數(shù)據(jù)組遷移后,基于所述數(shù)據(jù)遷移序列和所述第一遷移隊(duì)列生成用于向所述第二可用存儲(chǔ)裝置遷移的第二遷移隊(duì)列;利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向第二可用存儲(chǔ)裝置按照第二遷移隊(duì)列遷移數(shù)據(jù)組。下面以如表1和表2所示的一個(gè)實(shí)施例說(shuō)明本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法。將每組數(shù)據(jù)組均存儲(chǔ)到集群中的3個(gè)磁盤上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用磁盤列表,所述映射列表中的部分列表如下表1所示,所述可用磁盤列表中的部分列表如下表2所示,表1:數(shù)據(jù)組存儲(chǔ)陣列dg1、dg2、dg3、dg4、dg5(d4,d666,d77)表2:可用磁盤列表d110d20d77在本實(shí)施例中,“dg+常數(shù)”用于標(biāo)記不同的數(shù)據(jù)組,“d+常數(shù)”用于標(biāo)記不同的磁盤,本公開(kāi)在此方面沒(méi)有限制。以數(shù)據(jù)組dg1為例說(shuō)明數(shù)據(jù)組的降級(jí)程度:當(dāng)存儲(chǔ)陣列(d4,d666,d77)中沒(méi)有磁盤失效,則數(shù)據(jù)組dg1的降級(jí)程度為0,此時(shí)數(shù)據(jù)是安全的;當(dāng)磁盤d4失效時(shí),則降級(jí)程度為-1,此時(shí)數(shù)據(jù)組丟失的概率較低;當(dāng)磁盤d4和磁盤d666失效時(shí),則降級(jí)程度為-2,此時(shí)數(shù)據(jù)組僅剩下1個(gè)副本;當(dāng)磁盤d4、磁盤d666和磁盤d77都失效時(shí),則降級(jí)程度為-3,此時(shí)數(shù)據(jù)組dg1已經(jīng)丟失。當(dāng)存儲(chǔ)陣列(d4,d666,d77)中磁盤d4失效時(shí),基于該存儲(chǔ)陣列所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列Q0={dg1、dg2、dg3、dg4、dg5},此時(shí)各數(shù)據(jù)組的降級(jí)程度分別為-1;從可用磁盤列表中選擇可用磁盤d110替換磁盤d4;利用存儲(chǔ)陣列中剩余的存活磁盤d666向替換后的可用磁盤d110按照數(shù)據(jù)遷移序列Q0遷移數(shù)據(jù)組,隨著數(shù)據(jù)組的遷移,基于數(shù)據(jù)遷移序列Q0生成逐漸減少的第一遷移隊(duì)列Q1,即將遷移完成的數(shù)據(jù)組從數(shù)據(jù)遷移序列Q0中刪除,剩余的待遷移的數(shù)據(jù)組組成第一遷移隊(duì)列Q1;利用存儲(chǔ)陣列中剩余的存活磁盤d666向替換后的可用磁盤d110按照數(shù)據(jù)遷移序列Q0遷移數(shù)據(jù)組期間,磁盤d77也失效了,此時(shí)數(shù)據(jù)組dg1和數(shù)據(jù)組dg2已經(jīng)遷移到磁盤d110中,則第一遷移隊(duì)列Q1={dg3、dg4、dg5},此時(shí)各數(shù)據(jù)租的降級(jí)程度分別為-2。從可用磁盤列表中選擇可用磁盤d20替換磁盤d77;利用存儲(chǔ)陣列中剩余的存活磁盤d666同時(shí)向磁盤d110和磁盤d20按照第一遷移隊(duì)列Q1遷移數(shù)據(jù)組;當(dāng)按照第一遷移隊(duì)列Q1完成數(shù)據(jù)組遷移后,基于數(shù)據(jù)遷移序列Q0和第一遷移隊(duì)列Q1生成用于向磁盤d20遷移的第二遷移隊(duì)列Q2,,Q2,={dg1、dg2},各數(shù)據(jù)組的降級(jí)程度為-1;利用存儲(chǔ)陣列中剩余的存活磁盤d666向磁盤d20按照第二遷移隊(duì)列Q2遷移數(shù)據(jù)組。在上述實(shí)施例中,一方面,數(shù)據(jù)組dg3、數(shù)據(jù)組dg4和數(shù)據(jù)組dg5只進(jìn)行了一次讀取操作,有利于提高數(shù)據(jù)遷移效率;另一方面,第一遷移隊(duì)列Q1中的各數(shù)據(jù)組的降級(jí)程度為-2,第二遷移隊(duì)列Q2中的各數(shù)據(jù)組的降級(jí)程度為-1,優(yōu)先遷移第一遷移隊(duì)列Q1中的各數(shù)據(jù)組降低了數(shù)據(jù)丟失的概率,有利于保障數(shù)據(jù)的安全。而且,當(dāng)用戶需要查詢某一組數(shù)據(jù)組的降級(jí)程度時(shí),如果該數(shù)據(jù)組在第一遷移隊(duì)列Q1中,則該數(shù)據(jù)組的降級(jí)程度為-2,如果該數(shù)據(jù)組在第二遷移隊(duì)列Q2中,則該數(shù)據(jù)組的降級(jí)程度為-1,如果該數(shù)據(jù)組不在任何一個(gè)隊(duì)列中,則該數(shù)據(jù)組降級(jí)程度為0,說(shuō)明該數(shù)據(jù)組已經(jīng)完成遷移。在一些可選的實(shí)施例中,如圖3所示,所述失效存儲(chǔ)裝置包括第一失效存儲(chǔ)裝置和第二失效存儲(chǔ)裝置,所述第一失效存儲(chǔ)裝置的失效時(shí)間先于第二失效存儲(chǔ)裝置的失效時(shí)間,按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組包括:當(dāng)利用第一可用存儲(chǔ)裝置對(duì)第一失效存儲(chǔ)裝置替換完成時(shí),利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的第一可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組,隨著數(shù)據(jù)組的遷移,基于所述數(shù)據(jù)遷移序列生成逐漸減少的第一遷移隊(duì)列;當(dāng)利用第二可用存儲(chǔ)裝置對(duì)第二失效存儲(chǔ)裝置替換完成時(shí),若此時(shí)第一遷移隊(duì)列不為空且第一遷移隊(duì)列中的各數(shù)據(jù)組的降級(jí)程度不同,則按照降級(jí)程度的高低生成第二遷移隊(duì)列和第三遷移隊(duì)列,第二遷移隊(duì)列中的數(shù)據(jù)組的降低程度高于第三遷移隊(duì)列中的數(shù)據(jù)組的降級(jí)程度,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置同時(shí)向第一可用存儲(chǔ)裝置和第二可用存儲(chǔ)裝置按照第二遷移隊(duì)列遷移數(shù)據(jù)組;當(dāng)按照第三遷移隊(duì)列完成數(shù)據(jù)組遷移后,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向第一可用存儲(chǔ)裝置按照第三遷移隊(duì)列遷移數(shù)據(jù)組。下面以如表3和表4所示的另一個(gè)實(shí)施例說(shuō)明本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法。將每組數(shù)據(jù)組均存儲(chǔ)到集群中的3個(gè)磁盤上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用磁盤列表,所述映射列表中的部分列表如下表3所示,所述可用磁盤列表中的部分列表如下表4所示,表3:數(shù)據(jù)組存儲(chǔ)陣列dg1、dg2、dg3、dg4、dg5(d4,d666,d77)dg6、dg7、dg8(d4,d55,d13)表4:可用磁盤列表d110d20d77d8在本實(shí)施例中,“dg+常數(shù)”用于標(biāo)記不同的數(shù)據(jù)組,“d+常數(shù)”用于標(biāo)記不同的磁盤,本公開(kāi)在此方面沒(méi)有限制。當(dāng)磁盤d4失效時(shí),基于存儲(chǔ)陣列(d4,d666,d77)和(d4,d55,d666)所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列Q0={dg1、dg2、dg3、dg4、dg5、dg6、dg7、dg8},此時(shí)各數(shù)據(jù)組的降級(jí)程度分別為-1;從可用磁盤列表中選擇可用磁盤d110替換磁盤d4;利用磁盤d666和磁盤d55向替換后的可用磁盤d110按照數(shù)據(jù)遷移序列Q0遷移數(shù)據(jù)組,隨著數(shù)據(jù)組的遷移,基于數(shù)據(jù)遷移序列Q0生成逐漸減少的第一遷移隊(duì)列Q1,即將遷移完成的數(shù)據(jù)組從數(shù)據(jù)遷移序列Q0中刪除,剩余的待遷移的數(shù)據(jù)組組成第一遷移隊(duì)列Q1;利用磁盤d666向替換后的可用磁盤d110按照數(shù)據(jù)遷移序列Q0遷移數(shù)據(jù)組期間,磁盤d13也失效了,此時(shí)數(shù)據(jù)組dg1和數(shù)據(jù)組dg2已經(jīng)遷移到磁盤d110中,則第一遷移隊(duì)列Q1={dg3、dg4、dg5、dg6、dg7、dg8},此時(shí),數(shù)據(jù)組dg3、數(shù)據(jù)組dg4和數(shù)據(jù)組dg5的降級(jí)程度分別為-1,數(shù)據(jù)組dg6、數(shù)據(jù)組dg7和數(shù)據(jù)組dg8的降級(jí)程度分別為-2,生成第二遷移隊(duì)列Q2={dg6、dg7、dg8},生成第三遷移隊(duì)列Q3={dg3、dg4、dg5}。從可用磁盤列表中選擇可用磁盤d20替換磁盤d13;利用磁盤d55同時(shí)向磁盤d110和磁盤d20按照第二遷移隊(duì)列Q2遷移數(shù)據(jù)組;當(dāng)按照第二遷移隊(duì)列Q2完成數(shù)據(jù)組遷移后,利用磁盤d666向磁盤d110按照第三遷移隊(duì)列Q3遷移數(shù)據(jù)組。根據(jù)本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)系統(tǒng),如圖4所示,包括:映射模塊100,將每組數(shù)據(jù)組均存儲(chǔ)到集群中的N個(gè)存儲(chǔ)裝置上,以形成數(shù)據(jù)組對(duì)應(yīng)存儲(chǔ)陣列的映射列表和集群中的可用存儲(chǔ)裝置列表;監(jiān)控模塊200,監(jiān)控各存儲(chǔ)陣列的工作狀態(tài);遷移序列生成模塊300,當(dāng)一個(gè)存儲(chǔ)陣列存在失效存儲(chǔ)裝置時(shí),基于該存儲(chǔ)陣列所對(duì)應(yīng)的數(shù)據(jù)組生成數(shù)據(jù)遷移序列;降級(jí)程度確定模塊400,用于確定數(shù)據(jù)遷移序列中的各數(shù)據(jù)組的降級(jí)程度,所述各數(shù)據(jù)組的降級(jí)程度與承載各數(shù)據(jù)組的失效存儲(chǔ)裝置的數(shù)量成正比;存儲(chǔ)修復(fù)模塊500,當(dāng)所述失效存儲(chǔ)裝置包括多個(gè)先后失效的存儲(chǔ)裝置時(shí),從所述可用存儲(chǔ)裝置列表中按先后順序依次選擇可用存儲(chǔ)裝置以替換所述多個(gè)失效存儲(chǔ)裝置;數(shù)據(jù)遷移模塊600,按照替換完成的先后順序,利用所述存儲(chǔ)陣列中剩余的存活存儲(chǔ)裝置向替換后的可用存儲(chǔ)裝置按照數(shù)據(jù)遷移序列遷移數(shù)據(jù)組。該數(shù)據(jù)存儲(chǔ)系統(tǒng)用于執(zhí)行上述數(shù)據(jù)存儲(chǔ)方法,并能達(dá)到與數(shù)據(jù)存儲(chǔ)方法相同的技術(shù)效果。圖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可以包括:處理器(processor)1210、通信接口(CommunicationsInterface)1220、存儲(chǔ)器(memory)1230、以及通信總線1240。其中:處理器1210、通信接口1220、以及存儲(chǔ)器1230通過(guò)通信總線1240完成相互間的通信。通信接口1220,用于與比如客戶端等的網(wǎng)元通信。處理器1210,用于執(zhí)行程序1232,具體可以執(zhí)行上述方法實(shí)施例中的相關(guān)步驟。具體地,程序1232可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。處理器1210可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成實(shí)施本申請(qǐng)實(shí)施例的一個(gè)或多個(gè)集成電路。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),存儲(chǔ)模塊,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。當(dāng)前第1頁(yè)1 2 3