欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種連續(xù)數(shù)據(jù)緩存系統(tǒng)及其數(shù)據(jù)緩存方法

文檔序號(hào):6597634閱讀:280來(lái)源:國(guó)知局
專利名稱:一種連續(xù)數(shù)據(jù)緩存系統(tǒng)及其數(shù)據(jù)緩存方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)和備份方法,具體涉及一種連續(xù)數(shù)據(jù)緩存系統(tǒng)及
其數(shù)據(jù)緩存方法。
背景技術(shù)
連續(xù)數(shù)據(jù)保護(hù)(Continuous Data Protection, CDP)方法,在不影響業(yè)務(wù)數(shù)據(jù)運(yùn)行 的前提下,可以實(shí)現(xiàn)持續(xù)捕捉或跟蹤目標(biāo)數(shù)據(jù)所發(fā)生的任何改變,并且能夠恢復(fù)到此前任 意時(shí)間點(diǎn)。它可以保護(hù)從某時(shí)刻開(kāi)始的巻或者文件在此后的任意時(shí)刻的數(shù)據(jù)狀態(tài),也就是 數(shù)據(jù)的每次改變,都會(huì)被無(wú)一遺漏地記錄下來(lái)。由于此特性,使得CDP具有任意的恢復(fù)點(diǎn)目 標(biāo)和短的恢復(fù)時(shí)間目標(biāo),即微粒度性的優(yōu)點(diǎn)。同時(shí),連續(xù)數(shù)據(jù)保護(hù)方法對(duì)存儲(chǔ)系統(tǒng)的性能和 空間提出了更高的要求,每個(gè)寫(xiě)操作都有額外的性能開(kāi)銷。因此,如何盡可能地降低每個(gè)寫(xiě) 操作的開(kāi)銷對(duì)整個(gè)系統(tǒng)帶來(lái)的負(fù)面影響則成為一個(gè)重要的課題。由于連續(xù)數(shù)據(jù)保護(hù)系統(tǒng)需 要將保護(hù)的數(shù)據(jù)傳輸?shù)竭h(yuǎn)端CDP服務(wù)器,以便能夠?qū)崿F(xiàn)容災(zāi),而網(wǎng)絡(luò)波動(dòng)是不可避免的,因 此緩存機(jī)制設(shè)計(jì)的好壞對(duì)連續(xù)數(shù)據(jù)保護(hù)系統(tǒng)數(shù)據(jù)保護(hù)能力的影響是相當(dāng)大的,如果設(shè)計(jì)不 當(dāng),很容易成為整個(gè)系統(tǒng)的瓶頸。 陳麗波,吳慶波在"Linux內(nèi)核跟蹤機(jī)制LTT的研究"(計(jì)算機(jī)工程2005年31期 61-63) —文中,公開(kāi)一種Linux跟蹤工具包(Linux TraceToolkit, LTT),其由探測(cè)內(nèi)核模 塊、數(shù)據(jù)收集模塊、數(shù)據(jù)提交守護(hù)進(jìn)程模塊、數(shù)據(jù)表示分析模塊4部分組成,前2個(gè)模塊是運(yùn) 行于操作系統(tǒng)內(nèi)核層,后2個(gè)模塊運(yùn)行在操作系統(tǒng)應(yīng)用層,而且LTT的開(kāi)銷小于2. 5% ,對(duì)系 統(tǒng)性能的影響很小。 楊慶等設(shè)計(jì)一種磁盤陣列架構(gòu),該系統(tǒng)提供了連續(xù)數(shù)據(jù)保護(hù)功能,但是他們的 系統(tǒng)是通過(guò)iSCSI協(xié)議實(shí)現(xiàn)連續(xù)數(shù)據(jù)保護(hù)功能,但是這種方式需要在客戶節(jié)點(diǎn)實(shí)現(xiàn)對(duì)遠(yuǎn) 程CDP備份空間的管理,在可靠性、性能開(kāi)銷、復(fù)雜性上都會(huì)產(chǎn)生一定的問(wèn)題;見(jiàn)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。

發(fā)明內(nèi)容
本發(fā)明提供一種連續(xù)數(shù)據(jù)緩存系統(tǒng),同時(shí)提供利用該系統(tǒng)的數(shù)據(jù)緩存方法,解決 由于突發(fā)1/0與網(wǎng)絡(luò)性能波動(dòng)帶來(lái)的連續(xù)數(shù)據(jù)捕獲能力與保護(hù)能力不匹配的問(wèn)題。
本發(fā)明的一種連續(xù)數(shù)據(jù)緩存系統(tǒng),由內(nèi)核緩存區(qū)、用戶緩存區(qū)、內(nèi)核模塊和守護(hù)進(jìn) 程模塊組成,其特征在于 所述內(nèi)核緩存區(qū),是在操作系統(tǒng)的內(nèi)核空間的一片內(nèi)存區(qū),包括多個(gè)內(nèi)核緩存區(qū) 節(jié)點(diǎn),每個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小相同,互相獨(dú)立;由內(nèi)核模塊進(jìn)行管理,存儲(chǔ)用戶寫(xiě)操作產(chǎn) 生的數(shù)據(jù); 所述用戶緩存區(qū),是在操作系統(tǒng)的用戶空間的一片內(nèi)存區(qū),包括一個(gè)或者多個(gè)用
4戶緩存區(qū)節(jié)點(diǎn),每個(gè)用戶緩存區(qū)節(jié)點(diǎn)大小相同或不同,用戶緩存區(qū)節(jié)點(diǎn)以循環(huán)鏈表的結(jié)構(gòu) 組織;由守護(hù)進(jìn)程模塊進(jìn)行管理,存儲(chǔ)從內(nèi)核緩存區(qū)拷貝的數(shù)據(jù); 所述內(nèi)核模塊,負(fù)責(zé)將用戶寫(xiě)操作的數(shù)據(jù)存儲(chǔ)進(jìn)內(nèi)核緩存區(qū),并將內(nèi)核緩存區(qū)數(shù) 據(jù)交給守護(hù)進(jìn)程模塊處理; 所述守護(hù)進(jìn)程模塊,包括拷貝線程與發(fā)送線程,拷貝線程負(fù)責(zé)將內(nèi)核緩存區(qū)的數(shù) 據(jù)拷貝到用戶緩存區(qū);發(fā)送線程負(fù)責(zé)將用戶緩存區(qū)數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),同時(shí)負(fù)責(zé)分配或者回 收用戶緩存區(qū)節(jié)點(diǎn)。 本發(fā)明的一種連續(xù)數(shù)據(jù)緩存方法,包括如下步驟 A.初始化步驟在操作系統(tǒng)內(nèi)核空間設(shè)置內(nèi)核緩存區(qū),并將其分為N個(gè)大小相同
的內(nèi)核緩存區(qū)節(jié)點(diǎn),每個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小均相同,為幾十KB到幾百KB;在用戶空間申
請(qǐng)一個(gè)用戶緩存區(qū)節(jié)點(diǎn),大小為幾兆到幾十兆字節(jié);內(nèi)核模塊等待用戶寫(xiě)操作指令,守護(hù)進(jìn) 程模塊等待內(nèi)核模塊的拷貝命令,守護(hù)進(jìn)程模塊的拷貝線程記錄程序開(kāi)始運(yùn)行時(shí)間,并將
其存入變量tl ; B.內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟,當(dāng)用戶寫(xiě)操作指令到來(lái)時(shí),順序包括以下子步驟
Bl.判斷當(dāng)前節(jié)點(diǎn)容量?jī)?nèi)核模塊判斷當(dāng)前使用的內(nèi)核緩存區(qū)節(jié)點(diǎn)是否能容納當(dāng) 前寫(xiě)操作指令的數(shù)據(jù)長(zhǎng)度,是則轉(zhuǎn)子步驟B2 ;否則轉(zhuǎn)子步驟B3 ; B2.存儲(chǔ)數(shù)據(jù)內(nèi)核模塊將用戶寫(xiě)操作產(chǎn)生的數(shù)據(jù)存入當(dāng)前使用的內(nèi)核緩存區(qū)節(jié)
點(diǎn)中,等待下一次用戶寫(xiě)操作;當(dāng)下一次用戶寫(xiě)操作到來(lái)時(shí),轉(zhuǎn)子步驟B1 ; B3.拷貝通知內(nèi)核模塊向守護(hù)進(jìn)程模塊發(fā)出拷貝命令,通知守護(hù)進(jìn)程模塊拷貝
當(dāng)前使用的內(nèi)核緩存區(qū)節(jié)點(diǎn)的數(shù)據(jù),轉(zhuǎn)子步驟B4 ;所述拷貝命令的數(shù)據(jù)結(jié)構(gòu)為內(nèi)核緩存
區(qū)節(jié)點(diǎn)起始地址、數(shù)據(jù)總長(zhǎng)度和元素?cái)?shù)目,所述元素指組織數(shù)據(jù)的最小長(zhǎng)度單位; B4.切換節(jié)點(diǎn)切換到下一空內(nèi)核緩存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟B2 ; C.用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟,當(dāng)內(nèi)核模塊拷貝命令到來(lái)時(shí),順序執(zhí)行以下子步 驟 CI.記錄時(shí)間所述守護(hù)進(jìn)程模塊的拷貝線程記錄當(dāng)前時(shí)間,將其存入變量t2,計(jì) 算拷貝事件時(shí)間間隔S = t2-tl,同時(shí)將變量tl的值更新為變量t2的值;
C2.判斷當(dāng)前節(jié)點(diǎn)容量拷貝線程判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否能容納當(dāng) 前拷貝命令的數(shù)據(jù)總長(zhǎng)度,是則轉(zhuǎn)子步驟C3 ;否則轉(zhuǎn)子步驟C4 ; C3.拷貝數(shù)據(jù)拷貝線程根據(jù)拷貝命令,將內(nèi)核緩存區(qū)節(jié)點(diǎn)起始地址所指明的內(nèi) 核緩存區(qū)節(jié)點(diǎn)的數(shù)據(jù)拷貝到當(dāng)前用戶緩存區(qū)節(jié)點(diǎn),拷貝完畢,通知內(nèi)核模塊,轉(zhuǎn)子步驟C5 ; C4.切換節(jié)點(diǎn)切換到下一空用戶緩存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟C2 ; C5.判斷是否需預(yù)分配緩存區(qū)節(jié)點(diǎn)拷貝線程判斷是否需要增加新的用戶緩存區(qū)
節(jié)點(diǎn)或者回收多余的用戶緩存區(qū)節(jié)點(diǎn),是則增加1個(gè)用戶緩存區(qū)節(jié)點(diǎn)或者回收1個(gè)用戶緩
存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟C6 ;否則保持用戶緩存區(qū)節(jié)點(diǎn)數(shù)目不變,轉(zhuǎn)子步驟C6 ;
C6.拷貝線程向發(fā)送線程傳遞發(fā)送命令,等待內(nèi)核模塊拷貝命令;所述發(fā)送命令 的數(shù)據(jù)結(jié)構(gòu)為待發(fā)送數(shù)據(jù)所在的用戶緩存區(qū)節(jié)點(diǎn)、第一個(gè)待發(fā)送元素的序號(hào)、發(fā)送元素的 個(gè)數(shù)、發(fā)送數(shù)據(jù)在用戶緩存區(qū)節(jié)點(diǎn)的起始地址; D.用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟,當(dāng)拷貝線程的發(fā)送命令到來(lái)時(shí),順序執(zhí)行以下子步 驟
Dl.守護(hù)進(jìn)程模塊的發(fā)送線程執(zhí)行發(fā)送任務(wù); D2.發(fā)送任務(wù)完成,發(fā)送線程向拷貝線程發(fā)送任務(wù)完成報(bào)告,等待拷貝線程的發(fā)送 命令;所述任務(wù)完成報(bào)告的數(shù)據(jù)結(jié)構(gòu)為已發(fā)送數(shù)據(jù)的長(zhǎng)度、已發(fā)送元素的數(shù)目。
所述的連續(xù)數(shù)據(jù)緩存方法,其特征在于 所述子步驟C5中,判斷是否需要增加新的用戶緩存區(qū)節(jié)點(diǎn)或者回收多余的用戶 緩存區(qū)節(jié)點(diǎn)時(shí),判斷過(guò)程如下
El.計(jì)算估算時(shí)間間隔I :
I = (1-a) I+a S, 式中,S為拷貝事件時(shí)間間隔,時(shí)間間隔系數(shù)a為0. 1 0. 3,a越偏向于0. 1表示
I的取值與先前的拷貝事件時(shí)間間隔的關(guān)系越大,a越偏向于O. 3表明I的取值與最新一次
拷貝事件時(shí)間間隔的關(guān)系越大; E2.計(jì)算估算時(shí)間間隔偏差M: M = (1-b) M+b |S_I|, 式中,時(shí)間偏差系數(shù)b為0. 2 0. 4, b越偏向于0. 2表示M的取值與先前的估算
時(shí)間間隔偏差的關(guān)系越大,b越偏向于0. 4表明M的取值與與最新一次估算時(shí)間間隔偏差
的關(guān)系越大;M的初值為0 ; E3.計(jì)算緩存分配參數(shù)T : T = 1+4 M ; E4.判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否為用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶 緩存區(qū)節(jié)點(diǎn),是則轉(zhuǎn)過(guò)程E5,否則轉(zhuǎn)過(guò)程E6 ; E5.判斷是否T < A,是則分配一個(gè)新的用戶緩存區(qū)節(jié)點(diǎn),否則保持用戶緩存區(qū)節(jié) 點(diǎn)數(shù)目不變;缺乏閾值A(chǔ)為被保護(hù)的磁盤寫(xiě)入一個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小的數(shù)據(jù)所需時(shí)間的 1 2倍; E6.判斷是否T > B,是則釋放用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶緩存區(qū)節(jié)點(diǎn), 否則保持用戶緩存區(qū)節(jié)點(diǎn)數(shù)目不變;富裕閾值B為(3 10) XA。 本發(fā)明的系統(tǒng)采用類似于Li皿x跟蹤工具包(LTT)的結(jié)構(gòu),由內(nèi)核層的內(nèi)核模塊 以及用戶層的守護(hù)進(jìn)程模塊構(gòu)成,為了和這種結(jié)構(gòu)相適應(yīng),采用二級(jí)緩存機(jī)制,包括內(nèi)核緩 存和用戶緩存,前文已提到LTT的性能開(kāi)銷小于2. 5%,本發(fā)明的系統(tǒng)與LTT的結(jié)構(gòu)類似, 因此性能開(kāi)銷也很小,同時(shí)本發(fā)明的系統(tǒng)構(gòu)建在適用性廣的TCP/IP協(xié)議上,和通過(guò)iSCSI 協(xié)議實(shí)現(xiàn)連續(xù)數(shù)據(jù)保護(hù)功能的系統(tǒng)相比,無(wú)需在客戶節(jié)點(diǎn)實(shí)現(xiàn)對(duì)遠(yuǎn)程連續(xù)數(shù)據(jù)保護(hù)系統(tǒng) (CDP)備份空間的管理,降低了客戶節(jié)點(diǎn)的復(fù)雜性。 本發(fā)明的方法考慮到操作系統(tǒng)在內(nèi)核空間處理問(wèn)題復(fù)雜而用戶空間相對(duì)簡(jiǎn)單的 特點(diǎn),在內(nèi)核緩存區(qū)采用簡(jiǎn)單的緩存策略較小的緩存區(qū),降低內(nèi)核處理的復(fù)雜度,使之受到 的影響盡可能的小;而在用戶緩存區(qū)采用復(fù)雜的緩存策略和較大的緩存區(qū),并且提出緩存 預(yù)判算法,及時(shí)分配或者回收用戶緩存區(qū)節(jié)點(diǎn),使得用戶緩存區(qū)的利用率最優(yōu)化,節(jié)約系統(tǒng) 內(nèi)存資源。


