專利名稱:記錄組織方法和記錄組織結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)服務(wù)器的存儲系統(tǒng),更具體地,涉及記錄的記錄組織方法和記錄組織結(jié)構(gòu)。
背景技術(shù):
在并行存儲系統(tǒng)中,經(jīng)常需要記錄一些輔助記錄或者索引。例如當磁盤損壞后為了對其上面的數(shù)據(jù)進行快速恢復(fù),需要記錄該磁盤上都存在哪些對象,這就需要在文件創(chuàng)建時添加記錄、刪除時刪除對應(yīng)記錄。此外,由于數(shù)據(jù)服務(wù)器是多副本的,所以還需要記錄不一致對象,修復(fù)完成后刪除對應(yīng)記錄。為了提高元數(shù)據(jù)性能,刪除采用了異步方式,即,在元數(shù)據(jù)服務(wù)器上置刪除標志后即應(yīng)答客戶端,真正的inode (索引節(jié)點)及數(shù)據(jù)的清除是由垃圾回收線程處理的。此外,配額功能也需要記錄哪些文件發(fā)生了所有者修改等操作,由后臺線程向數(shù)據(jù)服務(wù)器發(fā)送消息修改相關(guān)配額信息。為了防止斷電記錄丟失進而導(dǎo)致部分操作不能完成,這些記錄需要記錄到底層磁盤文件,同時為了進一步提高可靠性,這些記錄還需要利用元數(shù)據(jù)的日志機制記錄日志(這樣這些記錄也就能達到主從互備,與元數(shù)據(jù)具有同等可靠性)。為了充分利用元數(shù)據(jù)的已有機制,現(xiàn)有的實現(xiàn)方式是每種記錄對應(yīng)一個目錄inode,其中每條記錄當做inode的一個dentry項進行管理,這樣只需要很少的額外工作便可以加入記錄,當記錄無效時也可以直接利用dentry項刪除接口進行刪除。然而,這種實現(xiàn)方式存在以下問題I)不利于擴展由于記錄的元數(shù)據(jù)即文件系統(tǒng)的inode,而inode的預(yù)留字段是有限的,當記錄元數(shù)據(jù)需要增加的屬性超出限制時就會難以加入(為了輔助信息而修改作為文件系統(tǒng)元數(shù)據(jù)的最重要的結(jié)構(gòu)inode是不太可取的);2)浪費空間由于每個記錄當做一個dentry項進行記錄,所以當然會繼承dentry項的所有屬性,但是并非所有屬性都是本記錄所必須的;3)也是這種方式最嚴重的缺陷,這種實現(xiàn)方式會影響日志的應(yīng)用性能,當元數(shù)據(jù)壓力比較大時會成為系統(tǒng)的瓶頸,影響整體性能元數(shù)據(jù)擴展hash追求的目標是dentry項在各個hash桶內(nèi)盡量均勻,而這些輔助記錄的記錄量是非常大的(因為每個ParaStor文件系統(tǒng)的文件會用到多個磁盤),當擴展hash比較大時,日志應(yīng)用會導(dǎo)致磁頭來回掃描,進而大大降低應(yīng)用效率,當日志壓力堆到一定程度就會暫時拒絕元數(shù)據(jù)日志提交請求,進而影響整個元數(shù)據(jù)的性能。針對相關(guān)技術(shù)中的問題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
針對相關(guān)技術(shù)中的問題,本發(fā)明提出一種記錄組織方法和記錄組織結(jié)構(gòu),能夠提高元數(shù)據(jù)服務(wù)器的性能并且能夠進行很好的擴展。根據(jù)本發(fā)明的一個方面,提供了一種記錄組織方法,包括為每種記錄分配一個唯一標識;在對應(yīng)的磁盤文件中建立與每種記錄相對應(yīng)的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件;以及使數(shù)據(jù)文件只進行連續(xù)追加寫入操作。優(yōu)選地,元數(shù)據(jù)信息在元數(shù)據(jù)文件中以唯一標識為索引。優(yōu)選地,當數(shù)據(jù)文件中的一條記錄無效時,在數(shù)據(jù)文件的末尾插入一條與無效記錄對應(yīng)的對消記錄。優(yōu)選地,當需要使用記錄時,對數(shù)據(jù)文件進行回收處理,將無效記錄和對消記錄進行對消。更優(yōu)選地,利用預(yù)先注冊的回收函數(shù)進行回收處理。更優(yōu)選地,順序掃描數(shù)據(jù)文件來進行回收處理。更優(yōu)選地,回收處理包括將所有對消記錄加入一個哈希鏈表;順序掃描數(shù)據(jù)文 件,對于每個有效記錄,在哈希鏈表中查找對消記錄;如果找到對應(yīng)的對消記錄,則從哈希鏈表中摘除該對消記錄;如果沒有找到對應(yīng)的對消記錄,則將該有效記錄寫入一個新的臨時文件。優(yōu)選地,在掃描完所有的有效記錄之后,用新的臨時文件代替數(shù)據(jù)文件。優(yōu)選地,在生成日志時只記錄邏輯日志。根據(jù)本發(fā)明的另一方面,提供了一種記錄組織結(jié)構(gòu),該記錄組織結(jié)構(gòu)包括對應(yīng)于一種記錄的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,為每一種記錄分配一個唯一標識并且使每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件,并且對數(shù)據(jù)文件只進行連續(xù)追加寫入操作。本發(fā)明通過這種簡單的元數(shù)據(jù)組織方式,消除了數(shù)據(jù)文件記錄的索引需求,通過追加寫入對消記錄來實現(xiàn)記錄刪除,將對objfile文件的訪問簡化為追加寫入順序讀取,提高了磁盤讀寫性能,并且用邏輯日志來解決線程并發(fā)帶來的日志生成時某些信息不能確定的問題。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是根據(jù)本發(fā)明的記錄組織方法的流程圖;圖2是根據(jù)本發(fā)明實施例的數(shù)據(jù)組織結(jié)構(gòu)的示意圖;以及圖3是示出根據(jù)本發(fā)明實施例的記錄組織方式和對消結(jié)果的示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明的發(fā)明人提出了一種簡單的記錄組織方式。以下參照圖I至圖3進行詳細描述。
圖I是根據(jù)本發(fā)明的記錄組織方法的流程圖。參照圖1,根據(jù)本發(fā)明的記錄組織方法包括S102,為每種記錄分配一個唯一標識;S104,在對應(yīng)的磁盤文件中建立與每種記錄相對應(yīng)的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件;以及S106,使數(shù)據(jù)文件只進行連續(xù)追加寫入操作。圖2是根據(jù)本發(fā)明實施例的數(shù)據(jù)組織結(jié)構(gòu)的示意圖。參照圖2,根據(jù)本發(fā)明的數(shù)據(jù)組織結(jié)構(gòu)為為每種記錄分配一個唯一標識(我們稱之為fid,從I開始),每種記錄對應(yīng)一個磁盤文件用來存放具體記錄(文件以fid命名,我們稱為objfile文件(數(shù)據(jù)文件)),一個結(jié)構(gòu)用來存放相關(guān)元數(shù)據(jù)信息(如當前記錄數(shù)等等),元數(shù)據(jù)信息存放在以O(shè)命名的文件中(稱為objfile元數(shù)據(jù)文件),元數(shù)據(jù)信息在objfile元數(shù)據(jù)文件中以fid為索引。 圖2中僅示出了“inode異步刪除1”和“不一致對象2”兩種記錄對應(yīng)的數(shù)據(jù)文件,但本領(lǐng)域技術(shù)人員應(yīng)該理解,還可以具有其他多種記錄及其對應(yīng)的數(shù)據(jù)文件。為了簡化處理,當數(shù)據(jù)文件中的一條記錄A無效時,不會立即將其從objfile文件中刪除,而是在文件末尾插入一條對消記錄A’。這里的一個難點是日志系統(tǒng)寫磁盤文件是根據(jù)日志記錄的文件名及偏移量進行的,objfile記錄產(chǎn)生線程有可能是并發(fā)的,而且每個產(chǎn)生線程可能一次產(chǎn)生多個objfile文件記錄,當日志生成時記錄在文件中的偏移量是不確定的(objfile鎖不能加到整個日志事物生命周期,因為這是關(guān)鍵路徑會降低元數(shù)據(jù)性能,所以先生成的日志不一定先提交)。針對該問題,本發(fā)明的發(fā)明人提出了一種解決辦法,即在日志生成時只記錄邏輯日志,而邏輯日志展開線程是唯一的(日志系統(tǒng)碰到邏輯日志會調(diào)用邏輯日志回調(diào)函數(shù)進行展開)。當需要使用記錄時,首先對objfile文件進行回收,將A與A’進行對消,只留下有效記錄供使用。為了提高可擴展性,objfile支持回收函數(shù)注冊,各類記錄可以根據(jù)特定需要預(yù)先注冊特定的回收函數(shù),在進行回收處理時使用注冊的回收函數(shù)。此外,也可以使用默認方式進行回收。默認回收方式為順序掃描objfile文件,將對消記錄加入一個hash鏈表,掃描完成后再次順序掃描文件,本次掃描只關(guān)注有效記錄,對于每個有效記錄,首先在hash鏈表查找對消記錄,如果找到則將對消記錄從hash鏈表摘除,否則將記錄寫入一個新的臨時文件,本次掃描完成后用臨時文件替代objfile文件。objfile文件記錄組織方式及對消結(jié)果在圖3中示出。通過采用上述組織方式,可以實現(xiàn)如下優(yōu)點I)由于對objfile文件只有連續(xù)的追加寫入,而且記錄組織方式簡單,不會由于新記錄的加入導(dǎo)致hash桶擴展,進而搬遷已寫入記錄。所以極大地提高了日志應(yīng)用效率,進行提高了大壓力下元數(shù)據(jù)服務(wù)器的性能。2)沒有無用屬性寫入磁盤文件,與原來方式相比節(jié)省了空間,objfile元數(shù)據(jù)結(jié)構(gòu)及記錄結(jié)構(gòu)專門為這一目的而設(shè),所以沒有冗余信息。3)具有很好的擴展性,不僅體現(xiàn)在objfile相關(guān)結(jié)構(gòu)成員添加/刪除上,而且當有新的輔助記錄類型產(chǎn)生時,能夠很方便的使用本框架進行擴展,而且可以通過注冊函數(shù)達到特定要求。綜上所述,借助于本發(fā)明的上述技術(shù)方案,通過提出簡單的objfile元數(shù)據(jù)組織方式,為每種記錄分配特定fid,以fid作為相關(guān)元數(shù)據(jù)在objfile元數(shù)據(jù)文件中的索引,消除了 objfile文件記錄的索引需求,通過追加寫入對消記錄來實現(xiàn)記錄刪除,從而將對objfile文件的訪問簡化為追加寫入順序讀取,提高了磁盤讀寫性能。此外,用邏輯日志來解決線程并發(fā)帶來的日志生成時某些信息不能確定的問題。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)?!?br>
權(quán)利要求
1.一種記錄組織方法,其特征在于,所述方法包括 為每種記錄分配一個唯一標識; 在對應(yīng)的磁盤文件中建立與每種記錄相對應(yīng)的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件;以及 使所述數(shù)據(jù)文件只進行連續(xù)追加寫入操作。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,元數(shù)據(jù)信息在所述元數(shù)據(jù)文件中以所述唯一標識為索引。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,當所述數(shù)據(jù)文件中的一條記錄無效時,在所述數(shù)據(jù)文件的末尾插入一條與無效記錄對應(yīng)的對消記錄。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,當需要使用記錄時,對所述數(shù)據(jù)文件進行回收處理,將所述無效記錄和所述對消記錄進行對消。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,利用預(yù)先注冊的回收函數(shù)進行所述回收處理。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,順序掃描所述數(shù)據(jù)文件來進行所述回收處理。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述回收處理包括 將所有對消記錄加入一個哈希鏈表; 順序掃描所述數(shù)據(jù)文件,對于每個有效記錄,在所述哈希鏈表中查找對消記錄; 如果找到對應(yīng)的對消記錄,則從所述哈希鏈表中摘除該對消記錄; 如果沒有找到對應(yīng)的對消記錄,則將該有效記錄寫入一個新的臨時文件。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,在掃描完所有的有效記錄之后,用所述新的臨時文件代替所述數(shù)據(jù)文件。
9.根據(jù)權(quán)利要求I至8中任一項所述的方法,其特征在于,在生成日志時只記錄邏輯日O
10.一種記錄組織結(jié)構(gòu),其特征在于,所述記錄組織結(jié)構(gòu)包括對應(yīng)于一種記錄的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,為每一種記錄分配一個唯一標識并且使每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件,并且對所述數(shù)據(jù)文件只進行連續(xù)追加寫入操作。
全文摘要
本發(fā)明公開了記錄組織方法和記錄組織結(jié)構(gòu),其中,該方法包括為每種記錄分配一個唯一標識;在對應(yīng)的磁盤文件中建立與每種記錄相對應(yīng)的數(shù)據(jù)文件和元數(shù)據(jù)文件,其中,每種記錄的數(shù)據(jù)文件對應(yīng)于一個磁盤文件;以及使數(shù)據(jù)文件只進行連續(xù)追加寫入操作。通過本發(fā)明的技術(shù)方案,能夠提高大壓力下元數(shù)據(jù)服務(wù)器的性能并且具有很好的擴展性。
文檔編號G06F12/02GK102929789SQ20121035722
公開日2013年2月13日 申請日期2012年9月21日 優(yōu)先權(quán)日2012年9月21日
發(fā)明者馬照云, 楊浩, 馬振杰, 苗艷超, 劉新春, 邵宗有 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司