本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體地說是一種基于運算時間統(tǒng)計的糾刪參數(shù)提取方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的高速發(fā)展,數(shù)據(jù)也隨之爆發(fā)式增長。如何存儲這些數(shù)據(jù)和如何保證數(shù)據(jù)安全成為了各個互聯(lián)網(wǎng)公司的遇到的一大難題。在這種背景下ceph(分布式存儲系統(tǒng))應(yīng)運而生,由于ceph具有高可靠性、可伸縮、分布式、管理簡單、開源等特點,迅速成為了各家互聯(lián)網(wǎng)公司爭相使用的大數(shù)據(jù)存儲系統(tǒng)。在ceph存儲系統(tǒng)中數(shù)據(jù)的安全性是通過數(shù)據(jù)冗余實現(xiàn)。
目前實現(xiàn)數(shù)據(jù)冗余有副本方式和糾刪方式兩種方式,副本方式即一份數(shù)據(jù)保存多(n個)副本,當一個副本出現(xiàn)問題時可以通過讀取其他副本將其恢復;糾刪方式將數(shù)據(jù)分割成一定數(shù)量(k個)的數(shù)據(jù)塊,使用糾刪算法為這些數(shù)據(jù)塊計算出一定數(shù)量(m個)的校驗塊,當一個或多個(小于等于m)數(shù)據(jù)塊出現(xiàn)問題時可以讀取其他數(shù)據(jù)塊并通過糾刪算法將其恢復。由此可見副本方式的數(shù)據(jù)冗余度是n/1,糾刪方式的數(shù)據(jù)冗余度是(k+m)/k,由于通常m遠小于k。因此不難看出糾刪方式明顯比副本方式節(jié)省空間。隨著數(shù)據(jù)量增大,這一優(yōu)勢越來越明顯,越來越多的用戶選擇糾刪方式作為數(shù)據(jù)存儲方式。
在工程應(yīng)用中測試發(fā)現(xiàn),利用糾刪方式在不同硬件環(huán)境下不同的k和m以及條帶尺寸的設(shè)置會導致數(shù)據(jù)讀寫的效率有明顯的差別。若隨意選用k、m或條帶尺寸的值不能充分發(fā)揮ceph集群部署的性能,且錯誤的ceph部署會帶來風險。
技術(shù)實現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種基于運算時間統(tǒng)計的糾刪參數(shù)提取方法,能夠快速準確的找到一定硬件環(huán)境下k和m以及條帶尺寸的最優(yōu)值,提高ceph集群部署的性能。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于運算時間統(tǒng)計的糾刪參數(shù)提取方法,其特征是:對不同糾刪參數(shù)組合分別進行糾刪運算,比較糾刪運算所用的時間,獲得最優(yōu)糾刪參數(shù)組合。
進一步地,具體步驟為,
s1,獲取用戶設(shè)置的糾刪算法類型;
s2,加載對應(yīng)的糾刪算法庫;
s3,生成測試數(shù)據(jù);
s4,取得一組糾刪參數(shù)組合;
s5,根據(jù)取得的糾刪參數(shù)組合對步驟s3生成的測試數(shù)據(jù)進行糾刪運算;
s6,重復步驟s5的糾刪運算n次,并計算n次運算所用時間的平均值;
s7,調(diào)整糾刪參數(shù)組合并重復步驟s5和步驟s6,在參數(shù)調(diào)整結(jié)束后轉(zhuǎn)到步驟s8;
s8,輸出不同糾刪參數(shù)組合下的統(tǒng)計結(jié)果并給出最優(yōu)組合建議。
進一步地,步驟s2加載對應(yīng)的糾刪算法庫的步驟為,
s21,讀取糾刪類型的配置文件,獲取對應(yīng)糾刪算法庫的位置;
s22,使用算法主函數(shù)名聲明函數(shù)指針;
s23,使用函數(shù)指針調(diào)用算法。
進一步地,步驟s3生成測試數(shù)據(jù)的大小為1gb。
進一步地,糾刪參數(shù)包括數(shù)據(jù)塊值k,糾刪塊值m和糾刪條帶尺寸;數(shù)據(jù)塊k的取值為1~32的整數(shù),糾刪塊值m的取值為1~k的整數(shù),糾刪條帶尺寸的取值為1k~64k的整數(shù)值。
進一步地,步驟s6中n的取值為100。
進一步地,步驟s7調(diào)整糾刪參數(shù)組合的步驟為,
s71,數(shù)據(jù)塊k的初始取值為1;
s72,判斷數(shù)據(jù)塊k的取值是否小于等于32,如果小于等于32則轉(zhuǎn)到步驟s73,否則結(jié)束參數(shù)的調(diào)整;
s73,設(shè)置校驗塊m的值為1;
s74,判斷校驗塊m的取值是否小于等于k,如果小于等于k則轉(zhuǎn)到步驟s75,否則使數(shù)據(jù)塊k的取值加1,轉(zhuǎn)到步驟s72;
s75,設(shè)置條帶尺寸初始值為1k;
s76,判斷條帶尺寸是否小于等于64k,如果條帶尺寸小于等于64k則轉(zhuǎn)到步驟s77,否則使校驗塊m的取值加1,轉(zhuǎn)到步驟s74;
s77,調(diào)用糾刪算法,對測試數(shù)據(jù)進行糾刪運算;
s78,使條帶尺寸加1k,轉(zhuǎn)到步驟s76。
進一步地,步驟s8輸出的統(tǒng)計結(jié)果為不同糾刪參數(shù)組合進行糾刪運算所用時間的平均值。
本發(fā)明的有益效果是:
數(shù)據(jù)塊值k,糾刪塊值m,糾刪條帶尺寸這三個參數(shù)在ceph集群開始存儲數(shù)據(jù)后將無法再修改,本發(fā)明采用的參數(shù)提取方式在系統(tǒng)部署之前使用戶獲得參數(shù)最優(yōu)值,指導工作人員部署出最優(yōu)的集群,使計算資源得到充分利用,降低了錯誤部署的風險;
本發(fā)明的進行參數(shù)提取時自動調(diào)整k、m以及糾刪條帶尺寸的值,全程無人員干預,準確可靠;
本發(fā)明通過調(diào)整k、m及糾刪條帶尺寸的值,提取到的參數(shù)組合數(shù)量龐大,最終得到的最優(yōu)參數(shù)組合的可靠性強。
附圖說明
圖1是糾刪參數(shù)k、m和條帶的關(guān)系示意圖;
圖2是糾刪參數(shù)提取方法的流程示意圖;
圖3是調(diào)整糾刪參數(shù)組合的流程示意圖。
具體實施方式
為能清楚說明本方案的技術(shù)特點,下面通過具體實施方式,并結(jié)合其附圖,對本發(fā)明進行詳細闡述。下文的公開提供了許多不同的實施例或例子用來實現(xiàn)本發(fā)明的不同結(jié)構(gòu)。為了簡化本發(fā)明的公開,下文中對特定例子的部件和設(shè)置進行描述。此外,本發(fā)明可以在不同例子中重復參考數(shù)字和/或字母。這種重復是為了簡化和清楚的目的,其本身不指示所討論各種實施例和/或設(shè)置之間的關(guān)系。應(yīng)當注意,在附圖中所圖示的部件不一定按比例繪制。本發(fā)明省略了對公知組件和處理技術(shù)及工藝的描述以避免不必要地限制本發(fā)明。
本發(fā)明經(jīng)過對ceph糾刪存儲方式的仔細研究發(fā)現(xiàn),糾刪存儲的時間主要消耗在糾刪算法的運算過程中,而糾刪數(shù)據(jù)塊數(shù)(k),校驗碼數(shù)(m),糾刪條帶尺寸這三個參數(shù)對糾刪算法的性能影響最大。在進行ceph的糾刪算法實現(xiàn)過程中,將測試數(shù)據(jù)切割成一定尺寸的條帶,如圖1所示,然后將每個條帶切割成k塊進行糾刪計算和存儲,使用糾刪算法為數(shù)據(jù)塊計算出一定數(shù)量的校驗塊,用m表示校驗塊的數(shù)量。
本發(fā)明的糾刪參數(shù)提取方法對不同參數(shù)組合分別進行糾刪運算,比較糾刪運算所用的時間,獲得最優(yōu)參數(shù)組合。如圖2所示,方法的具體步驟為:
s1,獲取用戶設(shè)置的糾刪算法類型;
s2,加載對應(yīng)的糾刪算法庫;
s3,生成測試數(shù)據(jù);
s4,取得一組糾刪參數(shù)組合;
s5,根據(jù)取得的糾刪參數(shù)組合對步驟s3生成的測試數(shù)據(jù)進行糾刪運算;
s6,重復步驟s5的糾刪運算n次,并計算n次運算所用時間的平均值;
s7,調(diào)整糾刪參數(shù)組合并重復步驟s5和步驟s6,在參數(shù)調(diào)整結(jié)束后轉(zhuǎn)到步驟s8;
s8,輸出不同糾刪參數(shù)組合下的統(tǒng)計結(jié)果并給出最優(yōu)組合建議。
步驟s1中,通過讀取用戶輸入的算法名稱,獲取用戶需要提取參數(shù)的糾刪算法類型,其中糾刪算法類型有jerasure算法、isa-l算法或lrc算法等。根據(jù)糾刪算法類型動態(tài)加載對應(yīng)的糾刪算法庫,加載的具體步驟為:
s21,讀取糾刪類型的配置文件,獲取對應(yīng)糾刪算法庫的位置;
s22,使用算法主函數(shù)名聲明函數(shù)指針;
s23,使用函數(shù)指針調(diào)用算法。
由于不同算法庫的主函數(shù)名相同,因此,無需針對不同算法類型做特殊設(shè)置。
在本發(fā)明的實施例中,步驟s3生成的測試數(shù)據(jù)的大小為1gb;步驟s6糾刪運算次數(shù)n取值100。為降低隨機問題對單次測試結(jié)果的影響,對同一糾刪參數(shù)組合反復執(zhí)行糾刪運算100次,并計算算法執(zhí)行時間的平均值。
在本發(fā)明的實施例中,對糾刪參數(shù)分別取值,其中數(shù)據(jù)塊k的取值為1~32的整數(shù),糾刪塊值m的取值為1~k的整數(shù),糾刪條帶尺寸的取值為1k~64k的整數(shù)值。本發(fā)明的步驟s7中,利用c++作為開發(fā)語言,自動調(diào)整k、m以及糾刪條帶尺寸的值。調(diào)整的具體流程如圖3所示,具體步驟為,
s71,數(shù)據(jù)塊k的初始取值為1;
s72,判斷數(shù)據(jù)塊k的取值是否小于等于32,如果小于等于32則轉(zhuǎn)到步驟s73,否則結(jié)束參數(shù)的調(diào)整;
s73,設(shè)置校驗塊m的值為1;
s74,判斷校驗塊m的取值是否小于等于k,如果小于等于k則轉(zhuǎn)到步驟s75,否則使數(shù)據(jù)塊k的取值加1,轉(zhuǎn)到步驟s72;
s75,設(shè)置條帶尺寸初始值為1k;
s76,判斷條帶尺寸是否小于等于64k,如果條帶尺寸小于等于64k則轉(zhuǎn)到步驟s77,否則使校驗塊m的取值加1,轉(zhuǎn)到步驟s74;
s77,調(diào)用糾刪算法,對測試數(shù)據(jù)進行糾刪運算;
s78,使條帶尺寸加1k,轉(zhuǎn)到步驟s76。
根據(jù)s71-s78的步驟調(diào)整糾刪參數(shù)的組合,分別改變數(shù)據(jù)塊k、校驗塊m和條帶尺寸的值,獲得的參數(shù)組合數(shù)量龐大,因此得到的最優(yōu)參數(shù)組合較可靠。在不同的糾刪參數(shù)組合下分別調(diào)用糾刪算法庫,對相同規(guī)模的測試數(shù)據(jù)進行計算,統(tǒng)計算法執(zhí)行時間,將不同糾刪參數(shù)組合下的平均值輸出并給出最優(yōu)組合建議。算法執(zhí)行時間平均值最小的參數(shù)組合即為最優(yōu)參數(shù)。
客戶在進行ceph集群部署時,直接選用本發(fā)明提供的最優(yōu)糾刪參數(shù)組合,節(jié)省時間,降低錯誤部署帶來的風險。
以上所述只是本發(fā)明的優(yōu)選實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也被視為本發(fā)明的保護范圍。