本發(fā)明涉及數(shù)據(jù)存儲,特別涉及一種基于快照技術(shù)的數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
1、閃存友好型文件系統(tǒng)(f2fs)是目前主流的閃存文件系統(tǒng)?;谌罩窘Y(jié)構(gòu)文件系統(tǒng)的特性,以及寫時復(fù)制(cow)技術(shù),f2fs能夠充分發(fā)揮存儲的讀寫性能和保持文件的完整性,但在備份效率上有待提升。
2、快照技術(shù)實質(zhì)上是輕量級的數(shù)據(jù)快速備份技術(shù),通過復(fù)制文件系統(tǒng)元數(shù)據(jù)來保留系統(tǒng)中目錄和文件的歷史映像。但現(xiàn)有的快照都采用了粗粒度的版本生成與管理策略,在執(zhí)行快照操作時會生成整個文件系統(tǒng)的映像,這樣非常耗費存儲資源,并且不能滿足用戶僅對部分目錄或文件保留版本的需求,不利于管理。
技術(shù)實現(xiàn)思路
1、為了解決上述技術(shù)問題,提出了本發(fā)明。本發(fā)明的實施例提供了一種基于快照技術(shù)的數(shù)據(jù)存儲方法及裝置,可以基于目錄級別的細(xì)粒度快照技術(shù),提供數(shù)據(jù)存儲和備份。
2、根據(jù)本發(fā)明的一個方面,提供了一種基于快照技術(shù)的數(shù)據(jù)存儲方法,包括:對文件系統(tǒng)磁盤布局進(jìn)行劃分,獲得元數(shù)據(jù)區(qū)域和主區(qū)域;其中,所述元數(shù)據(jù)區(qū)域包括版本地址表,所述主區(qū)域包括存儲索引節(jié)點段區(qū)域、數(shù)據(jù)段區(qū)域和版本段區(qū)域;響應(yīng)于快照請求指令創(chuàng)建目錄快照時,在版本地址表中創(chuàng)建新條目,記錄目錄快照名和當(dāng)前系統(tǒng)時間,作為索引節(jié)點;其中,所述索引節(jié)點用于記錄子快照創(chuàng)建時刻的目錄索引節(jié)點編號和子目錄索引節(jié)點位置;基于鏈?zhǔn)焦芾斫Y(jié)構(gòu)存儲索引節(jié)點,以存儲不同版本的目錄快照;其中,所述鏈?zhǔn)焦芾斫Y(jié)構(gòu)的每個索引節(jié)點均包括創(chuàng)建目錄快照時的必要信息、目錄快照的時間戳、指向數(shù)據(jù)塊的指針以及下一目錄快照地址的指針。
3、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:記錄不同數(shù)據(jù)塊被目錄快照引用的次數(shù);當(dāng)創(chuàng)建目錄快照時,采用計數(shù)器將數(shù)據(jù)塊的引用次數(shù)加一;當(dāng)目錄快照被刪除時,采用計數(shù)器將數(shù)據(jù)塊的引用次數(shù)減一;當(dāng)數(shù)據(jù)塊的計數(shù)器記錄的引用次數(shù)小于或等于預(yù)設(shè)次數(shù),且沒有正在進(jìn)行的寫操作,將數(shù)據(jù)塊標(biāo)記為無效,以進(jìn)行回收。
4、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法包括:當(dāng)引用次數(shù)大于預(yù)設(shè)次數(shù)的數(shù)據(jù)塊進(jìn)行遷移時,在數(shù)據(jù)塊增加指針指向數(shù)據(jù)塊對應(yīng)的父節(jié)點,通過向上索引,找到包含文件的父目錄第一個版本,然后通過跟蹤目錄快照來查找其他相關(guān)版本,尋址到對應(yīng)地址以進(jìn)行更新。
5、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:在數(shù)據(jù)結(jié)構(gòu)中增加32位int類型的快照時間域;其中,所述快照時間域用于區(qū)分是否為快照節(jié)點;對于非快照節(jié)點,將快照時間域設(shè)置為默認(rèn)值;對于快照節(jié)點,設(shè)置為索引節(jié)點創(chuàng)建的時間;其中,對于同一目錄,快照時間域是一個單調(diào)遞增的值,并且與系統(tǒng)時間一致,以判斷索引階段隸屬于的目錄快照版本。
6、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:創(chuàng)建目錄快照后,當(dāng)對目錄快照下的子目錄樹的索引節(jié)點進(jìn)行修改時,備份歷史索引節(jié)點信息;其中,所述歷史索引節(jié)點信息指向原始數(shù)據(jù);創(chuàng)建目錄快照后,當(dāng)更新數(shù)據(jù)時,保存指向?qū)?yīng)更新數(shù)據(jù)的原始數(shù)據(jù)的索引節(jié)點,同時生成新的索引節(jié)點;其中,更新的索引節(jié)點不進(jìn)行遞歸備份和更新;對應(yīng)索引下增加條目,以記錄新的元數(shù)據(jù)的位置,且在版本段區(qū)域中保存;將新的索引節(jié)點編號和實際地址存入版本地址表中,以形成修改后的目錄索引節(jié)點編號和子目錄索引節(jié)點位置。
7、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:在創(chuàng)建目錄快照之前,若目錄快照保存的是文件將來正常關(guān)閉時的狀態(tài),不對指定目錄進(jìn)行修改;在創(chuàng)建目錄快照之前,若目錄快照保存的是目前文件的狀態(tài),則在文件打開時和每次文件更新時,在版本地址表中目錄讀寫的時候增加互斥,檢查是否父目錄已經(jīng)創(chuàng)建目錄快照;其中,響應(yīng)于快照請求指令創(chuàng)建目錄快照時,在版本地址表中創(chuàng)建新條目,記錄目錄快照名和當(dāng)前系統(tǒng)時間,作為索引節(jié)點,包括:當(dāng)父目錄沒有被創(chuàng)建目錄快照時,響應(yīng)于快照請求指令創(chuàng)建目錄快照時,在版本地址表中創(chuàng)建新條目,記錄目錄快照名和當(dāng)前系統(tǒng)時間,作為索引節(jié)點。
8、在一實施例中,基于鏈?zhǔn)焦芾斫Y(jié)構(gòu)存儲索引節(jié)點,以存儲不同版本的目錄快照,包括:以原始目錄的索引節(jié)點作為快照鏈的頭節(jié)點,以進(jìn)行快照鏈尋址;鏈表采用頁面置換算法,當(dāng)文件系統(tǒng)創(chuàng)建一個新的目錄快照時,鏈表頭部的節(jié)點會添加一個新的子節(jié)點,版本地址表保存了目錄到最近目錄快照的索引節(jié)點地址的映射,以通過對快照鏈的訪問確認(rèn)不同的歷史版本;其中,新的子節(jié)點指向數(shù)據(jù)塊的指針初始時與父節(jié)點共享,直到數(shù)據(jù)塊被修改。
9、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法包括:當(dāng)更新鏈表頭部的節(jié)點時,若更新前保存的節(jié)點的更新時間晚于目錄快照創(chuàng)建時間,替換鏈表頭部的節(jié)點;若更新前保存的節(jié)點的更新時間早于目錄快照創(chuàng)建時間或者預(yù)設(shè)時間,新增索引節(jié)點并指向現(xiàn)有的索引節(jié)點,同時在版本地址表中增加新的索引節(jié)點的索引信息。
10、在一實施例中,基于快照技術(shù)的數(shù)據(jù)存儲方法包括:訪問目錄快照時,根據(jù)路徑信息,如果目錄快照或目錄快照對應(yīng)的父目錄在版本地址表中,則在檢索原始索引節(jié)點信息的基礎(chǔ)上,檢查版本地址表中是否有新的元數(shù)據(jù);如果創(chuàng)建目錄快照后鏈表頭部的節(jié)點存在更新,則采用版本地址表中記錄的更新后的元數(shù)據(jù)。
11、根據(jù)本發(fā)明的另一個方面,提供了一種基于快照技術(shù)的數(shù)據(jù)存儲裝置,包括:劃分模塊,用于對文件系統(tǒng)磁盤布局進(jìn)行劃分,獲得元數(shù)據(jù)區(qū)域和主區(qū)域;其中,所述元數(shù)據(jù)區(qū)域包括版本地址表,所述主區(qū)域包括存儲索引節(jié)點段區(qū)域、數(shù)據(jù)段區(qū)域和版本段區(qū)域;創(chuàng)建模塊,用于響應(yīng)于快照請求指令創(chuàng)建目錄快照時,在版本地址表中創(chuàng)建新條目,記錄目錄快照名和當(dāng)前系統(tǒng)時間,作為索引節(jié)點;其中,所述索引節(jié)點用于記錄子快照創(chuàng)建時刻的目錄索引節(jié)點編號和子目錄索引節(jié)點位置;存儲模塊,用于基于鏈?zhǔn)焦芾斫Y(jié)構(gòu)存儲索引節(jié)點,以存儲不同版本的目錄快照;其中,所述鏈?zhǔn)焦芾斫Y(jié)構(gòu)的每個索引節(jié)點均包括創(chuàng)建目錄快照時的必要信息、目錄快照的時間戳、指向數(shù)據(jù)塊的指針以及下一目錄快照地址的指針。
12、本發(fā)明提供的基于快照技術(shù)的數(shù)據(jù)存儲方法及裝置,支持目錄級別的細(xì)粒度、輕量化快照,提供高效、可靠的數(shù)據(jù)保護(hù)機制。使用戶能夠針對關(guān)鍵數(shù)據(jù)進(jìn)行目錄化快照存儲,降低存儲碎片化,節(jié)省存儲資源、提高數(shù)據(jù)的訪問速度和整體系統(tǒng)的運行效率,同時保持?jǐn)?shù)據(jù)保護(hù)的可靠性和及時性。
1.一種基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:
3.根據(jù)權(quán)利要求2所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法,包括:
4.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:
5.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:
6.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法還包括:
7.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于鏈?zhǔn)焦芾斫Y(jié)構(gòu)存儲索引節(jié)點,以存儲不同版本的目錄快照,包括:
8.根據(jù)權(quán)利要求7所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法包括:
9.根據(jù)權(quán)利要求1所述的基于快照技術(shù)的數(shù)據(jù)存儲方法,其特征在于,基于快照技術(shù)的數(shù)據(jù)存儲方法包括:
10.一種基于快照技術(shù)的數(shù)據(jù)存儲裝置,其特征在于,包括: