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