欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)與流程

文檔序號(hào):12041991閱讀:496來(lái)源:國(guó)知局
基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)與流程
本發(fā)明涉及分布式數(shù)據(jù)存儲(chǔ),更具體地說(shuō),涉及基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)。

背景技術(shù):
網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)在最近幾年一直備受關(guān)注,存儲(chǔ)系統(tǒng)包含不同的類型:如基于P2P分布式存儲(chǔ)系統(tǒng)和基于數(shù)據(jù)中心與存儲(chǔ)區(qū)域網(wǎng)的專用的基礎(chǔ)設(shè)施系統(tǒng)。由于在分布式存儲(chǔ)系統(tǒng)中,經(jīng)常出現(xiàn)存儲(chǔ)節(jié)點(diǎn)失效或者文件傳輸損耗,因此在該網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中必須要有冗余。冗余可以通過(guò)一種簡(jiǎn)單的復(fù)制數(shù)據(jù)來(lái)實(shí)現(xiàn),但是存儲(chǔ)效應(yīng)不高,糾錯(cuò)碼提供一種不同于以往復(fù)制的有效存儲(chǔ)方案。一個(gè)(n,k)MDS(MaximumDistanceSeparable,最大距離可分離)糾錯(cuò)碼需要將一個(gè)原始文件分成k個(gè)大小相等的模塊,并通過(guò)線性編碼生成n個(gè)互不相關(guān)的編碼模塊,由n個(gè)節(jié)點(diǎn)存儲(chǔ)不同的模塊,并滿足MDS屬性(n個(gè)編碼模塊中任意k個(gè)就可重構(gòu)原始文件)。這種編碼技術(shù)在提供有效的網(wǎng)絡(luò)存儲(chǔ)冗余中占有重要的地位,特別適合存儲(chǔ)大的文件以及檔案數(shù)據(jù)備份應(yīng)用。由于節(jié)點(diǎn)失效或者文件損耗,系統(tǒng)的冗余度會(huì)隨著時(shí)間而逐漸喪失,因此需要一種裝備來(lái)保證系統(tǒng)的冗余。文獻(xiàn)[R.RodriguesandB.Liskov,“HighAvailabilityinDHTs:ErasureCodingvs.Replication”,WorkshoponPeer‐to‐PeerSystems(IPTPS)2005.]中提出的EC碼(ErasureCodes,糾錯(cuò)碼),在存儲(chǔ)開(kāi)銷上是比較有效的,然而支持冗余恢復(fù)所需要的通信開(kāi)銷也比較大。請(qǐng)見(jiàn)圖1和圖2,圖1表示只要系統(tǒng)中有效節(jié)點(diǎn)數(shù)d≥k,就可以從現(xiàn)有節(jié)點(diǎn)中獲得原始文件;圖2表示恢復(fù)失效節(jié)點(diǎn)所存儲(chǔ)內(nèi)容的過(guò)程。從圖1、2中可以看出整個(gè)恢復(fù)過(guò)程是:1)首先從系統(tǒng)中的k個(gè)存儲(chǔ)節(jié)點(diǎn)中下載數(shù)據(jù)并重構(gòu)原始文件;2)由原始文件再重新編碼出新的模塊,存儲(chǔ)在新節(jié)點(diǎn)上。該恢復(fù)過(guò)程表明修復(fù)任何一個(gè)失效節(jié)點(diǎn)所需要的網(wǎng)絡(luò)負(fù)載至少為k個(gè)節(jié)點(diǎn)所存儲(chǔ)的內(nèi)容。所以,上述EC碼修復(fù)過(guò)程所需要的通信負(fù)載較高。目前大多采用兩種措施來(lái)彌補(bǔ):1)使用混合策略,要求對(duì)整個(gè)原始文件進(jìn)行一個(gè)額外的備份,使得修復(fù)過(guò)程所需要的網(wǎng)絡(luò)負(fù)載等于所丟失的數(shù)據(jù)量,但是該策略增加了存儲(chǔ)負(fù)載并使得系統(tǒng)復(fù)雜,且節(jié)點(diǎn)負(fù)載不能均衡;2)使用懶修復(fù)(修復(fù)過(guò)程延遲到有若干個(gè)節(jié)點(diǎn)失效后再一同修復(fù))可以有效避免由于臨時(shí)的失效而帶來(lái)的額外修復(fù)負(fù)載,但是延遲修復(fù)可能使得系統(tǒng)易受攻擊,從而系統(tǒng)需要一個(gè)更大的冗余量,另外在網(wǎng)絡(luò)有限資源的使用過(guò)程中可能會(huì)阻止修復(fù)過(guò)程。在現(xiàn)有技術(shù)中,當(dāng)任意一個(gè)模塊所存儲(chǔ)的信息是由兩個(gè)其他模塊的信息異或而得到的情況下,任意兩個(gè)模塊信息就可用來(lái)修復(fù)第三個(gè)模塊,在文獻(xiàn)[A.Duminuco,E.Biersack,“HierarchicalCodes:HowtoMakeErasureCodesAttractiveforPeer-to-PeerStorageSystems”,Peer-to-PeerComputing(P2P),2008.]中提出了一種HC碼(HierarchicalCodes分層碼)。HC碼是一種迭代構(gòu)造,從小的EC碼開(kāi)始逐漸構(gòu)成一個(gè)大的編碼,通過(guò)異或由EC碼構(gòu)造的子模塊而產(chǎn)生。其主要思想是:考慮一個(gè)大小為s×k的文件,將文件分成s個(gè)子群,每個(gè)子群包含k個(gè)未編碼模塊。在每個(gè)子群中使用一個(gè)(n,k)EC碼來(lái)產(chǎn)生n-k個(gè)局部冗余編碼模塊。通過(guò)編碼計(jì)劃進(jìn)一步由所有的s×k個(gè)未編碼模塊來(lái)產(chǎn)生r個(gè)全局冗余編碼模塊。因此形成一個(gè)編碼群,將s×k個(gè)未編碼模塊編碼成s×n+r個(gè)編碼模塊。局部冗余模塊可以用來(lái)修復(fù)子群中節(jié)點(diǎn)的失效,因此只需要訪問(wèn)少于整個(gè)文件大小的模塊就可以進(jìn)行修復(fù);而全局冗余模塊提供進(jìn)一步修復(fù)保證,即當(dāng)一個(gè)子群中失效的模塊太多而不能自修復(fù)時(shí)可通過(guò)全局冗余模塊進(jìn)行修復(fù)。但是,由于HC碼中系統(tǒng)結(jié)構(gòu)不對(duì)稱,使得有些模塊的地位或許比其他模塊地位要高,使得很難做一個(gè)深入的恢復(fù)力分析(影響對(duì)編碼有效性的理解);在實(shí)際系統(tǒng)中如果利用該編碼則需要更復(fù)雜的算法(不管是重構(gòu)還是修復(fù));在HC碼中不同編碼模塊的地位不同,因而修復(fù)丟失的模塊所需要的模塊數(shù)不僅僅取決于丟失的模塊數(shù),還與具體哪些模塊丟失有關(guān);同樣地,重構(gòu)原始文件所需要的模塊數(shù)可能也因不同的丟失模塊而不同。在現(xiàn)有技術(shù)中,專利PCT/CN2012/071177中提出了一種RGC碼(RegeneratingCodes,再生碼),使得修復(fù)一個(gè)丟失的編碼模塊只需要一小部分的數(shù)據(jù)量,而不需要先重構(gòu)整個(gè)文件。RGC碼應(yīng)用線性網(wǎng)絡(luò)編碼技術(shù),通過(guò)NC(NetworkCoding,網(wǎng)絡(luò)編碼)屬性(即最大流最小割)來(lái)改善修復(fù)一個(gè)編碼模塊所需要的開(kāi)銷,從網(wǎng)絡(luò)信息論上可以證明用和丟失模塊相同的數(shù)據(jù)量的網(wǎng)絡(luò)開(kāi)銷就可修復(fù)原丟失模塊。RGC碼主要思想還是利用MDS屬性,當(dāng)一些存儲(chǔ)節(jié)點(diǎn)失效,也就相當(dāng)于存儲(chǔ)數(shù)據(jù)丟失,需要從現(xiàn)有有效節(jié)點(diǎn)中下載信息來(lái)使得丟失的數(shù)據(jù)再生,并存儲(chǔ)在新的節(jié)點(diǎn)上。隨著時(shí)間的推移,很多原始節(jié)點(diǎn)可能都會(huì)失效,一些再生的新節(jié)點(diǎn)可以在自身再重新執(zhí)行再生過(guò)程,繼而生成更多的新節(jié)點(diǎn)。因此再生過(guò)程需要確保兩點(diǎn):1)失效的節(jié)點(diǎn)間是相互獨(dú)立的,再生過(guò)程可以循環(huán)遞推;2)任意k個(gè)節(jié)點(diǎn)就足夠恢復(fù)原始文件。圖3描述了當(dāng)一個(gè)節(jié)點(diǎn)失效后的再生過(guò)程。分布式系統(tǒng)中n個(gè)存儲(chǔ)節(jié)點(diǎn)各自存儲(chǔ)α個(gè)數(shù)據(jù),當(dāng)有一個(gè)節(jié)點(diǎn)失效,新節(jié)點(diǎn)通過(guò)從其他d≥k個(gè)存活節(jié)點(diǎn)中下載數(shù)據(jù)來(lái)再生,每個(gè)節(jié)點(diǎn)的下載量為β,每個(gè)存儲(chǔ)節(jié)點(diǎn)i通過(guò)一對(duì)節(jié)點(diǎn)Xiin,Xiout來(lái)表示,這對(duì)節(jié)點(diǎn)通過(guò)一個(gè)容量為該節(jié)點(diǎn)的存儲(chǔ)量(即α)的邊連接。再生過(guò)程通過(guò)一個(gè)信息流圖描述,Xin從系統(tǒng)中任意d個(gè)可用節(jié)點(diǎn)中各自收集β個(gè)數(shù)據(jù),通過(guò)在Xout中存儲(chǔ)α個(gè)數(shù)據(jù),任何一個(gè)接收者都可以訪問(wèn)Xout。從信源到信宿的最大信息流是由圖中最小割集決定,當(dāng)信宿要重構(gòu)原始文件時(shí),這個(gè)流的大小不能低于原始文件的大小。每個(gè)節(jié)點(diǎn)存儲(chǔ)量α和再生一個(gè)節(jié)點(diǎn)所需要的帶寬γ之間存在一個(gè)折中,因此又引入MBR碼(Minimum-bandwidthRegenerating,最小帶寬再生)和MSR碼(Minimum-storageRegenerating,最小存儲(chǔ)再生)。對(duì)于最小存儲(chǔ)點(diǎn)可以知道每個(gè)節(jié)點(diǎn)至少存儲(chǔ)M/k比特,因此可推出MSR碼中當(dāng)d取最大值即一個(gè)新來(lái)者同時(shí)和所有存活的n-1個(gè)節(jié)點(diǎn)通信時(shí),修復(fù)帶寬γMSR最小即而MBR碼擁有最小修復(fù)帶寬,可以推出當(dāng)d=n-1時(shí),獲得最小修復(fù)負(fù)載對(duì)于節(jié)點(diǎn)失效修復(fù)問(wèn)題,考慮了三種修復(fù)模型:精確修復(fù):失效的模塊需要正確構(gòu)造,恢復(fù)的信息和丟失的一樣(核心技術(shù)為干擾隊(duì)列和NC);功能修復(fù):新產(chǎn)生的模塊可以包含不同于丟失節(jié)點(diǎn)的數(shù)據(jù),只要修復(fù)的系統(tǒng)支持MDS碼屬性(核心技術(shù)為NC);系統(tǒng)部分精確修復(fù):是介于精確修復(fù)和功能修復(fù)之間的一個(gè)混合修復(fù)模型,在這個(gè)混合模型中,對(duì)于系統(tǒng)節(jié)點(diǎn)(存儲(chǔ)未編碼數(shù)據(jù))要求必須精確恢復(fù),即恢復(fù)的信息和失效節(jié)點(diǎn)所存儲(chǔ)的信息一樣,對(duì)于非系統(tǒng)節(jié)點(diǎn)(存儲(chǔ)編碼模塊),則不需要精確修復(fù),只需要功能修復(fù)使得恢復(fù)的信息能夠滿則MDS碼屬性(核心技術(shù)為干擾隊(duì)列和NC)。但是,為了使RGC碼運(yùn)用到實(shí)際的分布式系統(tǒng)中,即使不是最優(yōu)情況也至少需要從k個(gè)節(jié)點(diǎn)下載數(shù)據(jù)才能修復(fù)丟失模塊,因此即使修復(fù)過(guò)程所需要的數(shù)據(jù)傳輸量比較低,RGC碼也需要高的協(xié)議負(fù)載和系統(tǒng)設(shè)計(jì)(NC技術(shù))復(fù)雜度來(lái)實(shí)現(xiàn)。另外RGC碼中未考慮工程解決方法,如懶修復(fù)過(guò)程,因此不能避免臨時(shí)失效所帶來(lái)的修復(fù)負(fù)載。最后基于NC的RGC碼的編解碼實(shí)現(xiàn)所需要的計(jì)算開(kāi)銷比較大,比傳統(tǒng)的EC碼要高一個(gè)階數(shù)。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述修復(fù)數(shù)據(jù)傳輸量較大、系統(tǒng)開(kāi)銷較大、系統(tǒng)較復(fù)雜的缺陷,提供一種修復(fù)數(shù)據(jù)傳輸量小、系統(tǒng)開(kāi)銷較小、系統(tǒng)較簡(jiǎn)單的基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:構(gòu)造一種基于同態(tài)的自修復(fù)碼的編碼方法,包括如下步驟:A)將數(shù)據(jù)量為M的數(shù)據(jù)O用正整數(shù)k分為k份,每份的數(shù)據(jù)量為M/k,即其中,oi是等分?jǐn)?shù)據(jù)O后得到的每份數(shù)據(jù),是以2M/k為階的有限域;B)使所述Oi為多項(xiàng)式的系數(shù),即pi=oi+1,i=0,...,k-1;C)在有限域中任取n個(gè)不同的非零元素值α1,…,αn,代入所述多項(xiàng)式變量,分別計(jì)算每個(gè)值代入后所述多項(xiàng)式的值,得到存儲(chǔ)在各存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù);其中,n≤2M/k-1;D)分別存儲(chǔ)所述得到的編碼數(shù)據(jù)到各存儲(chǔ)節(jié)點(diǎn)。在本發(fā)明所述的基于同態(tài)的自修復(fù)碼的編碼方法中,所述步驟C)中,所述n個(gè)不同非零元素值為所述有限域的生成元的不同階數(shù)。本發(fā)明還涉及一種對(duì)應(yīng)上述編碼方法的、基于同態(tài)的自修復(fù)碼的解碼方法,包括如下步驟:M)取得k個(gè)線性無(wú)關(guān)的編碼數(shù)據(jù),計(jì)算所述k個(gè)編碼數(shù)據(jù)的2k-1的線性組合;其中,k≥2;N)在所述2k-1個(gè)線性組合中任取2k-1+1個(gè),通過(guò)恢復(fù)多項(xiàng)式pi=oi+1,i=0,...,k-1得到數(shù)據(jù)O,O=(o1,…,ok)。本發(fā)明還涉及一種修復(fù)使用上述的編碼方法得到的編碼數(shù)據(jù)的方法,包括如下步驟:I)判斷存儲(chǔ)編碼數(shù)據(jù)的節(jié)點(diǎn)上的編碼數(shù)據(jù)是否失效,如是,執(zhí)行下一步驟;否則,退出;J)判斷存在失效編碼數(shù)據(jù)的節(jié)點(diǎn)是否達(dá)到設(shè)定修復(fù)閾值,如是執(zhí)行下一步驟;否則,退出;K)通過(guò)d個(gè)與所述失效的編碼相關(guān)的、存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)之間的運(yùn)算得到的結(jié)果,修復(fù)所述失效節(jié)點(diǎn)中的數(shù)據(jù)。在本發(fā)明所述的修復(fù)上述編碼數(shù)據(jù)的方法中,所述步驟J)中,系統(tǒng)最大能夠容忍(n-1)/2個(gè)節(jié)點(diǎn)失效而不丟失數(shù)據(jù),因此所述設(shè)定的修復(fù)閾值最大不超過(guò)(n-1)/2,n是節(jié)點(diǎn)個(gè)數(shù),具體還包括:J1)如果閾值設(shè)置為1,表明系統(tǒng)進(jìn)行餓修復(fù)(有失效即進(jìn)行修復(fù));J2)如果閾值設(shè)置為大于1且不超過(guò)(n-1)/2,表明系統(tǒng)進(jìn)行懶修復(fù)(達(dá)到一定失效數(shù)后再修復(fù))。在本發(fā)明所述的修復(fù)上述編碼數(shù)據(jù)的方法中,所述步驟K)中,d值代表修復(fù)一個(gè)失效節(jié)點(diǎn)所下載的節(jié)點(diǎn)數(shù),在本發(fā)明所采用的自修復(fù)碼中d等于2(當(dāng)d=1時(shí)就只是簡(jiǎn)單的復(fù)制編碼),并可通過(guò)依次逐個(gè)修復(fù)或并發(fā)修復(fù)所述失效節(jié)點(diǎn)所丟失的數(shù)據(jù)。在本發(fā)明所述的修復(fù)上述編碼數(shù)據(jù)的方法中,還包括如下步驟:取得分布存儲(chǔ)的編碼數(shù)據(jù)的碼字形式(p(α1),…,p(αn)),并判斷當(dāng)n=2M/k-1時(shí),所述α1,…,αn是否都在集合B中,如是退出,否則,執(zhí)行步驟I);其中,集合B是有限域中的一個(gè)F2基,該基由M/k個(gè)線性無(wú)關(guān)的元素組成,即B={b1,…,bM/k}。在本發(fā)明所述的修復(fù)上述編碼數(shù)據(jù)的方法中,所述步驟K)進(jìn)一步包括如下步驟:K1)確定已失效的編碼存儲(chǔ)數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn);K2)通過(guò)利用有限域中的乘法群的生成元的特性,分解所述失效存儲(chǔ)節(jié)點(diǎn)中表示其存儲(chǔ)編碼數(shù)據(jù)內(nèi)容的多項(xiàng)式為其他存儲(chǔ)節(jié)點(diǎn)編碼數(shù)據(jù)的多項(xiàng)式,找到與所述已失效的編碼存儲(chǔ)數(shù)據(jù)相關(guān)的存儲(chǔ)節(jié)點(diǎn);K3)下載所述相關(guān)節(jié)點(diǎn)的編碼數(shù)據(jù)并按照步驟K2)中的多項(xiàng)式運(yùn)算得到所述已失效的編碼數(shù)據(jù)。本發(fā)明還涉及一種基于同態(tài)的自修復(fù)碼的分布式存儲(chǔ)系統(tǒng),包括多個(gè)存儲(chǔ)節(jié)點(diǎn),還包括至少一個(gè)編碼模塊、至少一個(gè)解碼模塊和至少一個(gè)數(shù)據(jù)修復(fù)模塊;所述編碼模塊用于將數(shù)據(jù)轉(zhuǎn)換為多個(gè)基于同態(tài)的自修復(fù)編碼數(shù)據(jù)并分別存儲(chǔ)在不同的存儲(chǔ)節(jié)點(diǎn)上;所述解碼模塊用于從所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中取得編碼數(shù)據(jù)并恢復(fù)數(shù)據(jù);所述數(shù)據(jù)修復(fù)模塊用于修復(fù)所述失效節(jié)點(diǎn)所丟失的編碼數(shù)據(jù);所述數(shù)據(jù)修復(fù)模塊還包括:編碼數(shù)據(jù)可修復(fù)判斷單元:用于通過(guò)取得分布存儲(chǔ)的編碼數(shù)據(jù)的碼字形式(p(α1),…,p(αn)),并判斷當(dāng)n=2M/k-1時(shí),所述α1,…,αn是否都在集合B中,來(lái)判斷所述數(shù)據(jù)編碼是否可修復(fù);編碼數(shù)據(jù)失效判斷單元:用于判斷在存儲(chǔ)所述數(shù)據(jù)編碼的多個(gè)節(jié)點(diǎn)上是否存在失效的數(shù)據(jù)編碼;失效編碼數(shù)據(jù)量判斷單元:用于判斷失效的數(shù)據(jù)編碼是否達(dá)到設(shè)定的修復(fù)閾值;失效編碼數(shù)據(jù)修復(fù)單元:用于在失效的數(shù)據(jù)編碼超過(guò)達(dá)到修復(fù)閾值時(shí),通過(guò)d個(gè)與所述失效的編碼相關(guān)的、存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)之間的運(yùn)算得到的結(jié)果,修復(fù)所述失效節(jié)點(diǎn)中的編碼數(shù)據(jù)。在本發(fā)明所述的基于同態(tài)的自修復(fù)碼的分布式存儲(chǔ)系統(tǒng)中,所述編碼模塊進(jìn)一步包括:數(shù)據(jù)等分單元:用于將數(shù)據(jù)量為M的數(shù)據(jù)O用正整數(shù)k分為k份,每份的數(shù)據(jù)量為M/k,即其中,oi是等分?jǐn)?shù)據(jù)O后得到的每份數(shù)據(jù),是以2M/k為階的有限域;多項(xiàng)式系數(shù)設(shè)置單元:用于使所述Oi為多項(xiàng)式的系數(shù),即pi=oi+1,i=0,...,k-1;編碼數(shù)據(jù)取得單元:用于在有限域中任取n個(gè)不同的非零元素值α1,…,αn,代入所述多項(xiàng)式變量,分別計(jì)算每個(gè)值代入后所述多項(xiàng)式的值,得到存儲(chǔ)在各存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù);其中,n≤2M/k-1;編碼數(shù)據(jù)存儲(chǔ)單元:用于將所述得到的編碼數(shù)據(jù)存儲(chǔ)到各存儲(chǔ)節(jié)點(diǎn);所述解碼模塊進(jìn)一步包括:編碼數(shù)據(jù)取得單元:用于由不同的存儲(chǔ)節(jié)點(diǎn)取得k個(gè)線性無(wú)關(guān)的編碼數(shù)據(jù),計(jì)算所述k個(gè)編碼數(shù)據(jù)的2k-1的線性組合;其中,k≥2;多項(xiàng)式恢復(fù)及數(shù)據(jù)取得單元:用于在所述2k-1個(gè)線性組合中任取2k-1+1個(gè),通過(guò)恢復(fù)多項(xiàng)式pi=oi+1,i=0,...,k-1得到數(shù)據(jù)O,O=(o1,…,ok)。實(shí)施本發(fā)明的基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng),具有以下有益效果:由于采用在有限域中進(jìn)行數(shù)據(jù)編碼,使得各存儲(chǔ)節(jié)點(diǎn)之間存儲(chǔ)的編碼數(shù)據(jù)之間存在一定的相關(guān),當(dāng)一個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)失效時(shí),只要與其相關(guān)的多個(gè)或多對(duì)存儲(chǔ)節(jié)點(diǎn)中有一對(duì)未失效,即可恢復(fù)數(shù)據(jù)。由于在大多數(shù)情況下只需一對(duì)相關(guān)存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)即可恢復(fù)失效數(shù)據(jù),其傳輸?shù)臄?shù)據(jù)量較小、系統(tǒng)也不復(fù)雜,同時(shí),由于在相關(guān)編碼數(shù)據(jù)之間采用異或運(yùn)算恢復(fù)失效的數(shù)據(jù),系統(tǒng)的開(kāi)銷也較小。附圖說(shuō)明圖1是現(xiàn)有技術(shù)中EC碼中采用的數(shù)據(jù)下載過(guò)程示意圖;圖2是現(xiàn)有技術(shù)中EC碼中采用的數(shù)據(jù)恢復(fù)過(guò)程示意圖;圖3是現(xiàn)有技術(shù)中RGC碼中采用的數(shù)據(jù)恢復(fù)過(guò)程示意圖;圖4是本發(fā)明基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)實(shí)施例中編碼數(shù)據(jù)存儲(chǔ)方法的流程圖;圖5是所述實(shí)施例中取得編碼數(shù)據(jù)方法的流程圖;圖6是所述實(shí)施例中修復(fù)編碼數(shù)據(jù)方法的流程圖;圖7是所述實(shí)施例中判斷編碼數(shù)據(jù)是否可修復(fù)的流程圖;圖8是所述實(shí)施例中存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的編碼數(shù)據(jù)以及修復(fù)示意圖;圖9是所述實(shí)施例中編碼與現(xiàn)有技術(shù)中各種編碼的靜態(tài)恢復(fù)力的比較示意圖;圖10是所述實(shí)施例中不同閥值對(duì)應(yīng)每個(gè)失效數(shù)據(jù)模塊的修復(fù)負(fù)載示意圖;圖11是所述實(shí)施例中基于同態(tài)的自修復(fù)碼的存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步說(shuō)明。如圖4所示,在本發(fā)明的基于同態(tài)的自修復(fù)碼的編碼、解碼和數(shù)據(jù)修復(fù)方法及其存儲(chǔ)系統(tǒng)實(shí)施例中,對(duì)于數(shù)據(jù)進(jìn)行編碼的步驟包括:步驟S401將一個(gè)大小為M的文件O分為相等的k份,即在本實(shí)施例中,其采取的技術(shù)方案是為網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)設(shè)計(jì)明確的最優(yōu)碼,所需要的設(shè)計(jì)裝備類似于傳統(tǒng)的EC碼。其整個(gè)思路為:定義Fq為q階有限域,為除零元素以外的有限域。如果q=2m,元素x∈Fq可以通過(guò)一個(gè)m維向量x=(x1,…,xm)表示,其中xi∈F2,i=1,…,m,來(lái)自于一個(gè)固定的基域,也就是其中w為F2上m階不可約首一多項(xiàng)式的一個(gè)本原根,{1,w,…,wm-1}構(gòu)成Fq上一組F2基。有限域F2中只有元素0和1以及模2上的加法和乘法。在q階有限域上的一個(gè)線性(n,k,d)SRC(Self‐repairingCodes,自修復(fù)碼)碼是一個(gè)線性映射c:,將一個(gè)k維的向量s映射為一個(gè)n維向量c(s)。碼字c(s)的集合C,構(gòu)成該編碼。第三個(gè)參數(shù)d表示碼字的最小距離:d=minx≠y∈Cd(x,y),其中漢明距離d(x,y)表示系數(shù)x和y位置不同的數(shù)。這個(gè)最小距離表示SRC碼所能容忍的最大節(jié)點(diǎn)失效數(shù),通過(guò)MDS碼可知最大容忍度為n‐k。數(shù)據(jù)的線性編碼可以通過(guò)任意的多項(xiàng)式來(lái)實(shí)現(xiàn),當(dāng)選擇有限域F2時(shí),所有操作都是在模2上進(jìn)行的。令其中m≥1,那么可以推出(a+b)2=a2+2ab+b2=a2+b2,因?yàn)?ab≡0mod2,得出因此在Fq(q=2m)上,一個(gè)線性化的多項(xiàng)式p(X)可以表示成:一個(gè)弱線性化的多項(xiàng)式p(X)可以表示成:通過(guò)公式(1)可以推出當(dāng)有下述公式:對(duì)于公式(2)可進(jìn)一步推廣,一個(gè)給定的多項(xiàng)式s=2l,1≤l≤m(當(dāng)l=m時(shí),p(X)是一個(gè)線性化多項(xiàng)式),有下述公式:其中u,v∈Fs(3)所以,在本步驟中,首先是選擇一個(gè)正整數(shù)k,并用其將數(shù)據(jù)O分為k等份,每一份的數(shù)據(jù)量為M/k,其中,M是數(shù)據(jù)O的全部數(shù)據(jù)量;這樣,數(shù)據(jù)O就可以表示為其中,是以2M/k為階的有限域,得到的每個(gè)等份oi是有限域的元素。步驟S402將k個(gè)分組編碼為多項(xiàng)式p(X)上的k個(gè)系數(shù),即pi=oi+1,i=0,...,K-1。在本步驟中,將上述k個(gè)分組(即被等分得到的部分)設(shè)置為上述多項(xiàng)式p(X)的k個(gè)系數(shù),即pi=oi+1,i=0,...,k-1。步驟S403由多項(xiàng)式p(X)上n個(gè)不同的非零值α1,…,αn來(lái)獲得n個(gè)編碼模塊,即n個(gè)碼字(p(α1),…,p(αn)),每個(gè)編碼模塊由不同的存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)。在本步驟中,取中n個(gè)不同的非零值(為了使各個(gè)碼字不同,必須滿足公式(4):n≤2M/k-1.(4))作為多項(xiàng)式p(X)的變量分別代入上述多項(xiàng)式,由于在上述步驟中已經(jīng)將該多項(xiàng)式的系數(shù)用k個(gè)分組代替,所以,當(dāng)上述n個(gè)非零值分別代入多項(xiàng)式時(shí),可以分別得到由上述k個(gè)分組之中的部分或全部表示的多項(xiàng)式的值。代入一個(gè)非零值就得到一個(gè)這樣的多項(xiàng)式的值,而一個(gè)這樣的值就表示一個(gè)編碼數(shù)據(jù)(或編碼模塊),該編碼數(shù)據(jù)存儲(chǔ)在一個(gè)存儲(chǔ)節(jié)點(diǎn)上;代入不同的非零值得到的編碼數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)節(jié)點(diǎn)上。圖5是下載用上述方法編碼而存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)中的數(shù)據(jù)的方法,在圖5中,包括如下步驟:步驟S501由k個(gè)線性無(wú)關(guān)的模塊,計(jì)算2k-1個(gè)線性組合,再由線性組合來(lái)評(píng)估多項(xiàng)式p值。在本步驟中,由各存儲(chǔ)節(jié)點(diǎn)下載其存儲(chǔ)的編碼數(shù)據(jù),這些編碼數(shù)據(jù)共下載k個(gè),且這些編碼數(shù)據(jù)線性無(wú)關(guān);也就是說(shuō),取得k個(gè)線性無(wú)關(guān)的編碼數(shù)據(jù),并計(jì)算所述k個(gè)編碼數(shù)據(jù)的2k-1的線性組合;其中,k≥2;步驟S502由于多項(xiàng)式系數(shù)是在有限域上,由拉格朗日內(nèi)插法可知只要2k-1+1點(diǎn)(因?yàn)楫?dāng)k≥2時(shí),2k-1≥2k-1+1)就可以恢復(fù)唯一的多項(xiàng)式p和數(shù)據(jù)O,需要滿足公式(5):2k-1+1≤2M/k-1.(5)。在本步驟中,通過(guò)在所述2k-1個(gè)線性組合中任取2k-1+1個(gè),利用這些數(shù)據(jù)恢復(fù)多項(xiàng)式pi=oi+1,i=0,...,k-1得到數(shù)據(jù)O,O=(o1,…,oi)。將選取的2k-1+1個(gè)線性組合分別(請(qǐng)?zhí)钊肴绾斡蛇@些線性組合得到數(shù)據(jù)的具體做法)得到所述多項(xiàng)式;在本步驟中,但需要強(qiáng)調(diào)的是:為了實(shí)現(xiàn)只要很少的編碼模塊(一般為2個(gè))就可修復(fù)個(gè)別丟失的模塊,并且支持在低于一半的節(jié)點(diǎn)失效情況下可自修復(fù),丟失了MDS屬性,即不是任意的k個(gè)模塊就可恢復(fù)原始文件(雖然存在大量可能的k個(gè)組合)。對(duì)于任意一個(gè)整數(shù)k,是在有限域上編碼。為了獲得有限域上精確的計(jì)算量,在一些情況下,通過(guò)使用一個(gè)乘法群上的生成元w來(lái)衡量將會(huì)非常方便。生成元具有屬性,并且沒(méi)有更小的滿足該等式的整數(shù)w。例如,取一個(gè)大小M=12比特的文件O=(o1,…,o12),令k=3,得出M/k=4,滿足公式(5),即22+1=5≤24-1=15=nmax。文件O被分成3部分,令w為乘法群的生成元,因此有w4=w+1,w15=1,而用于編碼的多項(xiàng)式為圖6是在本實(shí)施例中恢復(fù)失效編碼數(shù)據(jù)的方法流程圖,如圖6所示,失效的編碼數(shù)據(jù)的恢復(fù)包括如下步驟:步驟S601編碼數(shù)據(jù)可恢復(fù)?在本步驟中判斷編碼數(shù)據(jù)(編碼模塊)是否可以恢復(fù),如是,執(zhí)行下一步驟,否則,執(zhí)行步驟S605;至于如何判斷編碼數(shù)據(jù)可以恢復(fù),在稍后有較為詳細(xì)的描述。步驟S602存在失效的編碼數(shù)據(jù)?在本步驟中,判斷存儲(chǔ)在各存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)中是否存在失效的編碼數(shù)據(jù),如是,執(zhí)行下一步驟,否則,執(zhí)行步驟S605;步驟S603失效的編碼數(shù)據(jù)達(dá)到設(shè)定修復(fù)閾值?在本步驟中,判斷失效的編碼數(shù)據(jù)數(shù)量是否達(dá)到設(shè)定值,如是,執(zhí)行下一步驟,否則,執(zhí)行步驟S605。值得一提的是,在本實(shí)施例中,由于系統(tǒng)最大能夠容忍(n-1)/2個(gè)節(jié)點(diǎn)失效,因此上述修復(fù)閾值不能超過(guò)(n-1)/2;在本實(shí)施例中,當(dāng)該值為1時(shí),對(duì)編碼數(shù)據(jù)的修復(fù)是餓修復(fù);當(dāng)該值大于1時(shí),對(duì)編碼數(shù)據(jù)的修復(fù)是懶修復(fù)。步驟S604修復(fù)失效的編碼數(shù)據(jù):在本步驟中,對(duì)已發(fā)現(xiàn)的失效編碼數(shù)據(jù)進(jìn)行修復(fù)。具體而言,在本實(shí)施例中上述編碼的例子中,n維碼字可以通過(guò)評(píng)估(計(jì)算)p(X)在中n個(gè)不同元素而獲得,其中可得n≤15=nmax。當(dāng)n=4時(shí),如果在wi,i=0,1,2,3中評(píng)估p(X),那么4個(gè)編碼模塊p(1),p(w),p(w2),p(w3)是線性無(wú)關(guān)的,由稍后所述的編碼數(shù)據(jù)修復(fù)判斷可知該編碼不存在自修復(fù)的可能。而當(dāng)n=7時(shí),獲得7個(gè)編碼模塊(p(1),p(w),p(w2),p(w4),p(w5),p(w8),p(w10)),由w4=w+1遞推,可知從而得出節(jié)點(diǎn)1所存儲(chǔ)的內(nèi)容為(o4+o8+o12,o1+o4+o5+o8+o9+o12,o2+o6+o10,o3+o7+o11),其他節(jié)點(diǎn)所存儲(chǔ)的內(nèi)容可通過(guò)相同方法可以獲得。圖8中列出了不同節(jié)點(diǎn)所存儲(chǔ)的內(nèi)容,當(dāng)存儲(chǔ)p(w10)的節(jié)點(diǎn)7失效,由于p(w10)=p(w2+w+1)=p(w2)+p(w+1)=p(w2+w)+p(1)=p(w2+1)+p(w),新節(jié)點(diǎn)可以通過(guò)節(jié)點(diǎn)3和4、節(jié)點(diǎn)1和5或節(jié)點(diǎn)2和6恢復(fù)節(jié)點(diǎn)7所存儲(chǔ)的內(nèi)容。對(duì)于其他節(jié)點(diǎn)失效的情況下也可通過(guò)同樣的方式進(jìn)行自修復(fù)。當(dāng)節(jié)點(diǎn)6和7同時(shí)失效,仍然可以通過(guò)兩種不同方式進(jìn)行修復(fù),如:第一個(gè)新節(jié)點(diǎn)通過(guò)節(jié)點(diǎn)3和4修復(fù)節(jié)點(diǎn)7,第二個(gè)新節(jié)點(diǎn)通過(guò)節(jié)點(diǎn)3和1修復(fù)節(jié)點(diǎn)6。步驟S605退出:在本步驟中,退出本次數(shù)據(jù)修復(fù)。圖7示出了在本實(shí)施例中判斷編碼數(shù)據(jù)是否可以修復(fù)的具體流程,在圖7中,包括如下步驟:步驟S701由編碼過(guò)程構(gòu)造n個(gè)碼字形式(p(α1),…,p(αn)),每個(gè)系數(shù)都在中,且k<n≤2M/k-1:在本步驟中,通過(guò)上述編碼過(guò)程構(gòu)造的碼字形式(p(α1),…,p(αn)),確定上述碼字形式中每個(gè)系數(shù)所在有限域且k<n≤2M/k-1。定義n可以取得的最大值為nmax,即nmax=2M/k-1,即可確定編碼過(guò)程中得到的碼字形式。步驟S702中包含一個(gè)F2基,該基由M/k個(gè)線性無(wú)關(guān)的元素組成B={b1,…,bM/k},故得到集合B:在本步驟中,由上述有限域中的F2基確定集合B。步驟S703n=2M/k-1,將αi,i=1,…,n這些基元素看成在F2上的線性組合:在本步驟中,若n取最大值,即n=2M/k-1,αi,i=1,…,n可以看成這些基元素在F2上的線性組合。步驟S704:由知一個(gè)碼字可以由其他碼字線性組合獲得:在本步驟中,由于從公式(2)可以得出這意味著一個(gè)編碼模塊可以通過(guò)其他編碼模塊的一個(gè)線性組合獲得。從計(jì)算復(fù)雜性上來(lái)說(shuō),一個(gè)丟失模塊的修復(fù)只需要一些異或操作(在一個(gè)好的情況下,只需要兩個(gè)模塊就可重構(gòu)一個(gè)丟失模塊;在壞的情況下則需要k-1個(gè))。步驟S705α1,…,αn均在B集合中?在本步驟中,判斷α1,…,αn是否均在B集合中,如是,執(zhí)行步驟S707;否則執(zhí)行步驟S706.。步驟S706(p(α1),…,p(αn))碼字失效可以自修復(fù):在本步驟中,上述α1,…,αn不都在集合B中,則(p(α1),…,p(αn))碼字可由其他碼字的線性組合獲得,因此可進(jìn)行自修復(fù)。步驟S707編碼數(shù)據(jù)不具有自修復(fù)屬性:在本步驟中,由于α1,…,αn相互獨(dú)立,任意碼字都不能由其他碼字的線性組合獲得,該編碼就不具有自修復(fù)屬性。在本實(shí)施例中上述編碼的例子中,當(dāng)一個(gè)節(jié)點(diǎn)想獲得原文件時(shí),需要下載k=3個(gè)線性無(wú)關(guān)的分組,也就是p(w),p(w2),p(w3),基于上述分組可以產(chǎn)生線性組合p(aw+bw2+cw3),由a,b,c∈{0,1}知存在23-1=7種非零線性組合,根據(jù)譯碼裝置S502得出其中的任意22+1=5種線性組合就可以恢復(fù)多項(xiàng)式p,進(jìn)而獲得原文件O。從上面分析可以看出,對(duì)于給定的k值,n可以取k+1到nmax中不同值,同時(shí)也可取不同的{α1,…,αn}來(lái)定義一個(gè)SRC碼。選擇集合αi來(lái)形成一個(gè)大小為的子空間,這個(gè)選擇可以構(gòu)成一個(gè)特定的對(duì)稱結(jié)構(gòu)的編碼,也就是類似一種異或結(jié)構(gòu)。然而需要說(shuō)明的是,盡管編碼模塊可以通過(guò)相互之間的異或獲得,但是每個(gè)模塊所獲得的關(guān)于所有其他不同模塊的信息,實(shí)際上不是通過(guò)一個(gè)簡(jiǎn)單的數(shù)據(jù)本身的異或。此外,在本實(shí)施例中,從靜態(tài)恢復(fù)力上進(jìn)行分析(態(tài)恢復(fù)力主要是指一個(gè)文件一旦存入系統(tǒng),在沒(méi)有另外的修復(fù)甚至系統(tǒng)中某些個(gè)別的存儲(chǔ)節(jié)點(diǎn)失效時(shí),該文件一直有效的概率),令pnode為任意給定節(jié)點(diǎn)有效的概率,由于系統(tǒng)中沒(méi)有兩個(gè)不同的模塊存儲(chǔ)在相同節(jié)點(diǎn)上,因此可以推出任意節(jié)點(diǎn)所存儲(chǔ)的模塊的有效性為pnode。上面所描述的(n,k)HSRC碼(HomomorphicSelf‐RepairingCodes,同態(tài)自修復(fù)碼),主要將原始k個(gè)模塊通過(guò)線性多項(xiàng)式編碼成n個(gè)互不相關(guān)的模塊每一個(gè)編碼模塊pi都由一個(gè)節(jié)點(diǎn)來(lái)存儲(chǔ),因此系統(tǒng)中有n個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)長(zhǎng)度為M/k的二進(jìn)制向量,也可以看成一個(gè)n×M/k的二進(jìn)制矩陣A,即在本實(shí)施例中,當(dāng)n=4時(shí),可以得到一個(gè)4維的單位矩陣A=I4,而當(dāng)n=7時(shí),矩陣為因此一個(gè)節(jié)點(diǎn)失效可等效于矩陣A丟失了一個(gè)相應(yīng)的行,如果多個(gè)節(jié)點(diǎn)(如n‐x,表示有效節(jié)點(diǎn)只有x個(gè))失效,可以通過(guò)一個(gè)x×M/k的子矩陣Ax來(lái)代替A。對(duì)于x個(gè)可用的編碼模塊的任意給定的線性組合,如果我們獲得矩陣Ax中至少k個(gè)線性無(wú)關(guān)的行,那么仍可以重構(gòu)原始文件。也可以理解為如果矩陣Ax的秩不小于k則原始文件可以被重構(gòu)。對(duì)于d>1,考慮一個(gè)沒(méi)有全零行的(2d-1)×d的二進(jìn)制矩陣,可推出該矩陣的秩為d。如果以概率1‐pnode來(lái)隨機(jī)均勻地移去矩陣的某些行,那么將得到一個(gè)x×d的子矩陣,其中x是二項(xiàng)式分布的。令R(x,d,r)為矩陣(2d-1)×d中秩為r的子矩陣x×d數(shù),其中包含所有可能的行的排列。根據(jù)矩陣秩的特點(diǎn)(不能大于最小維數(shù)),當(dāng)?shù)扔谧钚【S數(shù)時(shí)表示任意行之間都是線性無(wú)關(guān)的(即不能相互表示),當(dāng)小于最小維數(shù)時(shí)可以降低行數(shù)進(jìn)行遞推分析:秩為r‐1的一個(gè)(x‐1)×d子矩陣有2d-1-(2r-1-1)=2d-2r-1個(gè),秩為r的一個(gè)(x‐1)×d子矩陣有2r-1-(x-1)=2r-x,因此可以得到公式(7):令ρ(x,d,r)為在子矩陣x×d中,秩為r的個(gè)數(shù)占所有可能的秩的比例。由于在2d-1中選擇x行有種可能,而對(duì)于每一個(gè)x有x!中排列方式,因此可以得出:通過(guò)公式(7)和(8)可以推出一個(gè)本實(shí)施例中的(n,k)HSRC碼恢復(fù)原始文件的概率pobj為:而一個(gè)(n,k)EC碼成功恢復(fù)原始文件的概率為圖9將HSRC碼靜態(tài)恢復(fù)力和EC碼進(jìn)行比較,可以看出對(duì)于相同的存儲(chǔ)負(fù)載M/k,SRC碼的靜態(tài)修復(fù)力只比EC碼低一點(diǎn),另外對(duì)于一個(gè)固定的k值,隨著n值的增加,SRC碼的靜態(tài)修復(fù)力逐漸接近EC碼。對(duì)于比較低的存儲(chǔ)開(kāi)銷,在相對(duì)比較高的pnode情況下,恢復(fù)原始文件的概率仍為1。這主要是因?yàn)樵谌魏未鎯?chǔ)系統(tǒng)中,都有一個(gè)修復(fù)操作來(lái)補(bǔ)充丟失的模塊,使得系統(tǒng)的pnode值比較高。若為了實(shí)現(xiàn)和EC碼相同的靜態(tài)恢復(fù)力,SRC碼需要在編碼過(guò)程中引入額外的冗余,但是通過(guò)比較可以知道這個(gè)冗余負(fù)載是可接受的。節(jié)點(diǎn)可用性的概率pnode可以通過(guò)下面兩種情況增大:要么執(zhí)行一個(gè)懶修復(fù),也就是只有當(dāng)系統(tǒng)的冗余度降低到一個(gè)確定閾值時(shí)才執(zhí)行修復(fù);要么在執(zhí)行修復(fù)過(guò)程前,有多個(gè)相關(guān)聯(lián)的模塊失效(這種情況需要額外分析,一般用餓修復(fù))。由于在修復(fù)過(guò)程未考慮相關(guān)聯(lián)的模塊的失效,可能會(huì)實(shí)施一個(gè)餓修復(fù),即只要任何一個(gè)編碼模塊失效,就立即進(jìn)行修復(fù)。由于HSRC碼的子空間架構(gòu),使得HSRC碼中一個(gè)丟失的模塊可以通過(guò)兩個(gè)其他可用的模塊來(lái)進(jìn)行修復(fù)。在本實(shí)施例中,SRC碼的分集s定義為線性相關(guān)的分組對(duì)(可用于重構(gòu)分組對(duì)中一個(gè)確定失效的模塊)的個(gè)數(shù)??梢钥闯霰緦?shí)施例中s=3,假設(shè)p(w)丟失,三個(gè)固定的分組對(duì)(即(p(1),p(w4));(p(w2),p(w5));(p(w8),p(w10)))中的任意一個(gè)就可用來(lái)修復(fù)p(w),從圖8中也可以看出當(dāng)節(jié)點(diǎn)7或節(jié)點(diǎn)6失效都有三個(gè)固定的分組對(duì)來(lái)修復(fù)。對(duì)于一個(gè)確定的d,令n=2d-1,多項(xiàng)式p(x)通過(guò)來(lái)評(píng)估,其中αi∈{0,1},(α0,…,αd-1)取除全0以外所有可能的2d個(gè)值。假設(shè)對(duì)于每一個(gè)α,都可以構(gòu)造分組對(duì)(α+β,α),其中β取除0和α以外所有可能的2d-2個(gè)值,可以得出共有2d-2(相當(dāng)于n‐1)個(gè)分組對(duì),但由于分組對(duì)(α+β,α)與(α,α+β)等效,因此可以得出引理1:一個(gè)(n,k)HSRC碼的分集s為(n‐1)/2。考慮任意丟失模塊α,如果系統(tǒng)中有(n‐1)/2個(gè)模塊不可用,在最壞情況下可以假設(shè)這(n‐1)/2個(gè)模塊屬于同一分組對(duì)。然而只要系統(tǒng)中有另外一個(gè)分組可用,就可以和其他分組構(gòu)成一對(duì),因而可以證明系統(tǒng)中至少有一個(gè)可用的分組對(duì)來(lái)重構(gòu)丟失模塊α。因此推出引理2:對(duì)于一個(gè)HSRC碼,如果系統(tǒng)中至少有(n+1)/2個(gè)模塊可用,那么對(duì)于任何失效的模塊都存在一些可用的分組對(duì),并可以從這些可用的分組對(duì)中恢復(fù)丟失的數(shù)據(jù)。x是在一個(gè)給定時(shí)間內(nèi)系統(tǒng)中可用的分組數(shù),對(duì)于任意的丟失模塊,都可以通過(guò)相互組合的分組對(duì)進(jìn)行修復(fù)。當(dāng)x≥(n+1)/2時(shí)只要兩次下載就可以修復(fù);否則需要進(jìn)行一個(gè)概率性分析,由于一個(gè)確定分組對(duì)的節(jié)點(diǎn)都可用的概率為(x/n)2,因此只要兩個(gè)分組就可以重構(gòu)丟失的分組的概率為p2=1-(1-(x/n)2)s。如果兩個(gè)分組不能修復(fù)一個(gè)確定的模塊,則假設(shè)可以通過(guò)更多的分組來(lái)修復(fù)丟失的模塊,一個(gè)松的上限值可以通過(guò)考慮如果2個(gè)分組不可以修復(fù)丟失的模塊,可以通過(guò)下載k個(gè)分組來(lái)進(jìn)行修復(fù),這種情況發(fā)生的概率為1-p2=(1-(x/n)2)s。假設(shè)修復(fù)一個(gè)丟失模塊所需要下載的分組數(shù)為Dx,而n個(gè)分組中只有x個(gè)可用,Dx值可以由公式(10)決定:通過(guò)上述分析知所有丟失的模塊可以通過(guò)并發(fā)的或者順序的兩種方式修復(fù)。如果是按照并發(fā)的方式,那么下載所需要的分組的總負(fù)載Dprl為:Dprl=(n-x)Dx;如果是按照順序的方式,則下載所需要的分組的總負(fù)載Dseq為:為了比較不同修復(fù)方案的負(fù)載(使用SRC碼的懶修復(fù)(包括并發(fā)、順序兩種方式)、餓修復(fù)以及使用傳統(tǒng)EC碼的懶修復(fù)),考慮懶修復(fù)的一個(gè)閾值:在n個(gè)存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)中,只有當(dāng)可用的節(jié)點(diǎn)數(shù)x=xth時(shí)才開(kāi)始修復(fù)。如果在SRC碼中使用餓修復(fù),那么需要下載的負(fù)載為Degr=2(n-xth)??梢酝瞥鲈赟RC碼中,當(dāng)懶修復(fù)的閾值xth≥(n+1)/2時(shí),餓修復(fù)所使用的總共帶寬等于懶修復(fù)(包括并發(fā)、順序兩種方式)所消耗的帶寬。在EC碼設(shè)計(jì)中,當(dāng)使用懶修復(fù)時(shí)(閾值xth),假設(shè)一個(gè)節(jié)點(diǎn)下載足夠的模塊(一般為k)來(lái)構(gòu)造原始文件,然后再在本地構(gòu)造一個(gè)新的編碼模塊來(lái)存儲(chǔ),并且也為其他失效節(jié)點(diǎn)構(gòu)造n-xth-1個(gè)不同編碼模塊,將這些模塊分別存儲(chǔ)在其他不同新節(jié)點(diǎn)上,從而總共網(wǎng)絡(luò)負(fù)載為:DEClazy=k+n-xth-1;當(dāng)使用餓修復(fù)時(shí),則對(duì)于每次修復(fù)都需要從k個(gè)節(jié)點(diǎn)下載數(shù)據(jù),顯然這比懶修復(fù)所需要的負(fù)載要大,因此不作考慮。如果少于一半的分組不可用,由引理2可知下載兩個(gè)模塊就可以修復(fù)一個(gè)丟失的模塊;當(dāng)更多的模塊丟失,考慮一個(gè)和EC碼相同的修復(fù)策略,也就是先下載k個(gè)模塊來(lái)重構(gòu)整個(gè)文件,然后再在本地分別構(gòu)造所有丟失模塊。這說(shuō)明SRC碼降低修復(fù)帶寬的條件是只有系統(tǒng)中沒(méi)有丟失太多的模塊。定義一個(gè)臨界值xc,即EC碼的懶修復(fù)所需要的總帶寬和SRC碼相同。當(dāng)xth≥(n+1)/2,由上面分析知餓修復(fù)所需要的帶寬等于懶修復(fù),而且順序修復(fù)和并發(fā)修復(fù)的帶寬相同,即Degr=Dprl=Dseq,因此可以由下式推出xc:圖10比較了SRC碼與EC碼在懶修復(fù)過(guò)程中修復(fù)每個(gè)丟失模塊所需要的平均網(wǎng)絡(luò)負(fù)載。SRC碼主要考慮并發(fā)和順序兩種懶修復(fù)方案,從圖中可以看出當(dāng)xth≥(n+1)/2=16時(shí),這兩種懶修復(fù)方案所需要的負(fù)載相同且恒為2,而EC碼的懶修復(fù)負(fù)載(只有順序)隨著閾值xth的增加不斷增大,并且當(dāng)xth≥xc=n+1-k=24時(shí),SRC碼修復(fù)負(fù)載就比EC碼低。從上面的分析可以得出當(dāng)懶修復(fù)中的閾值xth比臨界值xc要小時(shí),EC碼修復(fù)所需要的總帶寬比SRC碼低,但是對(duì)于大部分存儲(chǔ)網(wǎng)絡(luò)來(lái)說(shuō)xc一般比較低,并且EC碼一般使用懶修復(fù)。由于懶修復(fù)在節(jié)點(diǎn)失效后需要等待的時(shí)間太長(zhǎng),使得在另外更多的節(jié)點(diǎn)失效條件下系統(tǒng)易受攻擊(如非法節(jié)點(diǎn)假冒),因此在修復(fù)之前等待若干節(jié)點(diǎn)失效是沒(méi)必要的;另外同時(shí)修復(fù)這么多失效模塊會(huì)引入過(guò)重的網(wǎng)絡(luò)帶寬負(fù)載。而使用SRC碼可以靈活的根據(jù)實(shí)際情況決定選擇懶修復(fù)(通常含有比較高的閾值xth)還是餓修復(fù)方案,每一個(gè)丟失模塊所修復(fù)的開(kāi)銷在一個(gè)大的范圍內(nèi)(即xth≥(n+1)/2)保持不變。這種靈活性使得SRC碼特別適合P2P系統(tǒng),也就是可以避免不需要的類似于暫時(shí)下線的修復(fù),另外也沒(méi)有EC碼中懶修復(fù)的三個(gè)缺點(diǎn)即:1)必須選擇一個(gè)閾值從而使得系統(tǒng)易受攻擊;2)必須選擇一個(gè)大的n值來(lái)處理類似于這種的攻擊;3)引入過(guò)重的網(wǎng)絡(luò)帶寬負(fù)載。SRC碼在基于編碼的分布式存儲(chǔ)系統(tǒng)中是非常有效的,可以大幅度降低修復(fù)過(guò)程所使用的帶寬。對(duì)于系統(tǒng)中不同參數(shù)的選擇,EC碼中的懶修復(fù)可能在總共帶寬消耗上要優(yōu)于SRC碼,但是EC碼限制了系統(tǒng)的實(shí)際應(yīng)用范圍。SRC碼另外一個(gè)優(yōu)點(diǎn)是可以同時(shí)獨(dú)立并發(fā)的修復(fù)不同的丟失模塊。如果修復(fù)不夠快,可能在修復(fù)過(guò)程中會(huì)有新的節(jié)點(diǎn)失效,從而使得性能退化,更嚴(yán)重的后果可能是會(huì)丟失所存儲(chǔ)的文件。假設(shè)在存儲(chǔ)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的上下鏈路容量在每個(gè)單位時(shí)間內(nèi)都為1個(gè)分組,并且網(wǎng)絡(luò)總的帶寬比較大,這種假設(shè)在不同的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)環(huán)境中是合理的。對(duì)于實(shí)施例1,n值取nmax,也就是使用一個(gè)(15,3)HSRC碼。由于類似于懶修復(fù)或相互關(guān)聯(lián)的失效等原因,我們可以假設(shè)p(1),…,p(w6)這7個(gè)模塊失效,而p(w7),…,p(w15)這些模塊可用,下面列出了修復(fù)每個(gè)丟失模塊可能的分組對(duì)。一個(gè)可能的計(jì)劃(在不同的節(jié)點(diǎn)上下載可用的模塊來(lái)重構(gòu)丟失的模塊)如下:在第一個(gè)時(shí)隙,想要構(gòu)造各自的p(1),…,p(w6)中的一個(gè)模塊的7個(gè)節(jié)點(diǎn)分別獨(dú)立下載p(w11),p(w10),p(w12),空,p(w13),p(w7),p(w8);在第二個(gè)時(shí)隙分別下載p(w12),p(w8),p(w7),p(w10),p(w11),p(w13),p(w14)(可以看出除了p(w3)所有丟失模塊都可修復(fù));在第三個(gè)時(shí)隙,下載p(w12)來(lái)構(gòu)造p(w3)。從這例子可以看出,在兩個(gè)時(shí)隙內(nèi)所下載的模塊就可以重構(gòu)丟失模塊中的6個(gè),最后一個(gè)模塊可以通過(guò)下一時(shí)隙來(lái)修復(fù),這主要是取決于任意節(jié)點(diǎn)在每個(gè)單位時(shí)間內(nèi)只能上傳或下載一個(gè)模塊的限制。如果系統(tǒng)內(nèi)存在一個(gè)關(guān)于原始文件的完整副本(如EC碼中的混合策略),那么修復(fù)7個(gè)丟失的模塊需要7個(gè)時(shí)隙;如果用EC碼則至少需要9個(gè)時(shí)隙。因此可以證明SRC碼可以允許失效的模塊快速修復(fù)。在本實(shí)施例中,SRC碼和HC碼不同的是:在HC碼中不同的編碼模塊的地位不同,因而修復(fù)丟失的模塊所需要的模塊數(shù)不僅僅取決于丟失了多少模塊數(shù),還與具體哪些模塊被丟失有關(guān),同樣重構(gòu)原始文件所需要的模塊數(shù)可能也因不同的丟失模塊而不同,而SRC碼修復(fù)過(guò)程與具體丟失模塊無(wú)關(guān)。RGC碼將網(wǎng)絡(luò)編碼應(yīng)用到一個(gè)(n,k)糾錯(cuò)碼,并基于NC最小割最大流定理來(lái)支持最小修復(fù)負(fù)載,RGC碼中要重構(gòu)任意一個(gè)模塊,至少需要和其他k個(gè)節(jié)點(diǎn)通信,當(dāng)只有一個(gè)模塊丟失,所需要的最小通信量是與所有活動(dòng)的n-1個(gè)節(jié)點(diǎn)通信,而SRC碼只要和2個(gè)活動(dòng)節(jié)點(diǎn)通信就可修復(fù)丟失模塊。SRC碼屬性可以理解為修復(fù)丟失模塊所需要的通信負(fù)載低,并且由于修復(fù)可并發(fā)執(zhí)行使得修復(fù)所需要的時(shí)延低。這些有利的屬性使SRC碼特別適合應(yīng)用于實(shí)際的分布式存儲(chǔ)系統(tǒng)。在分布式存儲(chǔ)系統(tǒng)中,HSRC碼提供了一種有效的修復(fù)丟失冗余的方案,具體包括:1)不管是實(shí)施餓修復(fù)還是懶修復(fù)所需要的修復(fù)帶寬都比較低;2)丟失模塊從一個(gè)給定數(shù)的模塊中修復(fù),該給定數(shù)只于丟失了多少模塊有關(guān),而與具體哪些模塊丟失無(wú)關(guān),因此可以并發(fā)獨(dú)立地修復(fù)多個(gè)不同的模塊,使得修復(fù)過(guò)程比較快,降低修復(fù)時(shí)延。本實(shí)施例還涉及一種實(shí)現(xiàn)上述基于同態(tài)的自修復(fù)碼的編解碼、數(shù)據(jù)修復(fù)方法的存儲(chǔ)系統(tǒng),如圖11所示,該存儲(chǔ)系統(tǒng)包括多個(gè)存儲(chǔ)節(jié)點(diǎn)1101,還包括至少一個(gè)編碼模塊1102、至少一個(gè)解碼模塊1103和至少一個(gè)數(shù)據(jù)修復(fù)模塊1104;其中,編碼模塊1102用于將數(shù)據(jù)轉(zhuǎn)換為多個(gè)基于同態(tài)的自修復(fù)編碼數(shù)據(jù)并分別存儲(chǔ)在不同的存儲(chǔ)節(jié)點(diǎn)1101上;解碼模塊1103用于由上述多個(gè)存儲(chǔ)節(jié)點(diǎn)1101中取得編碼數(shù)據(jù)并恢復(fù)數(shù)據(jù);數(shù)據(jù)修復(fù)模塊1104用于修復(fù)存儲(chǔ)節(jié)點(diǎn)1101上失效的編碼數(shù)據(jù);在本實(shí)施例中,上述編碼模塊1102、解碼模塊1103和數(shù)據(jù)修復(fù)模塊1104是軟件功能模塊,可以位于相同或不同的物理載體上;當(dāng)然,在一些情況下,上述各模塊也可以是使用特定硬件(通常是專用的集成電路芯片)構(gòu)成的,同樣可以分布在相同或不同的物理載體上。在本實(shí)施中,編碼模塊1102進(jìn)一步包括:數(shù)據(jù)等分單元1121、多項(xiàng)式系數(shù)設(shè)置單元1122、編碼數(shù)據(jù)取得單元1123和編碼數(shù)據(jù)存儲(chǔ)單元1124;其中,數(shù)據(jù)等分單元1121用于將數(shù)據(jù)量為M的數(shù)據(jù)O用正整數(shù)k分為k份,每份的數(shù)據(jù)量為M/k,即其中,oi是等分?jǐn)?shù)據(jù)O后得到的每份數(shù)據(jù),是以2M/k為階的有限域;多項(xiàng)式系數(shù)設(shè)置單元1122用于使上述Oi為多項(xiàng)式的系數(shù),即pi=oi+1,i=0,...,k-1;編碼數(shù)據(jù)取得單元1123用于在有限域中任取n個(gè)不同的非零元素值α1,…,αn,代入上述多項(xiàng)式變量,分別計(jì)算每個(gè)值代入后上述多項(xiàng)式的值,得到存儲(chǔ)在各存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù);其中,n≤2M/k-1;編碼數(shù)據(jù)存儲(chǔ)單元1124用于分別存儲(chǔ)上述得到的編碼數(shù)據(jù)到各存儲(chǔ)節(jié)點(diǎn)。解碼模塊1103包括編碼數(shù)據(jù)取得單元1131和多項(xiàng)式恢復(fù)及數(shù)據(jù)取得單元1132;編碼數(shù)據(jù)取得單元1131用于由不同的存儲(chǔ)節(jié)點(diǎn)取得k個(gè)線性無(wú)關(guān)的編碼數(shù)據(jù),計(jì)算上述k個(gè)編碼數(shù)據(jù)的2k-1的線性組合;其中,k≥2;多項(xiàng)式恢復(fù)及數(shù)據(jù)取得單元1132用于在上述2k-1個(gè)線性組合中任取2k-1+1個(gè),通過(guò)恢復(fù)多項(xiàng)式pi=oi+1,i=0,...,k-1得到數(shù)據(jù)O,O=(o1,…,ok)。在本實(shí)施例中,數(shù)據(jù)修復(fù)模塊1104包括:編碼數(shù)據(jù)可修復(fù)判斷單元1141、編碼數(shù)據(jù)失效判斷單元1142、失效編碼數(shù)據(jù)量判斷單元1143和失效編碼數(shù)據(jù)修復(fù)單元1144;其中,編碼數(shù)據(jù)可修復(fù)判斷單元1141用于通過(guò)取得分布存儲(chǔ)的編碼數(shù)據(jù)的碼字形式(p(α1),…,p(αn)),并判斷當(dāng)n=2M/k-1時(shí),所述α1,…,αn是否都在集合B中,來(lái)判斷數(shù)據(jù)編碼是否可修復(fù);編碼數(shù)據(jù)失效判斷單元1142用于判斷在存儲(chǔ)上述數(shù)據(jù)編碼的多個(gè)節(jié)點(diǎn)上是否存在失效的數(shù)據(jù)編碼;失效編碼數(shù)據(jù)量判斷單元1143用于判斷上述失效的數(shù)據(jù)編碼是否達(dá)到設(shè)定的修復(fù)閾值;失效編碼數(shù)據(jù)修復(fù)單元1144用于在失效的數(shù)據(jù)編碼達(dá)到設(shè)定閾值時(shí),通過(guò)d個(gè)與所述失效的編碼相關(guān)的、存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)的編碼數(shù)據(jù)之間的運(yùn)算得到的結(jié)果,修復(fù)所述失效節(jié)點(diǎn)中的編碼數(shù)據(jù)。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
仲巴县| 石狮市| 襄樊市| 利川市| 准格尔旗| 临澧县| 保靖县| 临桂县| 定南县| 阆中市| 九台市| 唐海县| 伽师县| 阿坝县| 巴彦县| 连州市| 西乌珠穆沁旗| 丁青县| 五寨县| 鄄城县| 揭阳市| 同江市| 股票| 乌鲁木齐县| 突泉县| 临澧县| 永靖县| 海丰县| 安阳县| 迭部县| 邳州市| 伊吾县| 通榆县| 郓城县| 丹江口市| 武汉市| 金溪县| 三原县| 宜宾县| 清涧县| 侯马市|