基于禁忌搜索的分片復(fù)制碼最優(yōu)冗余率編碼矩陣構(gòu)造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)存儲技術(shù)領(lǐng)域,涉及一種基于禁忌搜索的分片復(fù)制碼 (Fractional Repetition Code)最優(yōu)冗余率編碼矩陣構(gòu)造方法,解決現(xiàn)有分片復(fù)制碼編碼 矩陣構(gòu)造方法構(gòu)造的編碼矩陣存儲效率較低、構(gòu)造適用參數(shù)范圍較小的困難,并提高構(gòu)造 速度,可以用于分布式存儲系統(tǒng)的冗余構(gòu)造。
【背景技術(shù)】
[0002] 計(jì)算機(jī)存儲系統(tǒng)冗余技術(shù)是利用存儲系統(tǒng)的并聯(lián)存儲模型來提高系統(tǒng)數(shù)據(jù)可靠 性和可用性的技術(shù)。傳統(tǒng)的冗余技術(shù)一般使用兩種方法:數(shù)據(jù)備份和糾刪碼技術(shù)。采用數(shù) 據(jù)備份的存儲系統(tǒng)修復(fù)丟失數(shù)據(jù)速度較快但需使用大量冗余存儲空間,造成了存儲資源的 浪費(fèi)。而采用糾刪碼的存儲系統(tǒng)占用冗余存儲空間較小但恢復(fù)數(shù)據(jù)時(shí)需讀取較多數(shù)據(jù)且需 進(jìn)行計(jì)算,不僅加速了存儲設(shè)備的損耗且對存儲系統(tǒng)有了計(jì)算功能上的要求。分片復(fù)制碼 能夠很好的克服這些問題,適用于大型分布式存儲系統(tǒng)、商用云存儲系統(tǒng)以及對數(shù)據(jù)可靠 性或可用性要求較高的各種類型存儲系統(tǒng)。
[0003] 分片復(fù)制碼技術(shù)(FR編碼)是由Rouayheb和Ramchandran提出的一種基于特定組 合結(jié)構(gòu)的糾刪編碼。該編碼兼有數(shù)據(jù)備份和傳統(tǒng)糾刪碼的優(yōu)點(diǎn),修復(fù)數(shù)據(jù)時(shí)讀取數(shù)據(jù)量最 低且不需要計(jì)算,同時(shí)具有比傳統(tǒng)糾刪碼更大的冗余率。由于FR編碼優(yōu)良的性能,大量的 研宄者投入到了 FR編碼的研宄中。FR的冗余率主要依靠其特定組合結(jié)構(gòu)決定,現(xiàn)有得出這 種特定組合結(jié)構(gòu)的方法主要為依靠組合數(shù)學(xué)特定結(jié)構(gòu)的構(gòu)造法和基于布爾矩陣算法的構(gòu) 造法。由于組合數(shù)學(xué)特定結(jié)構(gòu)對參數(shù)有較嚴(yán)要求,因此大部分參數(shù)下的FR編碼無法由組合 數(shù)學(xué)特定結(jié)構(gòu)得出。布爾矩陣算法雖能給出所有參數(shù)下的FR編碼矩陣,但其給出的編碼矩 陣冗余率較低,實(shí)用性較低。
[0004] 如何在任意參數(shù)下給出FR編碼的編碼矩陣同時(shí)保證其冗余率最優(yōu)是研宄的重點(diǎn) 和難點(diǎn)。由于每組參數(shù)下的編碼矩陣各不相同,因此選取的構(gòu)造方法對結(jié)果有很大影響;FR 編碼冗余率的本質(zhì)是編碼矩陣中1的分布對于參數(shù)是否均勻,這是可以看作矩陣的一個(gè)整 體屬性,因此任何一個(gè)1的位置改變都有可能改變編碼矩陣的冗余率。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是克服現(xiàn)有技術(shù)存在的上述問題,提出一種基于禁忌搜索的分片復(fù) 制碼最優(yōu)冗余率編碼矩陣構(gòu)造方法。由于現(xiàn)有的方法不能在任意參數(shù)下給出最優(yōu)冗余率的 FR編碼,基于禁忌搜索的構(gòu)造方法能夠很好的克服這些問題,可給出任意參數(shù)下的最優(yōu)冗 余率FR編碼。
[0006] 本發(fā)明提供的基于禁忌搜索的分片復(fù)制碼最優(yōu)冗余率編碼矩陣構(gòu)造方法,該方法 具體包含以下步驟: 第1、生成搜索起始編碼矩陣 在分布式存儲系統(tǒng)中,將一個(gè)文件分為若干數(shù)據(jù)塊后存儲在《個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)存 儲?/個(gè)不同的數(shù)據(jù)塊,任意連接々個(gè)節(jié)點(diǎn)能夠重構(gòu)出原文件,將滿足這一性質(zhì)的存儲系統(tǒng)記 % (n,k,d)DSS·, 在(?夂FR編碼CV (?匕4 的定義如下: ?尺編碼0&匕4/^定義為集合卜/%^"%以,其中匕為[/7]二漢名"' ~的 子集且/Ki/=^滿足中的任一元素出現(xiàn)在沖的P個(gè)集合里;其中/?即為&先必 中的/?,表示參與文件存儲的存儲節(jié)點(diǎn)數(shù)量,〇為&先必Λ?中的A表示每個(gè)存儲節(jié)點(diǎn)上 存儲的數(shù)據(jù)塊數(shù)量,〃表示文件被分割成的數(shù)據(jù)塊的總數(shù)量,P表示每個(gè)數(shù)據(jù)包的存儲次 數(shù);集合Ki表示編號為i的存儲節(jié)點(diǎn)上需存入的數(shù)據(jù)包編號;且參數(shù)/7, 〃,A P滿足: nd = θρ (1) 算法需根據(jù)存儲文件和分布式存儲系統(tǒng)的具體需要,輸入?yún)?shù)/?,4 P,使用初始矩 陣生成算法生成與上述定義相對應(yīng)的每行權(quán)重為A每列權(quán)重為P的〃布爾矩陣,此布 爾矩陣即搜索的起始編碼矩陣; 本發(fā)明使用布爾矩陣4^描述,則矩陣的各行代表存儲節(jié)點(diǎn),各列代表數(shù)據(jù)塊,從而當(dāng) FR編碼的節(jié)點(diǎn)i需要存儲數(shù)據(jù)塊;則矩陣A中i行j列的位置為1,否則為O ; 本發(fā)明首先根據(jù)存儲文件和分布式存儲系統(tǒng)的具體需要,輸入?yún)⑴c文件存儲的存儲節(jié) 點(diǎn)數(shù)/?,每個(gè)存儲節(jié)點(diǎn)存儲文件塊數(shù)?/,文件分割數(shù)據(jù)塊數(shù)〃,每個(gè)數(shù)據(jù)塊的復(fù)制深度P。根 據(jù)以上參數(shù),算法使用初始矩陣生成算法生成每行中1數(shù)量皆為且每列中1數(shù)量皆為P 初始布爾矩陣; 即初始矩陣為行權(quán)重序列為兄列權(quán)重序列為卻勺/7X 〃布爾矩陣,7?與5定義如下:
(2) 行權(quán)重序列A表示布爾矩陣每行中1的數(shù)量,列權(quán)重序列5表示布爾矩陣中每列中1 的數(shù)量。
[0007] 第2、禁忌搜索初始化 在第1步獲得搜索的起始編碼矩陣后,初始化搜索所使用的搜索節(jié)點(diǎn);首先將起始 編碼矩陣作為起始搜索節(jié)點(diǎn)的編碼矩陣屬其次計(jì)算起始搜索節(jié)點(diǎn)的C4圈計(jì)數(shù)矩陣 ifeiriz;同時(shí)以所有元素之和作為此矩陣的C4圈數(shù)并以此初始化搜索進(jìn)程的 當(dāng)前最優(yōu)C4圈數(shù)和搜索節(jié)點(diǎn)C4圈數(shù)再次輸入?yún)?shù)對十算此矩陣的冗余 率 <(幻并以此初始化當(dāng)前最優(yōu)冗余率漢人同時(shí)計(jì)算冗余率上界最后輸入禁 忌步長最大值·5???/7_?^Γ,同時(shí)將當(dāng)前節(jié)點(diǎn)的禁忌步長·5???/7設(shè)為·5???/7_?^Γ,并將搜索進(jìn)程最 優(yōu)矩陣設(shè)為起始搜索節(jié)點(diǎn)的編碼矩陣見
[0008] 第3、生成鄰域節(jié)點(diǎn) 在第2步得到初始化后的起始搜索節(jié)點(diǎn)的基礎(chǔ)上,以起始搜索節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)開始 搜索;在當(dāng)前節(jié)點(diǎn)上執(zhí)行固定行重列重矩陣交換操作逐一生成鄰域節(jié)點(diǎn)并計(jì)算鄰域節(jié)點(diǎn)編 碼矩陣的C4圈數(shù);若生成的鄰域節(jié)點(diǎn)編碼矩陣的C4圈數(shù)少于當(dāng)前節(jié)點(diǎn)編碼矩陣的C4圈 數(shù),則此鄰域節(jié)點(diǎn)為較優(yōu)節(jié)點(diǎn),執(zhí)行第4步;若生成的鄰域節(jié)點(diǎn)編碼矩陣的C4圈數(shù)等于當(dāng)前 節(jié)點(diǎn)編碼矩陣的C4圈數(shù),則此鄰域節(jié)點(diǎn)為同等節(jié)點(diǎn),執(zhí)行第5步;若生成的鄰域節(jié)點(diǎn)編碼矩 陣的C4圈數(shù)大于當(dāng)前節(jié)點(diǎn)編碼矩陣的C4圈數(shù)則此鄰域節(jié)點(diǎn)為較差節(jié)點(diǎn),直接放棄此節(jié)點(diǎn) 繼續(xù)執(zhí)行第3步。
[0009] 計(jì)算編碼矩陣C4圈數(shù),等價(jià)于計(jì)算編碼矩陣的&泛人當(dāng)編碼矩陣中C4圈數(shù)較少 到一定程度,其&(方即會上升。
[0010] 本發(fā)明通過以下定理,證明了&(方與間的充分關(guān)系,具體定理及證明過程 如下: 引理3.1.設(shè)r為一固定行重列重布爾矩陣加勺&(方,J為加勺&(幻時(shí),r與J 存在以下關(guān)系:
證明:由&(幻定義可知,々中任意兩行中相同列的1的個(gè)數(shù)最多為及/-Z。不失一般 性,令左=J,當(dāng)出現(xiàn)最差情況,即3行不存在同一列的3個(gè)位置皆為1,又因任意兩行間相同 列的1數(shù)最多為r,則矩陣艱I J與z有以下關(guān)系:以此類推,得證。
[0011] 引理3. 1實(shí)際通過&(方給出了 值的一個(gè)下界,顯然,若一個(gè)矩陣的&(方的 值增大,無論k為何值,&(幻的下界也隨之增大。則由引理3.1,與&(幻J存在以 下關(guān)系: 定理3.1.設(shè)r為一固定行重列重布爾矩陣^ 方,5為加勺時(shí),若S不 為最大時(shí),必存在正整數(shù)C和0,對任意與貨于重列重相同的布爾矩陣辟卩任意正整數(shù)f, 當(dāng)f彡0且r彡",矩陣/?勺冬⑵與&⑷有:
其中f <及/-7。
[0012] 證明:由引理3. 1可知,當(dāng)r增大時(shí),J的下界也隨之增大,當(dāng)矩陣F的下界大于 J時(shí),矩陣F的&ft;也隨之增大。
[0013] 第4、處理較優(yōu)節(jié)點(diǎn) 計(jì)算較優(yōu)節(jié)點(diǎn)編碼矩陣的&漢人判斷是否達(dá)到FR碼存儲能力上界碼 的存儲能力上界的定義如下/
若&(幻等于則結(jié)束算法返回較優(yōu)節(jié)點(diǎn);否則判斷較優(yōu)節(jié)點(diǎn)C4圈數(shù)和是否 優(yōu)于搜索進(jìn)程的當(dāng)前最優(yōu)C4圈數(shù)和人若是則以較優(yōu)節(jié)點(diǎn)C4圈數(shù)和更新當(dāng)前最 優(yōu)C4圈數(shù)和& ft人記錄較優(yōu)節(jié)點(diǎn)的C4圈數(shù)和& ft人更新較優(yōu)節(jié)點(diǎn)的C4圈計(jì)數(shù)矩陣,將搜 索進(jìn)程最優(yōu)矩陣φ?_#更新為較優(yōu)節(jié)點(diǎn)的編碼矩陣私將較優(yōu)節(jié)點(diǎn)的禁忌步長設(shè)為初始值, 以較優(yōu)節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn)執(zhí)行第3步。
[0014] 第5、處理同等節(jié)點(diǎn) 若生成此同等節(jié)點(diǎn)的當(dāng)前節(jié)點(diǎn)的禁忌步長step大于1,則將同等節(jié)點(diǎn)的禁忌步長設(shè)為 step-Ι,記錄同等節(jié)點(diǎn)的C4圈數(shù)和4(?),更新同等節(jié)點(diǎn)C4圈計(jì)數(shù)矩陣,以同等節(jié)點(diǎn)為當(dāng)前 節(jié)點(diǎn)執(zhí)行第4步;否則直接放棄此同等節(jié)點(diǎn)執(zhí)行第3步。
[0015] 第6、輸出結(jié)果 算法停止后返回搜索進(jìn)程最優(yōu)矩陣φ?_#。
[0016] 本發(fā)明第2步所述的禁忌搜索初始化的具體方法包括: 第2. 1、計(jì)算起始編碼矩陣C4圈數(shù)與C4圈計(jì)數(shù)矩陣 在第1步中獲得起始編碼矩陣的基礎(chǔ)上,本發(fā)明采用計(jì)算編碼矩陣C4圈數(shù)的方法作為 禁忌搜索的啟發(fā)式規(guī)則;C4