本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體涉及一種基于NVRAM的海量存儲系統(tǒng)直接糾刪碼的優(yōu)化方法和系統(tǒng)。
背景技術(shù):
在計算機(jī)技術(shù)高速發(fā)展的今天,數(shù)據(jù)呈現(xiàn)爆炸式增長;海量存儲系統(tǒng)的數(shù)據(jù)存儲的速度越來越倍受關(guān)注。在海量存儲系統(tǒng)NVRAM直接糾刪碼中一般情況下Write隊列中的操作是串行化提交的;Write隊列中的操作根據(jù)FIFO的原則,一次提交一個操作,并等到這個操作處理完成后再繼續(xù)處理Write隊列中的下一個操作;由于提交的串行化使得海量存儲系統(tǒng)的后端的壓力不夠,不能充分發(fā)揮硬件的性能。
按照誤碼控制的不同功能,可分為檢錯碼、糾錯碼和糾刪碼等。檢錯碼僅具備識別錯碼功能 而無糾正錯碼功能;糾錯碼不僅具備識別錯碼功能,同時具備糾正錯碼功能;糾刪碼則不僅具備識別錯碼和糾正錯碼的功能,而且當(dāng)錯碼超過糾正范圍時可把無法糾錯的信息刪除。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:本發(fā)明針對以上問題,提供一種基于NVRAM存儲系統(tǒng)直接糾刪碼的優(yōu)化方法。
本發(fā)明所采用的技術(shù)方案為:
基于NVRAM存儲系統(tǒng)直接糾刪碼的優(yōu)化方法,所述方法針對Write隊列中的操作,先判斷該操作是否是糾刪碼條帶對齊的操作;如果是糾刪碼條帶對齊的操作,則將該操作生成相應(yīng)的事務(wù)并提交,繼續(xù)判斷提交糾刪碼對齊的事務(wù);如果該操作不是糾刪碼條帶對齊的操作,則該操作將不會提交,等到之前的所有操作處理完成后;再讀取源數(shù)據(jù)補(bǔ)齊為糾刪碼條帶對齊的操作再提交。
該方法主要優(yōu)化待處理Write隊列中的操作提交方式;不再單純的將Write隊列中的操作進(jìn)行串行化提交,而是根據(jù)Write隊列中的操作是否為糾刪條帶對齊的操作進(jìn)行并行化提交;這樣可以避免由于串行化提交導(dǎo)致存儲系統(tǒng)后端IO壓力不夠,從而發(fā)揮海量存儲系統(tǒng)的處理IO的能力,充分發(fā)揮硬件的性能。
所述方法通過三個部分:預(yù)處理模塊、判斷模塊、提交模塊實(shí)現(xiàn),其中:
預(yù)處理模塊:當(dāng)海量存儲系統(tǒng)的服務(wù)器端收到客戶端發(fā)送的操作,預(yù)處理模塊首先對這些操作進(jìn)行預(yù)處理,判斷這些操作的參數(shù)是否正確,以及計算操作影響數(shù)據(jù)的范圍等;如果不滿足條件,則直接返回給客戶端,否則直接壓入操作隊列;
判斷模塊:預(yù)處理模塊完成之后流程進(jìn)入判斷模塊,在判斷模塊中對客戶端發(fā)送的請求操作進(jìn)行判斷處理,根據(jù)操作對數(shù)據(jù)的影響范圍來判斷該操作是否為糾刪碼條帶對齊的操作,非對齊的操作需要讀取源數(shù)據(jù)補(bǔ)充成對齊的操作;
提交模塊:循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作,則將該操作內(nèi)存中的數(shù)據(jù)生成相應(yīng)的事務(wù),提交給海量存儲系統(tǒng)后端,并繼續(xù)處理Write隊列中的后續(xù)的操作;如果是非糾刪碼條帶對齊的操作,則該操作需要等待之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為對齊的操作并提交,直到Write隊列中的操作提交完成。
所述方法主要在軟件層面實(shí)現(xiàn),具體流程如下:
1)客戶端發(fā)送操作請求;
2)預(yù)處理模塊判斷客戶端的操作是否合法;
3)判斷模塊根據(jù)這些操作影響的數(shù)據(jù)的范圍信息判斷是否為糾刪碼條帶對齊的操作;
4)提交模塊,根據(jù)判斷模塊的結(jié)果循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作則生成相應(yīng)的事務(wù)并提交,再繼續(xù)處理后續(xù)的操作;如果為非糾刪碼條帶對齊的操作,則等待該操作之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為糾刪碼條帶對齊的操作繼續(xù)提交,直到Write隊列中所有的操作提交完成。
基于NVRAM存儲系統(tǒng)直接糾刪碼的優(yōu)化系統(tǒng),所述系統(tǒng)包括三個部分:預(yù)處理模塊、判斷模塊、提交模塊,其中:
預(yù)處理模塊:當(dāng)NVRAM海量存儲系統(tǒng)的服務(wù)器端收到客戶端發(fā)送的操作,預(yù)處理模塊首先對這些操作進(jìn)行預(yù)處理,判斷這些操作的參數(shù)是否正確,以及計算操作影響數(shù)據(jù)的范圍;如果不滿足條件,則直接返回給客戶端,否則直接壓入操作隊列;
判斷模塊:預(yù)處理模塊完成之后流程進(jìn)入判斷模塊,在判斷模塊中對客戶端發(fā)送的請求操作進(jìn)行判斷處理,根據(jù)操作對數(shù)據(jù)的影響范圍來判斷該操作是否為糾刪碼條帶對齊的操作,非對齊的操作需要讀取源數(shù)據(jù)補(bǔ)充成對齊的操作;
提交模塊:循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作,則將該操作內(nèi)存中的數(shù)據(jù)生成相應(yīng)的事務(wù),提交給海量存儲系統(tǒng)后端,并繼續(xù)處理Write隊列中的后續(xù)的操作;如果是非糾刪碼條帶對齊的操作,則該操作需要等待之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為對齊的操作并提交,直到Write隊列中的操作提交完成。
本發(fā)明的有益效果為:
本發(fā)明由原來的串行化處理操作優(yōu)化成并行提交多個糾刪條帶對齊的操作;優(yōu)化方法既能夠保證客戶端操作的順序性,又能夠提高寫入效率,可以避免由于串行化提交導(dǎo)致存儲系統(tǒng)后端IO壓力不夠,從而發(fā)揮海量存儲系統(tǒng)的處理讀寫IO的能力。
附圖說明
圖1為本發(fā)明方法流程圖。
具體實(shí)施方式
下面根據(jù)說明書附圖,結(jié)合具體實(shí)施方式對本發(fā)明進(jìn)一步說明:
實(shí)施例1
基于NVRAM存儲系統(tǒng)直接糾刪碼的優(yōu)化方法,所述方法針對Write隊列中的操作,先判斷該操作是否是糾刪碼條帶對齊的操作;如果是糾刪碼條帶對齊的操作,則將該操作生成相應(yīng)的事務(wù)并提交,繼續(xù)判斷提交糾刪碼對齊的事務(wù);如果該操作不是糾刪碼條帶對齊的操作,則該操作將不會提交,等到之前的所有操作處理完成后;再讀取源數(shù)據(jù)補(bǔ)齊為糾刪碼條帶對齊的操作再提交。
該方法主要優(yōu)化待處理Write隊列中的操作提交方式;不再單純的將Write隊列中的操作進(jìn)行串行化提交,而是根據(jù)Write隊列中的操作是否為糾刪條帶對齊的操作進(jìn)行并行化提交;這樣可以避免由于串行化提交導(dǎo)致存儲系統(tǒng)后端IO壓力不夠,從而發(fā)揮海量存儲系統(tǒng)的處理IO的能力,充分發(fā)揮硬件的性能。
實(shí)施例2
在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法通過三個部分:預(yù)處理模塊、判斷模塊、提交模塊實(shí)現(xiàn),其中:
預(yù)處理模塊:當(dāng)海量存儲系統(tǒng)的服務(wù)器端收到客戶端發(fā)送的操作,預(yù)處理模塊首先對這些操作進(jìn)行預(yù)處理,判斷這些操作的參數(shù)是否正確,以及計算操作影響數(shù)據(jù)的范圍等;如果不滿足條件,則直接返回給客戶端,否則直接壓入操作隊列;
判斷模塊:預(yù)處理模塊完成之后流程進(jìn)入判斷模塊,在判斷模塊中對客戶端發(fā)送的請求操作進(jìn)行判斷處理,根據(jù)操作對數(shù)據(jù)的影響范圍來判斷該操作是否為糾刪碼條帶對齊的操作,非對齊的操作需要讀取源數(shù)據(jù)補(bǔ)充成對齊的操作;
提交模塊:循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作,則將該操作內(nèi)存中的數(shù)據(jù)生成相應(yīng)的事務(wù),提交給海量存儲系統(tǒng)后端,并繼續(xù)處理Write隊列中的后續(xù)的操作;如果是非糾刪碼條帶對齊的操作,則該操作需要等待之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為對齊的操作并提交,直到Write隊列中的操作提交完成。
實(shí)施例3
如圖1所示,在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述方法主要在軟件層面實(shí)現(xiàn),具體流程如下:
1)客戶端發(fā)送操作請求;
2)預(yù)處理模塊判斷客戶端的操作是否合法;
3)判斷模塊根據(jù)這些操作影響的數(shù)據(jù)的范圍信息判斷是否為糾刪碼條帶對齊的操作;
4)提交模塊,根據(jù)判斷模塊的結(jié)果循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作則生成相應(yīng)的事務(wù)并提交,再繼續(xù)處理后續(xù)的操作;如果為非糾刪碼條帶對齊的操作,則等待該操作之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為糾刪碼條帶對齊的操作繼續(xù)提交,直到Write隊列中所有的操作提交完成。
實(shí)施例4
基于NVRAM存儲系統(tǒng)直接糾刪碼的優(yōu)化系統(tǒng),所述系統(tǒng)包括三個部分:預(yù)處理模塊、判斷模塊、提交模塊,其中:
預(yù)處理模塊:當(dāng)NVRAM海量存儲系統(tǒng)的服務(wù)器端收到客戶端發(fā)送的操作,預(yù)處理模塊首先對這些操作進(jìn)行預(yù)處理,判斷這些操作的參數(shù)是否正確,以及計算操作影響數(shù)據(jù)的范圍;如果不滿足條件,則直接返回給客戶端,否則直接壓入操作隊列;
判斷模塊:預(yù)處理模塊完成之后流程進(jìn)入判斷模塊,在判斷模塊中對客戶端發(fā)送的請求操作進(jìn)行判斷處理,根據(jù)操作對數(shù)據(jù)的影響范圍來判斷該操作是否為糾刪碼條帶對齊的操作,非對齊的操作需要讀取源數(shù)據(jù)補(bǔ)充成對齊的操作;
提交模塊:循環(huán)處理Write隊列中的操作,如果為糾刪碼條帶對齊的操作,則將該操作內(nèi)存中的數(shù)據(jù)生成相應(yīng)的事務(wù),提交給海量存儲系統(tǒng)后端,并繼續(xù)處理Write隊列中的后續(xù)的操作;如果是非糾刪碼條帶對齊的操作,則該操作需要等待之前的所有操作落盤成功后,再讀取源數(shù)據(jù)補(bǔ)齊為對齊的操作并提交,直到Write隊列中的操作提交完成。
實(shí)施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。