一種基于寫時復制的文件系統(tǒng)中回收檢查點的方法和裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種基于寫時復制的文件系統(tǒng)中回收檢查點的方法和裝置,所述回收檢查點的方法包括:根據(jù)檢查點回收指令獲得所述文件系統(tǒng)在上次檢查點回收時刻到本次檢查點回收時刻之間分配的M個數(shù)據(jù)塊,M為不小于1的整數(shù);其中,所述M個數(shù)據(jù)塊為上次檢查點回收時刻到本次檢查點回收時刻之間生成的檢查點和快照中的至少一種分配的數(shù)據(jù)塊;對所述M個數(shù)據(jù)塊中需要保留的數(shù)據(jù)塊的引用次數(shù)進行固定步長的加操作,從所述M個數(shù)據(jù)塊中確定需要回收的第一數(shù)據(jù)塊;從為所述上次檢查點回收時刻保留的檢查點和快照中的至少一種分配的N個數(shù)據(jù)塊中確定需要回收的第二數(shù)據(jù)塊,N為不小于1的整數(shù);回收所述第一數(shù)據(jù)塊和所述第二數(shù)據(jù)塊。
【專利說明】—種基于寫時復制的文件系統(tǒng)中回收檢查點的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于寫時復制的文件系統(tǒng)中回收檢查點的方法和裝置。
【背景技術(shù)】
[0002]寫時復制(簡稱:C0W ;英文:Copy On Write)是指當對文件系統(tǒng)中的數(shù)據(jù)進行改動的時候,并不真地去改動原數(shù)據(jù),而是把要改動的數(shù)據(jù)復制到在磁盤的空白區(qū)??梢钥闯?,由于在寫的過程中,原數(shù)據(jù)沒有被破壞,所以能保障數(shù)據(jù)的一致性,而且不存在二次寫懲罰,同時避免了由二次寫懲罰帶來的小寫問題,所以COW文件系統(tǒng)的應用領(lǐng)域越來越廣。
[0003]在COW文件系統(tǒng)中,每次生成檢查點(checkpoint,簡寫為ckp)或者快照(snapshot)的時候,都會從檢查點或者快照的根部向下遍歷進行加引用計數(shù),若數(shù)據(jù)塊的引用計數(shù)在被加I后則會繼續(xù)向下遍歷,若數(shù)據(jù)塊的引用計數(shù)在被加I后大于I就不再向下遍歷。在COW文件系統(tǒng)中,包括引用樹的最上層為超級塊(簡稱:sb ;英文:superblock),被超級塊引用的可以是檢查點、快照、根區(qū)(ROOT)、索引節(jié)點(inode)等等。
[0004]請參考圖1A,圖1A是現(xiàn)有技術(shù)中COW文件系統(tǒng)中具有檢查點l(ckpl)的引用示意圖,如圖1A所示,該檢查點I中包括編號為A—H的8個數(shù)據(jù)塊,對檢查點I執(zhí)行加引用計數(shù)遍歷可知其引用計數(shù)為:
[0005]
【權(quán)利要求】
1.一種基于寫時復制的文件系統(tǒng)中回收檢查點的方法,其特征在于,包括: 根據(jù)檢查點回收指令獲得所述文件系統(tǒng)在上次檢查點回收時刻到本次檢查點回收時刻之間分配的M個數(shù)據(jù)塊,M為不小于I的整數(shù);其中,所述M個數(shù)據(jù)塊為上次檢查點回收時刻到本次檢查點回收時刻之間生成的檢查點和快照中的至少一種分配的數(shù)據(jù)塊; 對所述M個數(shù)據(jù)塊中需要保留的數(shù)據(jù)塊的引用次數(shù)進行固定步長的加操作,從所述M個數(shù)據(jù)塊中確定需要回收的第一數(shù)據(jù)塊; 從為所述上次檢查點回收時刻保留的檢查點和快照中的至少一種分配的N個數(shù)據(jù)塊中確定需要回收的第二數(shù)據(jù)塊,N為不小于I的整數(shù); 回收所述第一數(shù)據(jù)塊和所述第二數(shù)據(jù)塊。
2.如權(quán)利要求1所述的方法,其特征在于,所述對所述M個數(shù)據(jù)塊中需要保留的數(shù)據(jù)塊的引用次數(shù)進行固定步長的加操作,從所述M個數(shù)據(jù)塊中確定需要回收的第一數(shù)據(jù)塊,具體包括: 當上次檢查點回收時刻到本次檢查點回收時刻之間只生成檢查點時,則對為當前最新生成的檢查點分配的K個數(shù)據(jù)塊的引用次數(shù)進行所述固定步長的加操作,獲得所述K個數(shù)據(jù)塊的第一引用計數(shù);從所述M個數(shù)據(jù)塊中除所述K個數(shù)據(jù)塊外的數(shù)據(jù)塊中確定所述第一數(shù)據(jù)塊;或 當上次檢查點回收時刻到本次檢查點回收時刻之間既生成檢查點又生成快照時,則對為上次檢查點回收時刻到本次檢查點回收時刻之間生成的快照和當前最新生成的檢查點分配的K個數(shù)據(jù)塊的引用次數(shù)進行所述固定步長的加操作,獲得所述K個數(shù)據(jù)塊的第一引用計數(shù);從所述M個數(shù)據(jù)塊中除所述K個數(shù)據(jù)塊外的數(shù)據(jù)塊中確定所述第一數(shù)據(jù)塊。
3.如權(quán)利要求2所述的方法,其特征在于,所述從為所述上次檢查點回收時刻保留的檢查點和快照中的至少一種分配的N個數(shù)據(jù)塊中確定需要回收的第二數(shù)據(jù)塊,具體包括: 對所述N個數(shù)據(jù)塊中的為所述上次檢查點回收時刻保留的檢查點分配的L個數(shù)據(jù)塊的引用次數(shù)進行所述固定步長的減操作,確定所述L個數(shù)據(jù)塊的第二引用計數(shù);其中,所述獲得所述K個數(shù)據(jù)塊的第一引用計數(shù)之前,所述N個數(shù)據(jù)塊的引用計數(shù)為第一參考引用計數(shù); 根據(jù)所述第一引用計數(shù)、所述第二引用計數(shù)和所述第一參考引用計數(shù),從所述N個數(shù)據(jù)塊中確定所述第二數(shù)據(jù)塊。
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 根據(jù)所述第一引用計數(shù)、所述第二引用計數(shù)和所述第一參考引用計數(shù),確定所述本次檢查點回收需要保留的數(shù)據(jù)塊的引用計數(shù)作為當前第一參考引用計數(shù)。
5.如權(quán)利要求3所述的方法,其特征在于,在所述文件系統(tǒng)包括上次檢查點回收截止根區(qū)、本次檢查點回收截止根區(qū)和實時根區(qū)時,其中,所述上次檢查點回收截止根區(qū)為對所述N個數(shù)據(jù)塊進行索引的根區(qū),所述實時根區(qū)為對所述K個數(shù)據(jù)塊進行索引的根區(qū),所述本次檢查點回收截 止根區(qū)為在所述文件系統(tǒng)獲得所述檢查點回收指令時復制所述實時根區(qū)內(nèi)索引關(guān)系的根區(qū)。
6.如權(quán)利要求5所述的方法,其特征在于,在所述回收所述第一數(shù)據(jù)塊和所述第二數(shù)據(jù)塊之后,所述方法還包括: 刪除所述上次檢查點回收截止根區(qū)內(nèi)的數(shù)據(jù);將所述本次檢查點回收截止根區(qū)內(nèi)的數(shù)據(jù)復制到所述上次檢查點回收截止根區(qū)中。
7.一種基于寫時復制的文件系統(tǒng)中回收檢查點的裝置,其特征在于,包括: 獲得單元,用于根據(jù)檢查點回收指令獲得文件系統(tǒng)在上次檢查點回收時刻到本次檢查點回收時刻之間分配的M個數(shù)據(jù)塊,M為不小于I的整數(shù);其中,所述M個數(shù)據(jù)塊為上次檢查點回收時刻到本次檢查點回收時刻之間生成的檢查點和快照中的至少一種分配的數(shù)據(jù)塊; 第一確定單元,用于對所述M個數(shù)據(jù)塊中需要保留的數(shù)據(jù)塊的引用次數(shù)進行固定步長的加操作,從所述M個數(shù)據(jù)塊中確定需要回收的第一數(shù)據(jù)塊; 第二確定單元,用于從為所述上次檢查點回收時刻保留的檢查點和快照中的至少一種分配的N個數(shù)據(jù)塊中確定需要回收的第二數(shù)據(jù)塊,N為不小于I的整數(shù); 回收單元,用于回收所述第一數(shù)據(jù)塊和所述第二數(shù)據(jù)塊。
8.如權(quán)利要求7所述的裝置,其特征在于,所述第一確定單元具體用于當上次檢查點回收時刻到本次檢查點回收時刻之間只生成檢查點時,則對為當前最新生成的檢查點分配的K個數(shù)據(jù)塊的 引用次數(shù)進行所述固定步長的加操作,獲得所述K個數(shù)據(jù)塊的第一引用計數(shù),從所述M個數(shù)據(jù)塊中除所述K個數(shù)據(jù)塊外的數(shù)據(jù)塊中確定所述第一數(shù)據(jù)塊;或當上次檢查點回收時刻到本次檢查點回收時刻之間既生成檢查點又生成快照時,則對為上次檢查點回收時刻到本次檢查點回收時刻之間生成的快照和當前最新生成的檢查點分配的K個數(shù)據(jù)塊的引用次數(shù)進行所述固定步長的加操作,獲得所述K個數(shù)據(jù)塊的第一引用計數(shù),所述M個數(shù)據(jù)塊中除所述K個數(shù)據(jù)塊外的數(shù)據(jù)塊中確定所述第一數(shù)據(jù)塊。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第二確定單元具體用于對所述N個數(shù)據(jù)塊中的為所述上次檢查點回收時刻保留的檢查點分配的L個數(shù)據(jù)塊的引用次數(shù)進行所述固定步長的減操作,確定所述L個數(shù)據(jù)塊當前的引用計數(shù);其中,所述獲得所述K個數(shù)據(jù)塊的第一引用計數(shù)之前,所述N個數(shù)據(jù)塊的引用計數(shù)為第一參考引用計數(shù),并根據(jù)所述第一引用計數(shù)、所述第二引用計數(shù)和所述第一參考引用計數(shù),從所述N個數(shù)據(jù)塊中確定所述第二數(shù)據(jù)塊。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括第三確定單元,所述第三確定單元用于根據(jù)所述第一引用計數(shù)、所述第二引用計數(shù)和所述第一參考引用計數(shù),確定所述本次檢查點回收需要保留的數(shù)據(jù)塊的引用計數(shù)作為當前第一參考引用計數(shù)。
11.如權(quán)利要求9所述的裝置,其特征在于,在所述文件系統(tǒng)包括上次檢查點回收截止根區(qū)、本次檢查點回收截止根區(qū)和實時根區(qū)時,其中,所述上次檢查點回收截止根區(qū)為對所述N個數(shù)據(jù)塊進行索引的根區(qū),所述實時根區(qū)為對所述文件系統(tǒng)在所述K個數(shù)據(jù)塊進行索引的根區(qū),所述本次檢查點回收截止根區(qū)為在所述文件系統(tǒng)獲得所述檢查點回收指令時復制所述實時根區(qū)內(nèi)索引關(guān)系的根區(qū)。
12.如權(quán)利要求11所述的裝置,其特征在于,所述回收單元具體還用于在回收所述第一數(shù)據(jù)塊和所述第二數(shù)據(jù)塊之后,刪除所述上次檢查點回收截止根區(qū)內(nèi)的數(shù)據(jù),并將所述本次檢查點回收截止根區(qū)內(nèi)的數(shù)據(jù)復制到所述上次檢查點回收截止根區(qū)中。
【文檔編號】G06F17/30GK103984609SQ201410231326
【公開日】2014年8月13日 申請日期:2014年5月28日 優(yōu)先權(quán)日:2014年5月28日
【發(fā)明者】謝勇, 李育國, 鐘延輝, 付旭東 申請人:華為技術(shù)有限公司