本發(fā)明涉及數(shù)據(jù)安全性領(lǐng)域,尤其涉及一種緩存數(shù)據(jù)保護(hù)方法和裝置。
背景技術(shù):
隨著大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)存儲(chǔ)系統(tǒng)越來越成為經(jīng)濟(jì)社會(huì)發(fā)展的必不可少的一部分;大數(shù)據(jù)時(shí)代到來的同時(shí)也為數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)難度帶來巨大挑戰(zhàn),例如,如何保證數(shù)據(jù)的安全性,如何在大規(guī)模i/o(input/output)并發(fā)訪問數(shù)據(jù)存儲(chǔ)系統(tǒng)時(shí),保證數(shù)據(jù)的一致性和數(shù)據(jù)存儲(chǔ)系統(tǒng)的i/o性能變得非常關(guān)鍵;數(shù)據(jù)存儲(chǔ)系統(tǒng)通常引入磁盤數(shù)據(jù)緩存技術(shù),以確保數(shù)據(jù)存儲(chǔ)系統(tǒng)的i/o吞吐性能;當(dāng)數(shù)據(jù)存儲(chǔ)系統(tǒng)的電源出現(xiàn)故障時(shí),如果不采取應(yīng)急保護(hù)措施,必然會(huì)導(dǎo)致緩存數(shù)據(jù)丟失。
目前針對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng)的掉電保護(hù)方案中,通常設(shè)置數(shù)據(jù)存儲(chǔ)系統(tǒng)的主板基本輸入輸出系統(tǒng)(basicinputoutputsystem,bios)工作在adr-c2f模式,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電后,利用電池備份單元(batterybackupunit,bbu)繼續(xù)供電,此時(shí)相應(yīng)的操作系統(tǒng)不能正常工作,掉電后依靠主板bios將位于內(nèi)存中的全部緩存數(shù)據(jù)直接拷貝到磁盤;在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電后,開機(jī)進(jìn)入bios,由bios將掉電保存的緩存數(shù)據(jù)從磁盤重新完整拷貝到內(nèi)存。
上述的掉電保護(hù)方案中嚴(yán)重依賴于磁盤的可靠性,在存儲(chǔ)緩存數(shù)據(jù)的磁盤發(fā)生故障時(shí),會(huì)導(dǎo)致緩存數(shù)據(jù)恢復(fù)失敗。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實(shí)施例期望提供一種緩存數(shù)據(jù)保護(hù)方法和裝置,能夠提高數(shù)據(jù)存儲(chǔ)系統(tǒng)中緩存數(shù)據(jù)的可恢復(fù)性。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明實(shí)施例提供了一種緩存數(shù)據(jù)保護(hù)方法,應(yīng)用于數(shù)據(jù)存儲(chǔ)系統(tǒng),所述方法包括:
在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件分別存儲(chǔ)到n個(gè)存儲(chǔ)設(shè)備中,n為大于1的自然數(shù);所述n個(gè)存儲(chǔ)設(shè)備包括1個(gè)主存儲(chǔ)設(shè)備和n-1個(gè)從屬存儲(chǔ)設(shè)備;
在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),從每個(gè)存儲(chǔ)設(shè)備讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件;在從主存儲(chǔ)設(shè)備讀取任意一個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
上述方案中,所述基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù),包括:獲取未能從主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào),基于所獲取的緩存數(shù)據(jù)文件的序號(hào),在從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取出的緩存數(shù)據(jù)文件中找出相應(yīng)的緩存數(shù)據(jù)文件;基于所找出的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
上述方案中,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),所述方法還包括:存儲(chǔ)每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,所述每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息包括:對(duì)應(yīng)的緩存數(shù)據(jù)文件的元數(shù)據(jù)和下一個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件包括:令i取1至m-1,m表示數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí)內(nèi)存中存儲(chǔ)的緩存數(shù)據(jù)文件的個(gè)數(shù);在讀取第i個(gè)緩存數(shù)據(jù)文件后,基于第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,讀取第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù);基于第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),從對(duì)應(yīng)存儲(chǔ)設(shè)備中讀取第i+1個(gè)緩存數(shù)據(jù)文件。
上述方案中,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),所述方法還包括:存儲(chǔ)第1個(gè)至第m-1個(gè)緩存數(shù)據(jù)文件的特征碼,其中,第i個(gè)緩存文件的特征碼,用于指示第i+1個(gè)緩存數(shù)據(jù)文件的位置信息、第i+1個(gè)個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)或第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
在從主存儲(chǔ)設(shè)備讀取第i個(gè)緩存數(shù)據(jù)文件失敗時(shí),讀取第i+1個(gè)緩存數(shù)據(jù)文件包括:基于第i個(gè)緩存數(shù)據(jù)文件的特征碼,從主存儲(chǔ)設(shè)備讀取第i+1個(gè)緩 存數(shù)據(jù)文件。
上述方案中,在存儲(chǔ)各個(gè)緩存數(shù)據(jù)文件之前,所述方法還包括:基于內(nèi)存中緩存數(shù)據(jù)的基數(shù)樹,找出待存儲(chǔ)的各個(gè)緩存數(shù)據(jù)文件。
本發(fā)明實(shí)施例還提供了一種緩存數(shù)據(jù)保護(hù)裝置,應(yīng)用于數(shù)據(jù)存儲(chǔ)系統(tǒng),所述裝置包括:第一存儲(chǔ)模塊、讀取模塊和恢復(fù)模塊;其中,
第一存儲(chǔ)模塊,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件分別存儲(chǔ)到n個(gè)存儲(chǔ)設(shè)備中,n為大于1的自然數(shù);所述n個(gè)存儲(chǔ)設(shè)備包括1個(gè)主存儲(chǔ)設(shè)備和n-1個(gè)從屬存儲(chǔ)設(shè)備;
讀取模塊,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),從每個(gè)存儲(chǔ)設(shè)備讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件;
恢復(fù)模塊,用于在從主存儲(chǔ)設(shè)備讀取任意一個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
上述方案中,所述恢復(fù)模塊,具體用于獲取未能從主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào),基于所獲取的緩存數(shù)據(jù)文件的序號(hào),在從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取出的緩存數(shù)據(jù)文件中找出相應(yīng)的緩存數(shù)據(jù)文件;基于所找出的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
上述方案中,所述裝置還包括第二存儲(chǔ)模塊,所述第二存儲(chǔ)模塊,具體用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),存儲(chǔ)每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,所述每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息包括:對(duì)應(yīng)的緩存數(shù)據(jù)文件的元數(shù)據(jù)和下一個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
所述讀取模塊,具體用于在讀取第i個(gè)緩存數(shù)據(jù)文件后,基于第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,讀取第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù);基于第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),從對(duì)應(yīng)存儲(chǔ)設(shè)備中讀取第i+1個(gè)緩存數(shù)據(jù)文件,i取1至m-1,m表示數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí)內(nèi)存中存儲(chǔ)的緩存數(shù)據(jù)文件的個(gè)數(shù)。
上述方案中,所述裝置還包括第三存儲(chǔ)模塊,所述第三存儲(chǔ)模塊,具體用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),存儲(chǔ)第1個(gè)至第m-1個(gè)緩存數(shù)據(jù)文件的特征碼,其中,第i個(gè)緩存文件的特征碼,用于指示第i+1個(gè)緩存數(shù)據(jù)文件的位置信息、 第i+1個(gè)個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)或第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
所述讀取模塊,具體用于在從主存儲(chǔ)設(shè)備讀取第i個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于第i個(gè)緩存數(shù)據(jù)文件的特征碼,從主存儲(chǔ)設(shè)備讀取第i+1個(gè)緩存數(shù)據(jù)文件。
上述方案中,所述第一存儲(chǔ)模塊,還用于在存儲(chǔ)各個(gè)緩存數(shù)據(jù)文件之前,基于內(nèi)存中緩存數(shù)據(jù)的基數(shù)樹,找出待存儲(chǔ)的各個(gè)緩存數(shù)據(jù)文件。
本發(fā)明實(shí)施例提供的一種緩存數(shù)據(jù)保護(hù)方法和裝置,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件分別存儲(chǔ)到n個(gè)存儲(chǔ)設(shè)備中,n為大于1的自然數(shù);所述n個(gè)存儲(chǔ)設(shè)備包括1個(gè)主存儲(chǔ)設(shè)備和n-1個(gè)從屬存儲(chǔ)設(shè)備;在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),從每個(gè)存儲(chǔ)設(shè)備讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件;在從主存儲(chǔ)設(shè)備讀取任意一個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù);如此,能夠提高數(shù)據(jù)存儲(chǔ)系統(tǒng)中緩存數(shù)據(jù)的可恢復(fù)性。
附圖說明
圖1為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例的流程圖;
圖2為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例中存儲(chǔ)設(shè)備中數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖;
圖3為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例中緩存數(shù)據(jù)恢復(fù)的流程圖;
圖4為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例中使用兩個(gè)存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)恢復(fù)的流程圖;
圖5為本發(fā)明實(shí)施例緩存數(shù)據(jù)保護(hù)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
第一實(shí)施例
圖1為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例的流程圖,如圖1所示,該 流程包括:
步驟100:在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件分別存儲(chǔ)到n個(gè)存儲(chǔ)設(shè)備中,n為大于1的自然數(shù);所述n個(gè)存儲(chǔ)設(shè)備包括1個(gè)主存儲(chǔ)設(shè)備和n-1個(gè)從屬存儲(chǔ)設(shè)備。
這里,針對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)置有持續(xù)供電模塊,該持續(xù)供電模塊,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),繼續(xù)為數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存和各個(gè)存儲(chǔ)設(shè)備進(jìn)行供電;示例性地,持續(xù)供電模塊可以采用bbu實(shí)現(xiàn)。
本步驟中,每個(gè)存儲(chǔ)設(shè)備的類型包括但不限于:flash存儲(chǔ)器、非易失性內(nèi)存(nonvolatileram,nvram)、隨機(jī)存儲(chǔ)器等等。
進(jìn)一步地,數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件都可以稱為臟數(shù)據(jù)文件;在存儲(chǔ)各個(gè)緩存數(shù)據(jù)文件之前,還可以基于內(nèi)存中緩存數(shù)據(jù)的基數(shù)樹(radix-tree),找出待存儲(chǔ)的各個(gè)緩存數(shù)據(jù)文件;這里,每個(gè)從屬存儲(chǔ)設(shè)備存儲(chǔ)的緩存數(shù)據(jù)文件可以稱為鏡像數(shù)據(jù)文件。
在實(shí)際應(yīng)用中,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),還可以存儲(chǔ)每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,所述每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息包括:對(duì)應(yīng)的緩存數(shù)據(jù)文件的元數(shù)據(jù)和下一個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;這里,每個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)可以用于指示對(duì)應(yīng)緩存數(shù)據(jù)文件的存儲(chǔ)位置信息。
也就是說,第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息包括:第i個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)和第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;i取1至m-1,m表示數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí)內(nèi)存中存儲(chǔ)的緩存數(shù)據(jù)文件的個(gè)數(shù)。
這里,存儲(chǔ)第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息的存儲(chǔ)設(shè)備,可以與存儲(chǔ)第i個(gè)緩存數(shù)據(jù)文件的存儲(chǔ)設(shè)備相同,也可以與存儲(chǔ)第i個(gè)緩存數(shù)據(jù)文件的存儲(chǔ)設(shè)備不相同。
進(jìn)一步地,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),還可以存儲(chǔ)第1個(gè)至第m-1個(gè)緩存數(shù)據(jù)文件的特征碼,其中,第i個(gè)緩存文件的特征碼,用于指示第i+1個(gè)緩存數(shù)據(jù)文件的位置信息、第i+1個(gè)個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)或第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;如此,根據(jù)第i個(gè)緩存文件的特征碼,便可以找出 第i+1個(gè)個(gè)緩存數(shù)據(jù)文件所在的位置。
下面通過圖2示例性地說明:當(dāng)存儲(chǔ)每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息的存儲(chǔ)設(shè)備與存儲(chǔ)對(duì)應(yīng)的緩存數(shù)據(jù)文件的存儲(chǔ)設(shè)備相同時(shí),存儲(chǔ)設(shè)備中數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)示意圖,如圖2所示,nvm_pfp_header表示存儲(chǔ)的數(shù)據(jù)的首部,nvm_pfp_unit[0]表示存儲(chǔ)的第1個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息和特征碼,nvm_pfp_item[0,0]至nvm_pfp_item[0,n]表示存儲(chǔ)的第1個(gè)緩存數(shù)據(jù)文件;nvm_pfp_unit[1]表示存儲(chǔ)的第2個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息和特征碼,nvm_pfp_item[1,0]至nvm_pfp_item[1,n]表示存儲(chǔ)的第2個(gè)緩存數(shù)據(jù)文件。
步驟101:在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),從每個(gè)存儲(chǔ)設(shè)備讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件;在從主存儲(chǔ)設(shè)備讀取任意一個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
本步驟中,可以解析出第1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),根據(jù)第1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),讀取第1個(gè)緩存數(shù)據(jù)文件;在從每個(gè)存儲(chǔ)設(shè)備中讀取第i個(gè)緩存數(shù)據(jù)文件后,基于第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,解析出第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù);基于第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),從對(duì)應(yīng)存儲(chǔ)設(shè)備中讀取第i+1個(gè)緩存數(shù)據(jù)文件;如此,便于按順序讀取第1個(gè)緩存數(shù)據(jù)文件至第m個(gè)緩存數(shù)據(jù)文件。
由于每個(gè)存儲(chǔ)設(shè)備可能發(fā)生區(qū)域故障,因此,可能存在至少一個(gè)緩存數(shù)據(jù)文件或至少一個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)存儲(chǔ)失敗的情況,進(jìn)而,讀取對(duì)應(yīng)緩存數(shù)據(jù)文件時(shí),會(huì)出現(xiàn)讀取失敗的情況;針對(duì)這種情況,在本步驟中,在從主存儲(chǔ)設(shè)備讀取第i個(gè)緩存數(shù)據(jù)文件失敗時(shí),可以基于第i個(gè)緩存數(shù)據(jù)文件的特征碼,從主存儲(chǔ)設(shè)備讀取第i+1個(gè)緩存數(shù)據(jù)文件;具體地,在從主存儲(chǔ)設(shè)備讀取第i個(gè)緩存數(shù)據(jù)文件失敗時(shí),通過模式匹配解析出第i個(gè)緩存數(shù)據(jù)文件的特征碼,這里,可以對(duì)第i個(gè)緩存數(shù)據(jù)文件的特征碼所指示的第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)進(jìn)行循環(huán)冗余校驗(yàn)(cyclicredundancycheck,crc),在通過crc校驗(yàn)后,確認(rèn)i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù),進(jìn)而基于第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)讀取第i+1個(gè)緩存數(shù)據(jù)文件,實(shí)現(xiàn)第i+1個(gè)緩存數(shù)據(jù)文件的恢復(fù)。
在現(xiàn)有技術(shù)中,在從磁盤中恢復(fù)緩存數(shù)據(jù)文件時(shí),如果磁盤存儲(chǔ)介質(zhì)出現(xiàn)區(qū)域損壞時(shí),又可能導(dǎo)致一個(gè)或多個(gè)緩存數(shù)據(jù)文件讀取失敗,導(dǎo)致后續(xù)的緩存數(shù)據(jù)文件也不能讀?。幌鄬?duì)地,在本發(fā)明第一實(shí)施例中,使用緩存數(shù)據(jù)文件的特征碼,可以保證磁盤存儲(chǔ)介質(zhì)出現(xiàn)區(qū)域損壞時(shí),通過對(duì)應(yīng)的特征碼找到后續(xù)的緩存數(shù)據(jù)文件的位置或元數(shù)據(jù),從而繼續(xù)讀取后續(xù)的緩存數(shù)據(jù)文件;如此,提高了緩存數(shù)據(jù)的可恢復(fù)性。
本步驟中,所述基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù),包括:獲取未能從主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào),基于所獲取的緩存數(shù)據(jù)文件的序號(hào),在從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取出的緩存數(shù)據(jù)文件中找出相應(yīng)的緩存數(shù)據(jù)文件;基于所找出的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù);示例性地,未能從主存儲(chǔ)設(shè)備成功讀取第j個(gè)緩存數(shù)據(jù)文件時(shí),獲取的未能從主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào)為j,從屬存儲(chǔ)設(shè)備對(duì)第j個(gè)緩存數(shù)據(jù)文件進(jìn)行數(shù)據(jù)恢復(fù),j小于等于m。
圖3為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例中緩存數(shù)據(jù)恢復(fù)的流程圖,如圖3所示,共有一個(gè)從屬存儲(chǔ)設(shè)備,主存儲(chǔ)設(shè)備和從屬存儲(chǔ)設(shè)備統(tǒng)稱為存儲(chǔ)設(shè)備1。
參照?qǐng)D3,緩存數(shù)據(jù)恢復(fù)的流程包括:
步驟101a:緩存數(shù)據(jù)保護(hù)裝置在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),讀取存儲(chǔ)設(shè)備1存儲(chǔ)的緩存數(shù)據(jù)文件。
這里,緩存數(shù)據(jù)保護(hù)裝置用于按照本發(fā)明第一實(shí)施例的緩存數(shù)據(jù)保護(hù)方法進(jìn)行緩存數(shù)據(jù)恢復(fù),讀取存儲(chǔ)設(shè)備1的緩存數(shù)據(jù)文件的過程已經(jīng)在步驟101中作出說明,這里不再重復(fù)。
步驟101b:按照所讀取的緩存數(shù)據(jù)文件對(duì)受保護(hù)裝置中的緩存數(shù)據(jù)進(jìn)行恢復(fù)。
這里,受保護(hù)裝置可以是數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存。
步驟101c:在緩存數(shù)據(jù)恢復(fù)完成后,結(jié)束流程。
圖4為本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例中使用兩個(gè)存儲(chǔ)設(shè)備進(jìn)行數(shù) 據(jù)恢復(fù)的流程圖,這兩個(gè)存儲(chǔ)設(shè)備分別為一個(gè)從屬存儲(chǔ)設(shè)備和主存儲(chǔ)設(shè)備,在圖4中,將控制主存儲(chǔ)設(shè)備的裝置記為sc0,將控制從屬存儲(chǔ)設(shè)備的裝置記為sc1,可以理解的是,sc0和sc1可以是同一個(gè)裝置,也可以是不同的裝置。
如圖4所示,上述使用兩個(gè)存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)恢復(fù)的流程包括:
步驟101a:在數(shù)據(jù)存儲(chǔ)系統(tǒng)上電后,sc0和sc1分別讀取對(duì)應(yīng)的存儲(chǔ)設(shè)備中保存的緩存數(shù)據(jù)文件。
這里,讀取對(duì)應(yīng)的存儲(chǔ)設(shè)備中保存的緩存數(shù)據(jù)文件已經(jīng)在步驟101中作出說明,這里不再重復(fù)。
步驟101b:sc0將主存儲(chǔ)設(shè)備的讀取統(tǒng)計(jì)信息發(fā)送至sc1。
這里,主存儲(chǔ)設(shè)備的讀取統(tǒng)計(jì)信息包括:主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào)、以及主存儲(chǔ)設(shè)備讀取失敗的緩存數(shù)據(jù)文件的序號(hào)。
步驟101c:sc1根據(jù)主存儲(chǔ)設(shè)備的讀取統(tǒng)計(jì)信息,將從屬存儲(chǔ)設(shè)備保存的未能在主存儲(chǔ)設(shè)備中成功讀取的緩存數(shù)據(jù)文件發(fā)送至sc0。
步驟101d:sc0根據(jù)來自主設(shè)備和從屬存儲(chǔ)設(shè)備的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
步驟101e:sc0在數(shù)據(jù)恢復(fù)完成后,向sc1發(fā)出通知信息,通知sc1緩存數(shù)據(jù)恢復(fù)已經(jīng)完成。
在本發(fā)明的緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例,還可以根據(jù)數(shù)據(jù)恢復(fù)控制信號(hào)來確定是否進(jìn)行緩存數(shù)據(jù)恢復(fù);具體地說,在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),向至少一個(gè)存儲(chǔ)設(shè)備寫入掉電信息;在未接收到數(shù)據(jù)恢復(fù)控制信號(hào)時(shí),不進(jìn)行緩存數(shù)據(jù)的恢復(fù);在接收到數(shù)據(jù)恢復(fù)控制信號(hào)時(shí),讀取對(duì)應(yīng)的存儲(chǔ)設(shè)備中的掉電信息,如果不能成功讀取出掉電信息,則不進(jìn)行緩存數(shù)據(jù)的恢復(fù);反之,如果能夠成功讀取出掉電信息,則基于讀取出的掉電信息,判斷數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生異常掉電,此時(shí)再進(jìn)行緩存數(shù)據(jù)的恢復(fù);這里,緩存數(shù)據(jù)的恢復(fù)過程已經(jīng)在步驟100和步驟101中做出說明,這里不再重復(fù)。
應(yīng)用本發(fā)明緩存數(shù)據(jù)保護(hù)方法的第一實(shí)施例,在至少兩個(gè)存儲(chǔ)設(shè)備中均進(jìn)行緩存數(shù)據(jù)的備份,實(shí)現(xiàn)了數(shù)據(jù)鏡像;在進(jìn)行緩存數(shù)據(jù)恢復(fù)時(shí),可以從從屬存 儲(chǔ)設(shè)備中獲取在主存儲(chǔ)設(shè)備中未能讀取的緩存數(shù)據(jù)文件,提高了緩存數(shù)據(jù)文件的可恢復(fù)性;另外,通過使用緩存數(shù)據(jù)文件的特征碼,可以保證每個(gè)存儲(chǔ)設(shè)備的存儲(chǔ)介質(zhì)出現(xiàn)區(qū)域損壞時(shí),找到后續(xù)的緩存數(shù)據(jù)文件的位置或元數(shù)據(jù),從而繼續(xù)讀取后續(xù)的緩存數(shù)據(jù)文件,如此,進(jìn)一步提高了緩存數(shù)據(jù)的可恢復(fù)性。
第二實(shí)施例
針對(duì)本發(fā)明第一實(shí)施例的緩存數(shù)據(jù)保護(hù)方法,本發(fā)明第二實(shí)施例提供了一種緩存數(shù)據(jù)保護(hù)裝置。
圖5為本發(fā)明實(shí)施例緩存數(shù)據(jù)保護(hù)裝置的結(jié)構(gòu)示意圖,如圖5所示,該裝置應(yīng)用于數(shù)據(jù)存儲(chǔ)系統(tǒng),該裝置包括:第一存儲(chǔ)模塊500、讀取模塊501和恢復(fù)模塊502;其中,
第一存儲(chǔ)模塊500,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),將數(shù)據(jù)存儲(chǔ)系統(tǒng)的內(nèi)存中的每一個(gè)緩存數(shù)據(jù)文件分別存儲(chǔ)到n個(gè)存儲(chǔ)設(shè)備中,n為大于1的自然數(shù);所述n個(gè)存儲(chǔ)設(shè)備包括1個(gè)主存儲(chǔ)設(shè)備和n-1個(gè)從屬存儲(chǔ)設(shè)備;
讀取模塊501,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)重新上電時(shí),從每個(gè)存儲(chǔ)設(shè)備讀取數(shù)據(jù)存儲(chǔ)系統(tǒng)掉電時(shí)存儲(chǔ)的緩存數(shù)據(jù)文件;
恢復(fù)模塊502,用于在從主存儲(chǔ)設(shè)備讀取任意一個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
具體地,所述恢復(fù)模塊502,用于獲取未能從主存儲(chǔ)設(shè)備成功讀取的緩存數(shù)據(jù)文件的序號(hào),基于所獲取的緩存數(shù)據(jù)文件的序號(hào),在從至少一個(gè)從屬存儲(chǔ)設(shè)備讀取出的緩存數(shù)據(jù)文件中找出相應(yīng)的緩存數(shù)據(jù)文件;基于所找出的緩存數(shù)據(jù)文件,進(jìn)行緩存數(shù)據(jù)恢復(fù)。
進(jìn)一步地,所述裝置還包括第二存儲(chǔ)模塊503,所述第二存儲(chǔ)模塊,用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),存儲(chǔ)每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,所述每個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息包括:對(duì)應(yīng)的緩存數(shù)據(jù)文件的元數(shù)據(jù)和下一個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
所述讀取模塊501,具體用于在讀取第i個(gè)緩存數(shù)據(jù)文件后,基于第i個(gè)緩存數(shù)據(jù)文件的標(biāo)識(shí)信息,讀取第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù);基于第i+1個(gè) 緩存數(shù)據(jù)文件的元數(shù)據(jù),從對(duì)應(yīng)存儲(chǔ)設(shè)備中讀取第i+1個(gè)緩存數(shù)據(jù)文件,i取1至m-1,m表示數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí)內(nèi)存中存儲(chǔ)的緩存數(shù)據(jù)文件的個(gè)數(shù)。
進(jìn)一步地,所述裝置還包括第三存儲(chǔ)模塊504,所述第三存儲(chǔ)模塊504,具體用于在數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)生掉電時(shí),存儲(chǔ)第1個(gè)至第m-1個(gè)緩存數(shù)據(jù)文件的特征碼,其中,第i個(gè)緩存文件的特征碼,用于指示第i+1個(gè)緩存數(shù)據(jù)文件的位置信息、第i+1個(gè)個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)或第i+1個(gè)緩存數(shù)據(jù)文件的元數(shù)據(jù)位置信息;
所述讀取模塊501,具體用于在從主存儲(chǔ)設(shè)備讀取第i個(gè)緩存數(shù)據(jù)文件失敗時(shí),基于第i個(gè)緩存數(shù)據(jù)文件的特征碼,從主存儲(chǔ)設(shè)備讀取第i+1個(gè)緩存數(shù)據(jù)文件。
這里,所述第一存儲(chǔ)模塊500,還用于在存儲(chǔ)各個(gè)緩存數(shù)據(jù)文件之前,基于內(nèi)存中緩存數(shù)據(jù)的基數(shù)樹,找出待存儲(chǔ)的各個(gè)緩存數(shù)據(jù)文件。
在實(shí)際應(yīng)用中,所述第一存儲(chǔ)模塊500、讀取模塊501、恢復(fù)模塊502、第二存儲(chǔ)模塊503和第三存儲(chǔ)模塊504均可由位于終端中的中央處理器(centralprocessingunit,cpu)、微處理器(microprocessorunit,mpu)、數(shù)字信號(hào)處理器(digitalsignalprocessor,dsp)、或現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray,fpga)等實(shí)現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可 編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。