圖1為本發(fā)明的緩存系統(tǒng)結(jié)構(gòu)示意6
圖2為本發(fā)明的數(shù)據(jù)緩存方法流程示意圖; 圖3為內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟流程示意圖; 圖4為用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟流程示意圖; 圖5為用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟流程示意圖; 圖6為拷貝命令的數(shù)據(jù)結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面結(jié)合實(shí)施例具體說(shuō)明本發(fā)明的系統(tǒng)及連續(xù)數(shù)據(jù)緩存方法。 如圖l所示,本發(fā)明實(shí)施例的連續(xù)數(shù)據(jù)緩存系統(tǒng),由內(nèi)核緩存區(qū)、用戶緩存區(qū)、內(nèi) 核模塊和守護(hù)進(jìn)程模塊組成。 內(nèi)核緩存區(qū),是在操作系統(tǒng)的內(nèi)核空間的一片內(nèi)存區(qū),包括16個(gè)內(nèi)核緩存區(qū)節(jié) 點(diǎn),每個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小相同,設(shè)為256KB,共4MB,由內(nèi)核模塊進(jìn)行管理,存儲(chǔ)用戶寫(xiě) 操作產(chǎn)生的數(shù)據(jù); 用戶緩存區(qū),包括一個(gè)初始用戶緩存區(qū)節(jié)點(diǎn),其大小設(shè)為16MB,由守護(hù)進(jìn)程模塊進(jìn) 行管理,存儲(chǔ)從內(nèi)核緩存區(qū)拷貝的數(shù)據(jù); 內(nèi)核模塊,負(fù)責(zé)將用戶寫(xiě)操作的數(shù)據(jù)存儲(chǔ)進(jìn)內(nèi)核緩存區(qū),并將內(nèi)核緩存區(qū)數(shù)據(jù)交 給守護(hù)進(jìn)程模塊處理; 守護(hù)進(jìn)程模塊,包括拷貝線程與發(fā)送線程,拷貝線程負(fù)責(zé)將內(nèi)核緩存區(qū)的數(shù)據(jù)拷 貝到用戶緩存區(qū);發(fā)送線程負(fù)責(zé)將用戶緩存區(qū)數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),同時(shí)負(fù)責(zé)分配或者回收用 戶緩存區(qū)節(jié)點(diǎn)。 如圖2所示,本發(fā)明的連續(xù)數(shù)據(jù)緩存方法,包括初始化步驟、內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ) 步驟、用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟以及用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟。 其中,內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟如圖3所示,用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟如圖4所 示,用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟如圖5所示。 作為一個(gè)實(shí)施例,利用本發(fā)明實(shí)施例的連續(xù)數(shù)據(jù)緩存系統(tǒng)的進(jìn)行連續(xù)數(shù)據(jù)緩存, 可以包括如下步驟 A.初始化步驟在用戶配置文件中設(shè)定16個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn),每個(gè)緩存區(qū)節(jié)點(diǎn)大 小設(shè)為256KB,共4MB,當(dāng)前節(jié)點(diǎn)為節(jié)點(diǎn)0 ;用戶緩存區(qū)初始節(jié)點(diǎn)的大小設(shè)為16MB,加載內(nèi)核 模塊并啟動(dòng)守護(hù)進(jìn)程模塊,初始化兩個(gè)緩存區(qū)信息,守護(hù)進(jìn)程模塊級(jí)記錄下程序運(yùn)行時(shí)間 tl。 B.用戶拷貝一個(gè)20MB大小的文件,即會(huì)有寫(xiě)操作指令生成,那么執(zhí)行內(nèi)核緩存區(qū) 數(shù)據(jù)存儲(chǔ)步驟 Bl.內(nèi)核模塊判斷當(dāng)前節(jié)點(diǎn)的容量,起初內(nèi)核緩存區(qū)0節(jié)點(diǎn)剩余空間能夠容納數(shù) 據(jù)大小,那么轉(zhuǎn)子步驟B2;當(dāng)某次內(nèi)核模塊判斷當(dāng)前節(jié)點(diǎn)容量發(fā)現(xiàn)當(dāng)前節(jié)點(diǎn)不能容納當(dāng)前 寫(xiě)操作指令的數(shù)據(jù)長(zhǎng)度時(shí),轉(zhuǎn)子步驟B4 ; B2.內(nèi)核模塊將數(shù)據(jù)存入節(jié)點(diǎn)O,接著繼續(xù)等待寫(xiě)操作指令的到來(lái);
B3.內(nèi)核模塊向守護(hù)進(jìn)程模塊發(fā)出拷貝命令,通知守護(hù)進(jìn)程模塊拷貝該內(nèi)核緩存 區(qū)節(jié)點(diǎn)0的數(shù)據(jù),轉(zhuǎn)子步驟B4 ;拷貝命令的數(shù)據(jù)結(jié)構(gòu)如圖6所示,包括內(nèi)核緩存區(qū)節(jié)點(diǎn)起始 地址、數(shù)據(jù)總長(zhǎng)度和元素?cái)?shù)目;
7
B4.將內(nèi)核緩存區(qū)節(jié)點(diǎn)1記為當(dāng)前節(jié)點(diǎn),轉(zhuǎn)子步驟B2,將數(shù)據(jù)存儲(chǔ)到當(dāng)前節(jié)點(diǎn)中;
C.守護(hù)進(jìn)程模塊的拷貝線程接收到上述子步驟B3發(fā)出的拷貝命令,后,執(zhí)行用戶 緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟 CI.守護(hù)進(jìn)程模塊的拷貝線程接收到內(nèi)核模塊的拷貝命令后,所述拷貝線程記錄 當(dāng)前時(shí)間,存入變量t2,計(jì)算拷貝事件時(shí)間間隔S二 t2-tl,同時(shí)將變量tl的值更新為變量 t2的值; C2.拷貝線程判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否能容納當(dāng)前拷貝命令的數(shù)據(jù)總 長(zhǎng)度,是則轉(zhuǎn)子步驟C3 ;否則轉(zhuǎn)子步驟C4 ;一開(kāi)始此用戶緩存區(qū)節(jié)點(diǎn)可以容納拷貝命令中 的數(shù)據(jù)總長(zhǎng)度,故轉(zhuǎn)子步驟C3; C3.拷貝線程根據(jù)拷貝命令,將內(nèi)核緩存區(qū)節(jié)點(diǎn)起始地址所指明的內(nèi)核緩存區(qū)節(jié) 點(diǎn)的數(shù)據(jù)拷貝到當(dāng)前用戶緩存區(qū)節(jié)點(diǎn),拷貝完畢,通知內(nèi)核模塊轉(zhuǎn)子步驟C5 ;
C4.切換節(jié)點(diǎn)切換到下一空用戶緩存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟C2 ; C5.判斷是否需預(yù)分配緩存區(qū)節(jié)點(diǎn),計(jì)算出緩存分配參數(shù)T,在某一次拷貝命令到 來(lái)之后,計(jì)算出的T值會(huì)小于缺乏閾值12ms,分配一個(gè)新的用戶緩存區(qū)節(jié)點(diǎn)添加到用戶緩 存區(qū)鏈表的最后;而T值大于富裕閾值96ms時(shí),釋放用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)節(jié) 點(diǎn); C6.拷貝線程向發(fā)送線程傳遞發(fā)送命令,等待內(nèi)核模塊拷貝命令;
D.用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟 Dl.接收到拷貝線程的發(fā)送命令,發(fā)送線程執(zhí)行發(fā)送任務(wù); D2.發(fā)送任務(wù)完成,發(fā)送線程向拷貝線程發(fā)送任務(wù)完成報(bào)告,等待拷貝線程的發(fā)送 命令; 上述子步驟C5中,判斷是否需要增加新的用戶緩存區(qū)節(jié)點(diǎn)或者回收多余的用戶
緩存區(qū)節(jié)點(diǎn)時(shí),具體判斷過(guò)程如下 El.計(jì)算估算時(shí)間間隔I : I = 0.8 1+0. 2 S, E2.計(jì)算估算時(shí)間間隔偏差M: M = 0. 7 M+0. 3 | S-I | , M的初值為0 ; E3.計(jì)算緩存分配參數(shù)T : T = 1+4 M ; E4.判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否為用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶 緩存區(qū)節(jié)點(diǎn),是則轉(zhuǎn)過(guò)程E5,否則轉(zhuǎn)過(guò)程E6 ; E5.判斷是否T < A,是則分配一個(gè)新的用戶緩存區(qū)節(jié)點(diǎn),否則保持用戶緩存區(qū)節(jié) 點(diǎn)數(shù)目不變;缺乏閾值A(chǔ)為被保護(hù)的磁盤寫(xiě)入一個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小的數(shù)據(jù)所需時(shí)間的 1 2倍;在本系統(tǒng)里被保護(hù)的磁盤寫(xiě)入速度為32MB/s,內(nèi)核緩存區(qū)節(jié)點(diǎn)大小為256KB,因 此缺乏閾值A(chǔ)取為8ms的1. 5倍,即為12ms ; E6.判斷是否T > B,是則釋放用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶緩存區(qū)節(jié)點(diǎn), 否則保持用戶緩存區(qū)節(jié)點(diǎn)數(shù)目不變;富裕閾值B為8XA,即為96ms。
權(quán)利要求
一種連續(xù)數(shù)據(jù)緩存系統(tǒng),由內(nèi)核緩存區(qū)、用戶緩存區(qū)、內(nèi)核模塊和守護(hù)進(jìn)程模塊組成,其特征在于所述內(nèi)核緩存區(qū),是在操作系統(tǒng)的內(nèi)核空間的一片內(nèi)存區(qū),包括多個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn),每個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小相同,互相獨(dú)立;由內(nèi)核模塊進(jìn)行管理,存儲(chǔ)用戶寫(xiě)操作產(chǎn)生的數(shù)據(jù);所述用戶緩存區(qū),是在操作系統(tǒng)的用戶空間的一片內(nèi)存區(qū),包括一個(gè)或者多個(gè)用戶緩存區(qū)節(jié)點(diǎn),每個(gè)用戶緩存區(qū)節(jié)點(diǎn)大小相同或不同,用戶緩存區(qū)節(jié)點(diǎn)以循環(huán)鏈表的結(jié)構(gòu)組織;由守護(hù)進(jìn)程模塊進(jìn)行管理,存儲(chǔ)從內(nèi)核緩存區(qū)拷貝的數(shù)據(jù),所述內(nèi)核模塊,負(fù)責(zé)將用戶寫(xiě)操作的數(shù)據(jù)存儲(chǔ)進(jìn)內(nèi)核緩存區(qū),并將內(nèi)核緩存區(qū)數(shù)據(jù)交給守護(hù)進(jìn)程模塊處理;所述守護(hù)進(jìn)程模塊,包括拷貝線程與發(fā)送線程,拷貝線程負(fù)責(zé)將內(nèi)核緩存區(qū)的數(shù)據(jù)拷貝到用戶緩存區(qū);發(fā)送線程負(fù)責(zé)將用戶緩存區(qū)數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),同時(shí)負(fù)責(zé)分配或者回收用戶緩存區(qū)節(jié)點(diǎn)。
2. —種權(quán)利要求1所述連續(xù)數(shù)據(jù)緩存系統(tǒng)的連續(xù)數(shù)據(jù)緩存方法,包括如下步驟A. 初始化步驟在操作系統(tǒng)內(nèi)核空間設(shè)置內(nèi)核緩存區(qū),并將其分為N個(gè)大小相同的內(nèi) 核緩存區(qū)節(jié)點(diǎn),每個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小均相同,為幾十KB到幾百KB ;在用戶空間申請(qǐng)一 個(gè)用戶緩存區(qū)節(jié)點(diǎn),大小為幾兆到幾十兆字節(jié);內(nèi)核模塊等待用戶寫(xiě)操作指令,守護(hù)進(jìn)程模 塊等待內(nèi)核模塊的拷貝命令,守護(hù)進(jìn)程模塊的拷貝線程記錄程序開(kāi)始運(yùn)行時(shí)間,并將其存 入變量tl ;B. 內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟,當(dāng)用戶寫(xiě)操作指令到來(lái)時(shí),順序包括以下子步驟Bl.判斷當(dāng)前節(jié)點(diǎn)容量?jī)?nèi)核模塊判斷當(dāng)前使用的內(nèi)核緩存區(qū)節(jié)點(diǎn)是否能容納當(dāng)前寫(xiě) 操作指令的數(shù)據(jù)長(zhǎng)度,是則轉(zhuǎn)子步驟B2 ;否則轉(zhuǎn)子步驟B3 ;B2.存儲(chǔ)數(shù)據(jù)內(nèi)核模塊將用戶寫(xiě)操作產(chǎn)生的數(shù)據(jù)存入當(dāng)前使用的內(nèi)核緩存區(qū)節(jié)點(diǎn) 中,等待下一次用戶寫(xiě)操作;當(dāng)下一次用戶寫(xiě)操作到來(lái)時(shí),轉(zhuǎn)子步驟B1 ;B3.拷貝通知內(nèi)核模塊向守護(hù)進(jìn)程模塊發(fā)出拷貝命令,通知守護(hù)進(jìn)程模塊拷貝當(dāng)前 使用的內(nèi)核緩存區(qū)節(jié)點(diǎn)的數(shù)據(jù),轉(zhuǎn)子步驟B4 ;所述拷貝命令的數(shù)據(jù)結(jié)構(gòu)為內(nèi)核緩存區(qū)節(jié) 點(diǎn)起始地址、數(shù)據(jù)總長(zhǎng)度和元素?cái)?shù)目,所述元素指組織數(shù)據(jù)的最小長(zhǎng)度單位;B4.切換節(jié)點(diǎn)切換到下一空內(nèi)核緩存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟B2 ;C. 用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)步驟,當(dāng)內(nèi)核模塊拷貝命令到來(lái)時(shí),順序執(zhí)行以下子步驟CI.記錄時(shí)間所述守護(hù)進(jìn)程模塊的拷貝線程記錄當(dāng)前時(shí)間,將其存入變量t2,計(jì)算拷 貝事件時(shí)間間隔S = t2-tl,同時(shí)將變量tl的值更新為變量t2的值;C2.判斷當(dāng)前節(jié)點(diǎn)容量拷貝線程判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否能容納當(dāng)前拷 貝命令的數(shù)據(jù)總長(zhǎng)度,是則轉(zhuǎn)子步驟C3 ;否則轉(zhuǎn)子步驟C4 ;C3.拷貝數(shù)據(jù)拷貝線程根據(jù)拷貝命令,將內(nèi)核緩存區(qū)節(jié)點(diǎn)起始地址所指明的內(nèi)核緩 存區(qū)節(jié)點(diǎn)的數(shù)據(jù)拷貝到當(dāng)前用戶緩存區(qū)節(jié)點(diǎn),拷貝完畢,通知內(nèi)核模塊,轉(zhuǎn)子步驟C5;C4.切換節(jié)點(diǎn)切換到下一空用戶緩存區(qū)節(jié)點(diǎn),轉(zhuǎn)子步驟C2 ;C5.判斷是否需預(yù)分配緩存區(qū)節(jié)點(diǎn)拷貝線程判斷是否需要增加新的用戶緩存區(qū)節(jié)點(diǎn) 或者回收多余的用戶緩存區(qū)節(jié)點(diǎn),是則增加1個(gè)用戶緩存區(qū)節(jié)點(diǎn)或者回收1個(gè)用戶緩存區(qū) 節(jié)點(diǎn),轉(zhuǎn)子步驟C6 ;否則保持用戶緩存區(qū)節(jié)點(diǎn)數(shù)目不變,轉(zhuǎn)子步驟C6 ;C6.拷貝線程向發(fā)送線程傳遞發(fā)送命令,等待內(nèi)核模塊拷貝命令;所述發(fā)送命令的數(shù) 據(jù)結(jié)構(gòu)為待發(fā)送數(shù)據(jù)所在的用戶緩存區(qū)節(jié)點(diǎn)、第一個(gè)待發(fā)送元素的序號(hào)、發(fā)送元素的個(gè) 數(shù)、發(fā)送數(shù)據(jù)在用戶緩存區(qū)節(jié)點(diǎn)的起始地址;D.用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟,當(dāng)拷貝線程的發(fā)送命令到來(lái)時(shí),順序執(zhí)行以下子步驟Dl.守護(hù)進(jìn)程模塊的發(fā)送線程執(zhí)行發(fā)送任務(wù);D2.發(fā)送任務(wù)完成,發(fā)送線程向拷貝線程發(fā)送任務(wù)完成報(bào)告,等待拷貝線程的發(fā)送命 令;所述任務(wù)完成報(bào)告的數(shù)據(jù)結(jié)構(gòu)為已發(fā)送數(shù)據(jù)的長(zhǎng)度、已發(fā)送元素的數(shù)目。
3.如權(quán)利要求2所述的連續(xù)數(shù)據(jù)緩存方法,其特征在于所述子步驟C5中,判斷是否需要增加新的用戶緩存區(qū)節(jié)點(diǎn)或者回收多余的用戶緩存 區(qū)節(jié)點(diǎn)時(shí),判斷過(guò)程如下El.計(jì)算估算時(shí)間間隔I : I = (l-a) I+a S,式中,S為拷貝事件時(shí)間間隔,時(shí)間間隔系數(shù)a為O. 1 0. 3,a越偏向于0. l表示I的 取值與先前的拷貝事件時(shí)間間隔的關(guān)系越大,a越偏向于0. 3表明I的取值與最新一次拷 貝事件時(shí)間間隔的關(guān)系越大;E2.計(jì)算估算時(shí)間間隔偏差M:M = (l-b) M+b |S-I I ,式中,時(shí)間偏差系數(shù)b為0. 2 0. 4, b越偏向于0. 2表示M的取值與先前的估算時(shí)間 間隔偏差的關(guān)系越大,b越偏向于0. 4表明M的取值與與最新一次估算時(shí)間間隔偏差的關(guān) 系越大;M的初值為0 ;E3.計(jì)算緩存分配參數(shù)T :T = 1+4 M ;E4.判斷當(dāng)前使用的用戶緩存區(qū)節(jié)點(diǎn)是否為用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶緩存 區(qū)節(jié)點(diǎn),是則轉(zhuǎn)過(guò)程E5,否則轉(zhuǎn)過(guò)程E6 ;E5.判斷是否T < A,是則分配一個(gè)新的用戶緩存區(qū)節(jié)點(diǎn),否則保持用戶緩存區(qū)節(jié)點(diǎn)數(shù) 目不變;缺乏閾值A(chǔ)為被保護(hù)的磁盤寫(xiě)入一個(gè)內(nèi)核緩存區(qū)節(jié)點(diǎn)大小的數(shù)據(jù)所需時(shí)間的1 2倍;E6.判斷是否T > B,是則釋放用戶緩存區(qū)節(jié)點(diǎn)鏈表的最后一個(gè)用戶緩存區(qū)節(jié)點(diǎn),否則 保持用戶緩存區(qū)節(jié)點(diǎn)數(shù)目不變;富裕閾值B為(3 IO)XA。
全文摘要
一種連續(xù)數(shù)據(jù)緩存系統(tǒng)及其數(shù)據(jù)緩存方法,屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)和備份方法,解決由于突發(fā)I/O與網(wǎng)絡(luò)性能波動(dòng)帶來(lái)的連續(xù)數(shù)據(jù)捕獲能力與保護(hù)能力不匹配的問(wèn)題。本發(fā)明的系統(tǒng),由內(nèi)核緩存區(qū)、用戶緩存區(qū)、內(nèi)核模塊和守護(hù)進(jìn)程模塊組成。本發(fā)明的方法,包括初始化、內(nèi)核緩存區(qū)數(shù)據(jù)存儲(chǔ)、用戶緩存區(qū)數(shù)據(jù)存儲(chǔ)以及用戶緩存區(qū)數(shù)據(jù)發(fā)送步驟。本發(fā)明的系統(tǒng)采用內(nèi)核緩存和用戶緩存二級(jí)緩存機(jī)制,構(gòu)建在TCP/IP協(xié)議上,性能開(kāi)銷小,降低了客戶節(jié)點(diǎn)復(fù)雜性。本發(fā)明的方法采用較小的內(nèi)核緩存區(qū)和較大的用戶緩存區(qū),降低內(nèi)核處理的復(fù)雜度,并且提出緩存預(yù)判算法,及時(shí)分配或者回收用戶緩存區(qū)節(jié)點(diǎn),使得用戶緩存區(qū)的利用率最優(yōu)化,節(jié)約系統(tǒng)內(nèi)存資源。
文檔編號(hào)G06F12/02GK101770412SQ201010100899
公開(kāi)日2010年7月7日 申請(qǐng)日期2010年1月22日 優(yōu)先權(quán)日2010年1月22日
發(fā)明者馮光曦, 周可, 張一萍, 李巍, 李春花, 黃平, 黃揚(yáng) 申請(qǐng)人:華中科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
郓城县| 漳平市| 莒南县| 榕江县| 东乡县| 翁源县| 扬中市| 寻甸| 文昌市| 上饶市| 汝州市| 双城市| 宜宾县| 买车| 屯门区| 那坡县| 高青县| 锡林郭勒盟| 大方县| 西畴县| 岗巴县| 怀安县| 绵竹市| 郸城县| 保山市| 吉隆县| 如东县| 石屏县| 巴林左旗| 大方县| 澄江县| 晋中市| 延寿县| 五常市| 桦甸市| 汉沽区| 兴隆县| 民乐县| 南充市| 南丹县| 日喀则市|