專利名稱:一種連續數據緩存系統及其數據緩存方法
技術領域:
本發明屬于計算機數據存儲系統和備份方法,具體涉及一種連續數據緩存系統及
其數據緩存方法。
背景技術:
連續數據保護(Continuous Data Protection, CDP)方法,在不影響業務數據運行 的前提下,可以實現持續捕捉或跟蹤目標數據所發生的任何改變,并且能夠恢復到此前任 意時間點。它可以保護從某時刻開始的巻或者文件在此后的任意時刻的數據狀態,也就是 數據的每次改變,都會被無一遺漏地記錄下來。由于此特性,使得CDP具有任意的恢復點目 標和短的恢復時間目標,即微粒度性的優點。同時,連續數據保護方法對存儲系統的性能和 空間提出了更高的要求,每個寫操作都有額外的性能開銷。因此,如何盡可能地降低每個寫 操作的開銷對整個系統帶來的負面影響則成為一個重要的課題。由于連續數據保護系統需 要將保護的數據傳輸到遠端CDP服務器,以便能夠實現容災,而網絡波動是不可避免的,因 此緩存機制設計的好壞對連續數據保護系統數據保護能力的影響是相當大的,如果設計不 當,很容易成為整個系統的瓶頸。 陳麗波,吳慶波在"Linux內核跟蹤機制LTT的研究"(計算機工程2005年31期 61-63) —文中,公開一種Linux跟蹤工具包(Linux TraceToolkit, LTT),其由探測內核模 塊、數據收集模塊、數據提交守護進程模塊、數據表示分析模塊4部分組成,前2個模塊是運 行于操作系統內核層,后2個模塊運行在操作系統應用層,而且LTT的開銷小于2. 5% ,對系 統性能的影響很小。 楊慶等設計一種磁盤陣列架構,該系統提供了連續數據保護功能,但是他們的 系統是通過iSCSI協議實現連續數據保護功能,但是這種方式需要在客戶節點實現對遠 程CDP備份空間的管理,在可靠性、性能開銷、復雜性上都會產生一定的問題;見Q. Yang, W. Xiao, and J. Ren. TRAP—Array :A disk array architecture providing timely recovery to anypoint_in_time.In Proceedings of International Symposium on ComputerArchitecture, 2006。
發明內容
本發明提供一種連續數據緩存系統,同時提供利用該系統的數據緩存方法,解決 由于突發1/0與網絡性能波動帶來的連續數據捕獲能力與保護能力不匹配的問題。
本發明的一種連續數據緩存系統,由內核緩存區、用戶緩存區、內核模塊和守護進 程模塊組成,其特征在于 所述內核緩存區,是在操作系統的內核空間的一片內存區,包括多個內核緩存區 節點,每個內核緩存區節點大小相同,互相獨立;由內核模塊進行管理,存儲用戶寫操作產 生的數據; 所述用戶緩存區,是在操作系統的用戶空間的一片內存區,包括一個或者多個用
4戶緩存區節點,每個用戶緩存區節點大小相同或不同,用戶緩存區節點以循環鏈表的結構 組織;由守護進程模塊進行管理,存儲從內核緩存區拷貝的數據; 所述內核模塊,負責將用戶寫操作的數據存儲進內核緩存區,并將內核緩存區數 據交給守護進程模塊處理; 所述守護進程模塊,包括拷貝線程與發送線程,拷貝線程負責將內核緩存區的數 據拷貝到用戶緩存區;發送線程負責將用戶緩存區數據發送到網絡,同時負責分配或者回 收用戶緩存區節點。 本發明的一種連續數據緩存方法,包括如下步驟 A.初始化步驟在操作系統內核空間設置內核緩存區,并將其分為N個大小相同
的內核緩存區節點,每個內核緩存區節點大小均相同,為幾十KB到幾百KB;在用戶空間申
請一個用戶緩存區節點,大小為幾兆到幾十兆字節;內核模塊等待用戶寫操作指令,守護進 程模塊等待內核模塊的拷貝命令,守護進程模塊的拷貝線程記錄程序開始運行時間,并將
其存入變量tl ; B.內核緩存區數據存儲步驟,當用戶寫操作指令到來時,順序包括以下子步驟
Bl.判斷當前節點容量內核模塊判斷當前使用的內核緩存區節點是否能容納當 前寫操作指令的數據長度,是則轉子步驟B2 ;否則轉子步驟B3 ; B2.存儲數據內核模塊將用戶寫操作產生的數據存入當前使用的內核緩存區節
點中,等待下一次用戶寫操作;當下一次用戶寫操作到來時,轉子步驟B1 ; B3.拷貝通知內核模塊向守護進程模塊發出拷貝命令,通知守護進程模塊拷貝
當前使用的內核緩存區節點的數據,轉子步驟B4 ;所述拷貝命令的數據結構為內核緩存
區節點起始地址、數據總長度和元素數目,所述元素指組織數據的最小長度單位; B4.切換節點切換到下一空內核緩存區節點,轉子步驟B2 ; C.用戶緩存區數據存儲步驟,當內核模塊拷貝命令到來時,順序執行以下子步 驟 CI.記錄時間所述守護進程模塊的拷貝線程記錄當前時間,將其存入變量t2,計 算拷貝事件時間間隔S = t2-tl,同時將變量tl的值更新為變量t2的值;
C2.判斷當前節點容量拷貝線程判斷當前使用的用戶緩存區節點是否能容納當 前拷貝命令的數據總長度,是則轉子步驟C3 ;否則轉子步驟C4 ; C3.拷貝數據拷貝線程根據拷貝命令,將內核緩存區節點起始地址所指明的內 核緩存區節點的數據拷貝到當前用戶緩存區節點,拷貝完畢,通知內核模塊,轉子步驟C5 ; C4.切換節點切換到下一空用戶緩存區節點,轉子步驟C2 ; C5.判斷是否需預分配緩存區節點拷貝線程判斷是否需要增加新的用戶緩存區
節點或者回收多余的用戶緩存區節點,是則增加1個用戶緩存區節點或者回收1個用戶緩
存區節點,轉子步驟C6 ;否則保持用戶緩存區節點數目不變,轉子步驟C6 ;
C6.拷貝線程向發送線程傳遞發送命令,等待內核模塊拷貝命令;所述發送命令 的數據結構為待發送數據所在的用戶緩存區節點、第一個待發送元素的序號、發送元素的 個數、發送數據在用戶緩存區節點的起始地址; D.用戶緩存區數據發送步驟,當拷貝線程的發送命令到來時,順序執行以下子步 驟
Dl.守護進程模塊的發送線程執行發送任務; D2.發送任務完成,發送線程向拷貝線程發送任務完成報告,等待拷貝線程的發送 命令;所述任務完成報告的數據結構為已發送數據的長度、已發送元素的數目。
所述的連續數據緩存方法,其特征在于 所述子步驟C5中,判斷是否需要增加新的用戶緩存區節點或者回收多余的用戶 緩存區節點時,判斷過程如下
El.計算估算時間間隔I :
I = (1-a) I+a S, 式中,S為拷貝事件時間間隔,時間間隔系數a為0. 1 0. 3,a越偏向于0. 1表示
I的取值與先前的拷貝事件時間間隔的關系越大,a越偏向于O. 3表明I的取值與最新一次
拷貝事件時間間隔的關系越大; E2.計算估算時間間隔偏差M: M = (1-b) M+b |S_I|, 式中,時間偏差系數b為0. 2 0. 4, b越偏向于0. 2表示M的取值與先前的估算
時間間隔偏差的關系越大,b越偏向于0. 4表明M的取值與與最新一次估算時間間隔偏差
的關系越大;M的初值為0 ; E3.計算緩存分配參數T : T = 1+4 M ; E4.判斷當前使用的用戶緩存區節點是否為用戶緩存區節點鏈表的最后一個用戶 緩存區節點,是則轉過程E5,否則轉過程E6 ; E5.判斷是否T < A,是則分配一個新的用戶緩存區節點,否則保持用戶緩存區節 點數目不變;缺乏閾值A為被保護的磁盤寫入一個內核緩存區節點大小的數據所需時間的 1 2倍; E6.判斷是否T > B,是則釋放用戶緩存區節點鏈表的最后一個用戶緩存區節點, 否則保持用戶緩存區節點數目不變;富裕閾值B為(3 10) XA。 本發明的系統采用類似于Li皿x跟蹤工具包(LTT)的結構,由內核層的內核模塊 以及用戶層的守護進程模塊構成,為了和這種結構相適應,采用二級緩存機制,包括內核緩 存和用戶緩存,前文已提到LTT的性能開銷小于2. 5%,本發明的系統與LTT的結構類似, 因此性能開銷也很小,同時本發明的系統構建在適用性廣的TCP/IP協議上,和通過iSCSI 協議實現連續數據保護功能的系統相比,無需在客戶節點實現對遠程連續數據保護系統 (CDP)備份空間的管理,降低了客戶節點的復雜性。 本發明的方法考慮到操作系統在內核空間處理問題復雜而用戶空間相對簡單的 特點,在內核緩存區采用簡單的緩存策略較小的緩存區,降低內核處理的復雜度,使之受到 的影響盡可能的小;而在用戶緩存區采用復雜的緩存策略和較大的緩存區,并且提出緩存 預判算法,及時分配或者回收用戶緩存區節點,使得用戶緩存區的利用率最優化,節約系統 內存資源。
圖1為本發明的緩存系統結構示意6
圖2為本發明的數據緩存方法流程示意圖; 圖3為內核緩存區數據存儲步驟流程示意圖; 圖4為用戶緩存區數據存儲步驟流程示意圖; 圖5為用戶緩存區數據發送步驟流程示意圖; 圖6為拷貝命令的數據結構示意圖。
具體實施例方式
下面結合實施例具體說明本發明的系統及連續數據緩存方法。 如圖l所示,本發明實施例的連續數據緩存系統,由內核緩存區、用戶緩存區、內 核模塊和守護進程模塊組成。 內核緩存區,是在操作系統的內核空間的一片內存區,包括16個內核緩存區節 點,每個內核緩存區節點大小相同,設為256KB,共4MB,由內核模塊進行管理,存儲用戶寫 操作產生的數據; 用戶緩存區,包括一個初始用戶緩存區節點,其大小設為16MB,由守護進程模塊進 行管理,存儲從內核緩存區拷貝的數據; 內核模塊,負責將用戶寫操作的數據存儲進內核緩存區,并將內核緩存區數據交 給守護進程模塊處理; 守護進程模塊,包括拷貝線程與發送線程,拷貝線程負責將內核緩存區的數據拷 貝到用戶緩存區;發送線程負責將用戶緩存區數據發送到網絡,同時負責分配或者回收用 戶緩存區節點。 如圖2所示,本發明的連續數據緩存方法,包括初始化步驟、內核緩存區數據存儲 步驟、用戶緩存區數據存儲步驟以及用戶緩存區數據發送步驟。 其中,內核緩存區數據存儲步驟如圖3所示,用戶緩存區數據存儲步驟如圖4所 示,用戶緩存區數據發送步驟如圖5所示。 作為一個實施例,利用本發明實施例的連續數據緩存系統的進行連續數據緩存, 可以包括如下步驟 A.初始化步驟在用戶配置文件中設定16個內核緩存區節點,每個緩存區節點大 小設為256KB,共4MB,當前節點為節點0 ;用戶緩存區初始節點的大小設為16MB,加載內核 模塊并啟動守護進程模塊,初始化兩個緩存區信息,守護進程模塊級記錄下程序運行時間 tl。 B.用戶拷貝一個20MB大小的文件,即會有寫操作指令生成,那么執行內核緩存區 數據存儲步驟 Bl.內核模塊判斷當前節點的容量,起初內核緩存區0節點剩余空間能夠容納數 據大小,那么轉子步驟B2;當某次內核模塊判斷當前節點容量發現當前節點不能容納當前 寫操作指令的數據長度時,轉子步驟B4 ; B2.內核模塊將數據存入節點O,接著繼續等待寫操作指令的到來;
B3.內核模塊向守護進程模塊發出拷貝命令,通知守護進程模塊拷貝該內核緩存 區節點0的數據,轉子步驟B4 ;拷貝命令的數據結構如圖6所示,包括內核緩存區節點起始 地址、數據總長度和元素數目;
7
B4.將內核緩存區節點1記為當前節點,轉子步驟B2,將數據存儲到當前節點中;
C.守護進程模塊的拷貝線程接收到上述子步驟B3發出的拷貝命令,后,執行用戶 緩存區數據存儲步驟 CI.守護進程模塊的拷貝線程接收到內核模塊的拷貝命令后,所述拷貝線程記錄 當前時間,存入變量t2,計算拷貝事件時間間隔S二 t2-tl,同時將變量tl的值更新為變量 t2的值; C2.拷貝線程判斷當前使用的用戶緩存區節點是否能容納當前拷貝命令的數據總 長度,是則轉子步驟C3 ;否則轉子步驟C4 ;一開始此用戶緩存區節點可以容納拷貝命令中 的數據總長度,故轉子步驟C3; C3.拷貝線程根據拷貝命令,將內核緩存區節點起始地址所指明的內核緩存區節 點的數據拷貝到當前用戶緩存區節點,拷貝完畢,通知內核模塊轉子步驟C5 ;
C4.切換節點切換到下一空用戶緩存區節點,轉子步驟C2 ; C5.判斷是否需預分配緩存區節點,計算出緩存分配參數T,在某一次拷貝命令到 來之后,計算出的T值會小于缺乏閾值12ms,分配一個新的用戶緩存區節點添加到用戶緩 存區鏈表的最后;而T值大于富裕閾值96ms時,釋放用戶緩存區節點鏈表的最后一個節 點; C6.拷貝線程向發送線程傳遞發送命令,等待內核模塊拷貝命令;
D.用戶緩存區數據發送步驟 Dl.接收到拷貝線程的發送命令,發送線程執行發送任務; D2.發送任務完成,發送線程向拷貝線程發送任務完成報告,等待拷貝線程的發送 命令; 上述子步驟C5中,判斷是否需要增加新的用戶緩存區節點或者回收多余的用戶
緩存區節點時,具體判斷過程如下 El.計算估算時間間隔I : I = 0.8 1+0. 2 S, E2.計算估算時間間隔偏差M: M = 0. 7 M+0. 3 | S-I | , M的初值為0 ; E3.計算緩存分配參數T : T = 1+4 M ; E4.判斷當前使用的用戶緩存區節點是否為用戶緩存區節點鏈表的最后一個用戶 緩存區節點,是則轉過程E5,否則轉過程E6 ; E5.判斷是否T < A,是則分配一個新的用戶緩存區節點,否則保持用戶緩存區節 點數目不變;缺乏閾值A為被保護的磁盤寫入一個內核緩存區節點大小的數據所需時間的 1 2倍;在本系統里被保護的磁盤寫入速度為32MB/s,內核緩存區節點大小為256KB,因 此缺乏閾值A取為8ms的1. 5倍,即為12ms ; E6.判斷是否T > B,是則釋放用戶緩存區節點鏈表的最后一個用戶緩存區節點, 否則保持用戶緩存區節點數目不變;富裕閾值B為8XA,即為96ms。
權利要求
一種連續數據緩存系統,由內核緩存區、用戶緩存區、內核模塊和守護進程模塊組成,其特征在于所述內核緩存區,是在操作系統的內核空間的一片內存區,包括多個內核緩存區節點,每個內核緩存區節點大小相同,互相獨立;由內核模塊進行管理,存儲用戶寫操作產生的數據;所述用戶緩存區,是在操作系統的用戶空間的一片內存區,包括一個或者多個用戶緩存區節點,每個用戶緩存區節點大小相同或不同,用戶緩存區節點以循環鏈表的結構組織;由守護進程模塊進行管理,存儲從內核緩存區拷貝的數據,所述內核模塊,負責將用戶寫操作的數據存儲進內核緩存區,并將內核緩存區數據交給守護進程模塊處理;所述守護進程模塊,包括拷貝線程與發送線程,拷貝線程負責將內核緩存區的數據拷貝到用戶緩存區;發送線程負責將用戶緩存區數據發送到網絡,同時負責分配或者回收用戶緩存區節點。
2. —種權利要求1所述連續數據緩存系統的連續數據緩存方法,包括如下步驟A. 初始化步驟在操作系統內核空間設置內核緩存區,并將其分為N個大小相同的內 核緩存區節點,每個內核緩存區節點大小均相同,為幾十KB到幾百KB ;在用戶空間申請一 個用戶緩存區節點,大小為幾兆到幾十兆字節;內核模塊等待用戶寫操作指令,守護進程模 塊等待內核模塊的拷貝命令,守護進程模塊的拷貝線程記錄程序開始運行時間,并將其存 入變量tl ;B. 內核緩存區數據存儲步驟,當用戶寫操作指令到來時,順序包括以下子步驟Bl.判斷當前節點容量內核模塊判斷當前使用的內核緩存區節點是否能容納當前寫 操作指令的數據長度,是則轉子步驟B2 ;否則轉子步驟B3 ;B2.存儲數據內核模塊將用戶寫操作產生的數據存入當前使用的內核緩存區節點 中,等待下一次用戶寫操作;當下一次用戶寫操作到來時,轉子步驟B1 ;B3.拷貝通知內核模塊向守護進程模塊發出拷貝命令,通知守護進程模塊拷貝當前 使用的內核緩存區節點的數據,轉子步驟B4 ;所述拷貝命令的數據結構為內核緩存區節 點起始地址、數據總長度和元素數目,所述元素指組織數據的最小長度單位;B4.切換節點切換到下一空內核緩存區節點,轉子步驟B2 ;C. 用戶緩存區數據存儲步驟,當內核模塊拷貝命令到來時,順序執行以下子步驟CI.記錄時間所述守護進程模塊的拷貝線程記錄當前時間,將其存入變量t2,計算拷 貝事件時間間隔S = t2-tl,同時將變量tl的值更新為變量t2的值;C2.判斷當前節點容量拷貝線程判斷當前使用的用戶緩存區節點是否能容納當前拷 貝命令的數據總長度,是則轉子步驟C3 ;否則轉子步驟C4 ;C3.拷貝數據拷貝線程根據拷貝命令,將內核緩存區節點起始地址所指明的內核緩 存區節點的數據拷貝到當前用戶緩存區節點,拷貝完畢,通知內核模塊,轉子步驟C5;C4.切換節點切換到下一空用戶緩存區節點,轉子步驟C2 ;C5.判斷是否需預分配緩存區節點拷貝線程判斷是否需要增加新的用戶緩存區節點 或者回收多余的用戶緩存區節點,是則增加1個用戶緩存區節點或者回收1個用戶緩存區 節點,轉子步驟C6 ;否則保持用戶緩存區節點數目不變,轉子步驟C6 ;C6.拷貝線程向發送線程傳遞發送命令,等待內核模塊拷貝命令;所述發送命令的數 據結構為待發送數據所在的用戶緩存區節點、第一個待發送元素的序號、發送元素的個 數、發送數據在用戶緩存區節點的起始地址;D.用戶緩存區數據發送步驟,當拷貝線程的發送命令到來時,順序執行以下子步驟Dl.守護進程模塊的發送線程執行發送任務;D2.發送任務完成,發送線程向拷貝線程發送任務完成報告,等待拷貝線程的發送命 令;所述任務完成報告的數據結構為已發送數據的長度、已發送元素的數目。
3.如權利要求2所述的連續數據緩存方法,其特征在于所述子步驟C5中,判斷是否需要增加新的用戶緩存區節點或者回收多余的用戶緩存 區節點時,判斷過程如下El.計算估算時間間隔I : I = (l-a) I+a S,式中,S為拷貝事件時間間隔,時間間隔系數a為O. 1 0. 3,a越偏向于0. l表示I的 取值與先前的拷貝事件時間間隔的關系越大,a越偏向于0. 3表明I的取值與最新一次拷 貝事件時間間隔的關系越大;E2.計算估算時間間隔偏差M:M = (l-b) M+b |S-I I ,式中,時間偏差系數b為0. 2 0. 4, b越偏向于0. 2表示M的取值與先前的估算時間 間隔偏差的關系越大,b越偏向于0. 4表明M的取值與與最新一次估算時間間隔偏差的關 系越大;M的初值為0 ;E3.計算緩存分配參數T :T = 1+4 M ;E4.判斷當前使用的用戶緩存區節點是否為用戶緩存區節點鏈表的最后一個用戶緩存 區節點,是則轉過程E5,否則轉過程E6 ;E5.判斷是否T < A,是則分配一個新的用戶緩存區節點,否則保持用戶緩存區節點數 目不變;缺乏閾值A為被保護的磁盤寫入一個內核緩存區節點大小的數據所需時間的1 2倍;E6.判斷是否T > B,是則釋放用戶緩存區節點鏈表的最后一個用戶緩存區節點,否則 保持用戶緩存區節點數目不變;富裕閾值B為(3 IO)XA。
全文摘要
一種連續數據緩存系統及其數據緩存方法,屬于計算機數據存儲系統和備份方法,解決由于突發I/O與網絡性能波動帶來的連續數據捕獲能力與保護能力不匹配的問題。本發明的系統,由內核緩存區、用戶緩存區、內核模塊和守護進程模塊組成。本發明的方法,包括初始化、內核緩存區數據存儲、用戶緩存區數據存儲以及用戶緩存區數據發送步驟。本發明的系統采用內核緩存和用戶緩存二級緩存機制,構建在TCP/IP協議上,性能開銷小,降低了客戶節點復雜性。本發明的方法采用較小的內核緩存區和較大的用戶緩存區,降低內核處理的復雜度,并且提出緩存預判算法,及時分配或者回收用戶緩存區節點,使得用戶緩存區的利用率最優化,節約系統內存資源。
文檔編號G06F12/02GK101770412SQ201010100899
公開日2010年7月7日 申請日期2010年1月22日 優先權日2010年1月22日
發明者馮光曦, 周可, 張一萍, 李巍, 李春花, 黃平, 黃揚 申請人:華中科技大學