一種應(yīng)用獨(dú)立緩存系統(tǒng)及方法
【專利摘要】一種應(yīng)用獨(dú)立緩存系統(tǒng)及方法,涉及計(jì)算機(jī)存儲(chǔ)【技術(shù)領(lǐng)域】,具體涉及基于Linux操作系統(tǒng)的存儲(chǔ)性能優(yōu)化領(lǐng)域。本發(fā)明解決了現(xiàn)有基于Linux操作系統(tǒng)的緩存系統(tǒng)存在的對(duì)與不同的應(yīng)用不通用、且當(dāng)多個(gè)應(yīng)用同時(shí)運(yùn)行時(shí)存在爭(zhēng)搶緩存資源的問題。所述應(yīng)用獨(dú)立緩存系統(tǒng)為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備。每個(gè)內(nèi)存塊設(shè)備對(duì)應(yīng)一個(gè)可配置的塊設(shè)備緩存處理策略模塊,所述的塊設(shè)備緩存處理策略模塊包括I/O處理策略模塊、緩存回寫策略模塊、緩存替換策略模塊以及緩存分配管理模塊四大模塊。本發(fā)明適合于基于Linux操作系統(tǒng)的存儲(chǔ)系統(tǒng)性能的優(yōu)化。
【專利說明】一種應(yīng)用獨(dú)立緩存系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)【技術(shù)領(lǐng)域】,更具體地,本發(fā)明涉及基于Linux操作系統(tǒng)的存儲(chǔ)性能優(yōu)化領(lǐng)域。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,數(shù)據(jù)存儲(chǔ)量呈指數(shù)級(jí)增長(zhǎng),各領(lǐng)域?qū)Υ笕萘看鎯?chǔ)設(shè)備需求越來越大,同時(shí)對(duì)存儲(chǔ)系統(tǒng)的I/o性能要求也越來越高。緩存技術(shù)作為優(yōu)化存儲(chǔ)系統(tǒng)I/O性能的重要手段,其對(duì)存儲(chǔ)系統(tǒng)性能優(yōu)化作用主要表現(xiàn)在兩個(gè)方面:①訪問高速緩存命中可減少對(duì)慢速磁盤的訪問包含預(yù)取及回寫在內(nèi)的緩存算法能有效增強(qiáng)磁盤I/o訪問的順序性,提高磁盤帶寬利用率。但基于Linux操作系統(tǒng)的緩存系統(tǒng)存在以下問題:
[0003]1、Linux針對(duì)同時(shí)運(yùn)行的所有應(yīng)用提供的統(tǒng)一的緩存系統(tǒng),而不同應(yīng)用I/O特性相差較大,Linux緩存系統(tǒng)無法針對(duì)特定應(yīng)用的I/O特性做獨(dú)立優(yōu)化,或者針對(duì)某個(gè)應(yīng)用的優(yōu)化,卻可能導(dǎo)致其他應(yīng)用性能變差;
[0004]2、同時(shí)運(yùn)行的多個(gè)應(yīng)用爭(zhēng)搶Linux管理的全局緩存資源,數(shù)據(jù)訪問局部性弱的應(yīng)用將會(huì)搶占大多數(shù)緩存資源,卻不能獲得與之相匹配的性能提升;而數(shù)據(jù)訪問局部性強(qiáng)的應(yīng)用由于得不到足夠的緩存,性能急劇下降,導(dǎo)致存儲(chǔ)系統(tǒng)整體性能下降。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有基于Linux操作系統(tǒng)的緩存系統(tǒng)存在的對(duì)與不同的應(yīng)用不通用、且當(dāng)多個(gè)應(yīng)用同時(shí)運(yùn)行時(shí)存在爭(zhēng)搶緩存資源的問題,本申請(qǐng)?zhí)岢鲆环N應(yīng)用獨(dú)立緩存系統(tǒng)及方法。
[0006]本發(fā)明所述的應(yīng)用獨(dú)立緩存系統(tǒng)為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備。
[0007]上述每個(gè)內(nèi)存塊設(shè)備包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略模塊。
[0008]所述的塊設(shè)備緩存處理策略模塊包括I/O處理策略模塊、緩存回寫策略模塊、緩存替換策略模塊以及緩存分配管理模塊四大模塊,所述四大模塊的功能分別為:
[0009]所述的I/O處理策略模塊用于處理、過濾上層來的讀寫I/O請(qǐng)求;
[0010]所述的緩存回寫策略模塊,用于對(duì)待寫入底層物理塊設(shè)備的I/O數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中;
[0011]所述的緩存替換策略模塊:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間;
[0012]所述的緩存分配管理模塊,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
[0013]所述應(yīng)用獨(dú)立緩存系統(tǒng)在某個(gè)內(nèi)存塊設(shè)備接受來自應(yīng)用的I/O請(qǐng)求時(shí),采用事先配置的、適應(yīng)于該應(yīng)用的I/O特性的緩存管理策略,在內(nèi)存中對(duì)來自應(yīng)用的I/O請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的I/o請(qǐng)求聚合成順序的I/O請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng),去訪問底層真正的物理塊設(shè)備。
[0014]本發(fā)明所述的應(yīng)用獨(dú)立緩存方法為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備;在應(yīng)用存取數(shù)據(jù)時(shí),訪問該應(yīng)用所單獨(dú)訪問的物理塊設(shè)備上所構(gòu)建的內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備虛擬作為中間代理,根據(jù)為該應(yīng)用設(shè)置的獨(dú)立緩存策略,對(duì)應(yīng)用I/O請(qǐng)求進(jìn)行進(jìn)一步處理后,再去訪問真正的物理塊設(shè)備。
[0015]所述的每個(gè)應(yīng)用所對(duì)應(yīng)的內(nèi)存塊設(shè)備均包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略。
[0016]所述的塊設(shè)備緩存處理策略包括I/O處理策略、緩存回寫策略、緩存替換策略以及緩存分配管理策略。
[0017]所述的I/O處理策略用于處理、過濾上層來的讀寫I/O請(qǐng)求。
[0018]所述的緩存回寫策略,用于對(duì)待寫入底層物理塊設(shè)備的I/O數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中。
[0019]所述的緩存替換策略:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間。
[0020]所述的緩存分配管理策略,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
[0021]所述應(yīng)用獨(dú)立緩存方法中,當(dāng)所述內(nèi)存塊設(shè)備接受來自應(yīng)用的I/O請(qǐng)求時(shí),采用事先配置的、適用于該應(yīng)用的I/o特性的緩存管理策略,在該內(nèi)存塊設(shè)備中對(duì)來自該應(yīng)用的I/o請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的、小的I/O請(qǐng)求聚合成順序I/O請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng)去訪問底層中與該應(yīng)用對(duì)應(yīng)的真正物理塊設(shè)備。
[0022]本發(fā)明所述的應(yīng)用獨(dú)立緩存系統(tǒng)及方法是在現(xiàn)有Linux緩存系統(tǒng)的基礎(chǔ)上而設(shè)計(jì)的,本發(fā)明所述的緩存系統(tǒng)與現(xiàn)有的Linux緩存系統(tǒng)構(gòu)成二級(jí)緩存系統(tǒng)。在二級(jí)緩存系統(tǒng)中,可以根據(jù)應(yīng)用不同I/O特性采用不同的緩存策略,對(duì)該應(yīng)用存儲(chǔ)性能做獨(dú)立優(yōu)化;同時(shí)該應(yīng)用能使用的緩存資源由系統(tǒng)獨(dú)立為其分配,不會(huì)發(fā)生多個(gè)應(yīng)用爭(zhēng)搶緩存資源而導(dǎo)致的系統(tǒng)整體性能下降的情況發(fā)生。
[0023]本發(fā)明所述的應(yīng)用獨(dú)立緩存系統(tǒng)的緩存框架,使得各個(gè)應(yīng)用的緩存空間相互隔離,不會(huì)互相影響。另外,作為虛擬的磁盤塊設(shè)備的內(nèi)存塊設(shè)備,可配置單獨(dú)緩存處理策略,使不同應(yīng)用可以采用不同的策略來做獨(dú)立優(yōu)化。
[0024]采用本發(fā)明所述的應(yīng)用獨(dú)立緩存系統(tǒng)及方法,可以針對(duì)不同應(yīng)用采用不同的優(yōu)化策略,同時(shí)避免各應(yīng)用之間相互干擾,從局部到整體全面提升存儲(chǔ)系統(tǒng)的性能。在同等硬件條件下,采用本緩存系統(tǒng)構(gòu)建的存儲(chǔ)系統(tǒng)具有更高的性價(jià)比。
【專利附圖】
【附圖說明】
[0025]圖1是本發(fā)明所述的應(yīng)用獨(dú)立緩存系統(tǒng)的框架示意圖。
[0026]圖2是是內(nèi)存塊設(shè)備I/O處理流程及緩存管理模型。
【具體實(shí)施方式】
[0027]【具體實(shí)施方式】一、參見圖1說明本實(shí)施方式。本實(shí)施方式所述的應(yīng)用獨(dú)立緩存系統(tǒng),為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備。
[0028]所述虛擬的磁盤塊設(shè)備作為一個(gè)Linux內(nèi)核塊設(shè)備驅(qū)動(dòng)程序,對(duì)系統(tǒng)提供標(biāo)準(zhǔn)的make_request函數(shù),作為操作系統(tǒng)I/O訪問接口。
[0029]【具體實(shí)施方式】二、本實(shí)施方式是對(duì)【具體實(shí)施方式】一所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的每個(gè)內(nèi)存塊設(shè)備包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略模塊。
[0030]本實(shí)施方式中,針對(duì)每個(gè)應(yīng)用配置獨(dú)立的塊設(shè)備緩存處理策略對(duì)應(yīng)用的I/O數(shù)據(jù)進(jìn)行處理。
[0031]【具體實(shí)施方式】三、本實(shí)施方式是對(duì)【具體實(shí)施方式】二所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的塊設(shè)備緩存處理策略模塊包括I/o處理策略模塊、緩存回寫策略模塊、緩存替換策略模塊以及緩存分配管理模塊四大模塊。
[0032]【具體實(shí)施方式】四、本實(shí)施方式是對(duì)【具體實(shí)施方式】三所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的I/o處理策略模塊用于處理、過濾上層來的讀寫I/O請(qǐng)求。
[0033]本實(shí)施方式所述的I/O處理策略模塊的功能例如:將眾多的小I/O合并成大的I/O請(qǐng)求,進(jìn)而減少底層的I/O請(qǐng)求數(shù)量,增強(qiáng)I/O的順序性等。在實(shí)際應(yīng)用中,該種I/O處理策略是根據(jù)應(yīng)用的I/o特性進(jìn)行設(shè)定編制的。
[0034]【具體實(shí)施方式】五、本實(shí)施方式是對(duì)【具體實(shí)施方式】三所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的緩存回寫策略模塊,用于對(duì)待寫入底層物理塊設(shè)備的I/o數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中。
[0035]本實(shí)施方式所述的緩存回寫策略模塊并不立即將I/O數(shù)據(jù)寫入到所對(duì)應(yīng)的應(yīng)用的底層物理塊設(shè)備中,而是在成功寫入到內(nèi)存塊設(shè)備后,即接收到返回寫入成功標(biāo)志后,根據(jù)緩存回寫策略,在合適的時(shí)機(jī)將數(shù)據(jù)真正寫入到相應(yīng)的物理塊設(shè)備,這樣能夠有效提高存儲(chǔ)設(shè)備寫入速度。該緩存回寫策略可根據(jù)各種應(yīng)用的I/O特性而設(shè)定。
[0036]【具體實(shí)施方式】六、本實(shí)施方式是對(duì)【具體實(shí)施方式】三所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的緩存替換策略模塊:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間。
[0037]當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),會(huì)占用內(nèi)存空間進(jìn)行I/O數(shù)據(jù)緩存,而當(dāng)應(yīng)用讀取數(shù)據(jù)時(shí),如發(fā)生緩存失效,內(nèi)存塊設(shè)備會(huì)從真正的物理塊設(shè)備讀取數(shù)據(jù),并放置到緩存中;當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),需要使用本實(shí)施方式所述的緩存替換策略從內(nèi)存中回收緩存資源。
[0038]所述從內(nèi)存中回收緩存資源以釋放內(nèi)存空間的方法,例如:可以將修改后的某些數(shù)據(jù)寫入到物理磁盤后釋放緩內(nèi)存資源,或者直接丟棄部分從物理磁盤讀出但未修改的數(shù)據(jù),進(jìn)而達(dá)到釋放內(nèi)存空間的效果。在實(shí)際應(yīng)用中,需要具體釋放哪些內(nèi)存空間,將新數(shù)據(jù)放入哪塊內(nèi)存空間,均由緩存替換策略決定。緩存替換策略需要根據(jù)應(yīng)用的I/o特性來編制。
[0039]【具體實(shí)施方式】七、本實(shí)施方式是對(duì)【具體實(shí)施方式】三所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,本實(shí)施方式中所述的緩存分配管理模塊,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
[0040]當(dāng)內(nèi)存塊設(shè)備需要緩存時(shí),該緩存分配管理模塊用于從可用內(nèi)存中分配緩存空間;當(dāng)緩存替換策略決定從某塊空間回收內(nèi)存資源時(shí),則將數(shù)據(jù)回寫到Linux緩存系統(tǒng)后,然后釋放相應(yīng)的內(nèi)存資源。
[0041]本實(shí)施方式所述的應(yīng)用獨(dú)立緩存系統(tǒng)能夠?yàn)槊總€(gè)應(yīng)用獨(dú)立管理自身的緩存空間,因此該系統(tǒng)的塊設(shè)備緩存處理策略可以根據(jù)應(yīng)用的I/o特性設(shè)定獨(dú)立的緩存管理策略,同時(shí)避免各應(yīng)用之間相互干擾,達(dá)到從整體到全局全面優(yōu)化存儲(chǔ)系統(tǒng)性能的目的。
[0042]【具體實(shí)施方式】八、參見圖2說明本實(shí)施方式。本實(shí)施方式是對(duì)【具體實(shí)施方式】一所述的應(yīng)用獨(dú)立緩存系統(tǒng)的進(jìn)一步限定,所述應(yīng)用獨(dú)立緩存系統(tǒng),在某個(gè)內(nèi)存塊設(shè)備接受來自應(yīng)用的I/o請(qǐng)求時(shí),采用事先配置的、適應(yīng)于該應(yīng)用的I/O特性的緩存管理策略,在內(nèi)存中對(duì)來自應(yīng)用的I/o請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的I/O請(qǐng)求聚合成順序的I/o請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng),去訪問底層真正的物理塊設(shè)備。
[0043]【具體實(shí)施方式】九、參見圖1說明本實(shí)施方式。本實(shí)施方式所述的應(yīng)用獨(dú)立緩存方法,該方法為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備;在應(yīng)用存取數(shù)據(jù)時(shí),訪問該應(yīng)用所單獨(dú)訪問的物理塊設(shè)備上所構(gòu)建的內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備虛擬作為中間代理,根據(jù)為該應(yīng)用設(shè)置的獨(dú)立緩存策略,對(duì)應(yīng)用I/O請(qǐng)求進(jìn)行進(jìn)一步處理后,再去訪問真正的物理塊設(shè)備。
[0044]本實(shí)施方式所述的應(yīng)用獨(dú)立緩存方法能夠?yàn)槊總€(gè)應(yīng)用獨(dú)立管理自身的緩存空間,因此該系統(tǒng)的塊設(shè)備緩存處理策略可以根據(jù)應(yīng)用的I/O特性設(shè)定獨(dú)立的緩存管理策略,同時(shí)避免各應(yīng)用之間相互干擾,達(dá)到從整體到全局全面優(yōu)化存儲(chǔ)系統(tǒng)性能的目的。
[0045]【具體實(shí)施方式】十、本實(shí)施方式是對(duì)【具體實(shí)施方式】九所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中,所述的每個(gè)應(yīng)用所對(duì)應(yīng)的內(nèi)存塊設(shè)備均包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略。
[0046]所述可配置的塊設(shè)備緩存處理策略是根據(jù)所述內(nèi)存塊設(shè)備對(duì)應(yīng)的應(yīng)用的性能來編制和設(shè)定的。
[0047]【具體實(shí)施方式】十一、本實(shí)施方式是對(duì)【具體實(shí)施方式】十所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中所述的塊設(shè)備緩存處理策略包括I/o處理策略、緩存回寫策略、緩存替換策略以及緩存分配管理策略。
[0048]【具體實(shí)施方式】十二、本實(shí)施方式是對(duì)【具體實(shí)施方式】十一所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中所述的I/o處理策略用于處理、過濾上層來的讀寫I/O請(qǐng)求。
[0049]本實(shí)施方式所述的I/O處理策略的功能例如:將眾多的小I/O合并成大的I/O請(qǐng)求,進(jìn)而減少底層的I/o請(qǐng)求數(shù)量,增強(qiáng)I/O的順序性等。在實(shí)際應(yīng)用中,該種I/O處理策略是根據(jù)應(yīng)用的I/o特性進(jìn)行設(shè)定編制的。
[0050]【具體實(shí)施方式】十三、本實(shí)施方式是對(duì)【具體實(shí)施方式】十一所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中所述的緩存回寫策略,用于對(duì)待寫入底層物理塊設(shè)備的I/o數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中。
[0051]本實(shí)施方式所述的緩存回寫策略并不立即將I/O數(shù)據(jù)寫入到所對(duì)應(yīng)的應(yīng)用的底層物理塊設(shè)備中,而是在成功寫入到內(nèi)存塊設(shè)備后,即接收到返回寫入成功標(biāo)志后,根據(jù)緩存回寫策略,在合適的時(shí)機(jī)將數(shù)據(jù)真正寫入到相應(yīng)的物理塊設(shè)備,這樣能夠有效提高存儲(chǔ)設(shè)備寫入速度。該緩存回寫策略可根據(jù)各種應(yīng)用的I/o特性而設(shè)定。
[0052]【具體實(shí)施方式】十四、本實(shí)施方式是對(duì)【具體實(shí)施方式】十一所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中所述的緩存替換策略:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間。
[0053]當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),會(huì)占用內(nèi)存空間進(jìn)行I/O數(shù)據(jù)緩存,而當(dāng)應(yīng)用讀取數(shù)據(jù)時(shí),如發(fā)生緩存失效,內(nèi)存塊設(shè)備會(huì)從真正的物理塊設(shè)備讀取數(shù)據(jù),并放置到緩存中;當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),需要使用本實(shí)施方式所述的緩存替換策略從內(nèi)存中回收緩存資源。
[0054]所述從內(nèi)存中回收緩存資源以釋放內(nèi)存空間的方法,例如:可以將修改后的某些數(shù)據(jù)寫入到物理磁盤后釋放緩內(nèi)存資源,或者直接丟棄部分從物理磁盤讀出但未修改的數(shù)據(jù),進(jìn)而達(dá)到釋放內(nèi)存空間的效果。在實(shí)際應(yīng)用中,需要具體釋放哪些內(nèi)存空間,將新數(shù)據(jù)放入哪塊內(nèi)存空間,均由緩存替換策略決定。緩存替換策略需要根據(jù)應(yīng)用的I/o特性來編制。
[0055]【具體實(shí)施方式】十五、本實(shí)施方式是對(duì)【具體實(shí)施方式】十一所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中所述的緩存分配管理策略,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
[0056]當(dāng)內(nèi)存塊設(shè)備需要緩存時(shí),該緩存分配管理策略用于從可用內(nèi)存中分配緩存空間;當(dāng)緩存替換策略決定從某塊空間回收內(nèi)存資源時(shí),則將數(shù)據(jù)回寫到Linux緩存系統(tǒng)后,然后釋放相應(yīng)的內(nèi)存資源。
[0057]【具體實(shí)施方式】十六、參見圖2說明本實(shí)施方式。本實(shí)施方式是對(duì)【具體實(shí)施方式】九所述的應(yīng)用獨(dú)立緩存方法的進(jìn)一步限定,本實(shí)施方式中,當(dāng)所述內(nèi)存塊設(shè)備接受來自應(yīng)用的I/o請(qǐng)求時(shí),采用事先配置的、適用于該應(yīng)用的I/O特性的緩存管理策略,在該內(nèi)存塊設(shè)備中對(duì)來自該應(yīng)用的I/o請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的、小的I/O請(qǐng)求聚合成順序I/o請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng)去訪問底層中與該應(yīng)用對(duì)應(yīng)的真正物理塊設(shè)備。
[0058]本發(fā)明適合于基于Linux操作系統(tǒng)的存儲(chǔ)系統(tǒng)性能的優(yōu)化,同時(shí)為其它類型的存儲(chǔ)系統(tǒng)性能優(yōu)化提供了可借鑒的思路。其優(yōu)點(diǎn)在于:
[0059]I)本緩存系統(tǒng)可根據(jù)應(yīng)用I/O特性,設(shè)置不同的緩存管理策略,以獨(dú)立優(yōu)化應(yīng)用存儲(chǔ)性能,同時(shí)避免應(yīng)用之間相互干擾,從局部到整體全面提升存儲(chǔ)系統(tǒng)性能;
[0060]2)在同等硬件條件下,存儲(chǔ)設(shè)備采用本緩存框架提供的軟件方法提升存儲(chǔ)系統(tǒng)性能,可開發(fā)具有高性價(jià)比的存儲(chǔ)設(shè)備,擴(kuò)展其應(yīng)用領(lǐng)域,提高設(shè)備競(jìng)爭(zhēng)力;
[0061]3)本緩存系統(tǒng)采用面向?qū)ο?、開放式思想設(shè)計(jì),將各種管理策略封裝成具有標(biāo)準(zhǔn)接口、可配置的獨(dú)立模塊,具有良好的可用性及擴(kuò)展性。
【權(quán)利要求】
1.一種應(yīng)用獨(dú)立緩存系統(tǒng),其特征在于,該系統(tǒng)為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備。
2.根據(jù)權(quán)利要求1所述的一種應(yīng)用獨(dú)立緩存系統(tǒng),其特征在于,所述的每個(gè)內(nèi)存塊設(shè)備包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略模塊。
3.根據(jù)權(quán)利要求1所述的一種應(yīng)用獨(dú)立緩存系統(tǒng),其特征在于,所述的塊設(shè)備緩存處理策略模塊包括I/o處理策略模塊、緩存回寫策略模塊、緩存替換策略模塊以及緩存分配管理模塊四大模塊。
4.根據(jù)權(quán)利要求3所述的一種應(yīng)用獨(dú)立緩存系統(tǒng),其特征在于, 所述的I/O處理策略模塊用于處理、過濾上層來的讀寫I/O請(qǐng)求; 所述的緩存回寫策略模塊,用于對(duì)待寫入底層物理塊設(shè)備的I/O數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中; 所述的緩存替換策略模塊:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間; 所述的緩存分配管理模塊,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
5.根據(jù)權(quán)利要求1所述的一種應(yīng)用獨(dú)立緩存系統(tǒng),其特征在于,所述應(yīng)用獨(dú)立緩存系統(tǒng)在某個(gè)內(nèi)存塊設(shè)備接受來自應(yīng)用的I/o請(qǐng)求時(shí),采用事先配置的、適應(yīng)于該應(yīng)用的I/O特性的緩存管理策略,在內(nèi)存中對(duì)來自應(yīng)用的I/o請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的I/O請(qǐng)求聚合成順序的I/O請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng),去訪問底層真正的物理塊設(shè)備。
6.一種應(yīng)用獨(dú)立緩存方法,其特征在于,該方法為每個(gè)應(yīng)用分配一塊內(nèi)存作為該應(yīng)用獨(dú)立管理的緩存資源,并在該應(yīng)用單獨(dú)訪問的物理塊設(shè)備之上構(gòu)建一個(gè)內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備在Linux內(nèi)核空間呈現(xiàn)為一個(gè)虛擬的磁盤塊設(shè)備;在應(yīng)用存取數(shù)據(jù)時(shí),訪問該應(yīng)用所單獨(dú)訪問的物理塊設(shè)備上所構(gòu)建的內(nèi)存塊設(shè)備,該內(nèi)存塊設(shè)備虛擬作為中間代理,根據(jù)為該應(yīng)用設(shè)置的獨(dú)立緩存策略,對(duì)應(yīng)用I/O請(qǐng)求進(jìn)行進(jìn)一步處理后,再去訪問真正的物理塊設(shè)備。
7.根據(jù)權(quán)利要求6所述的一種應(yīng)用獨(dú)立緩存方法,其特征在于,所述的每個(gè)應(yīng)用所對(duì)應(yīng)的內(nèi)存塊設(shè)備均包含三個(gè)參數(shù):該內(nèi)存塊設(shè)備所對(duì)應(yīng)的真正物理塊設(shè)備、系統(tǒng)分配給的緩存資源、可配置的塊設(shè)備緩存處理策略。
8.根據(jù)權(quán)利要求6所述的一種應(yīng)用獨(dú)立緩存方法,其特征在于,所述的塊設(shè)備緩存處理策略包括I/O處理策略、緩存回寫策略、緩存替換策略以及緩存分配管理策略。
9.根據(jù)權(quán)利要求8所述的一種應(yīng)用獨(dú)立緩存方法,其特征在于, 所述的I/o處理策略用于處理、過濾上層來的讀寫I/O請(qǐng)求; 所述的緩存回寫策略,用于對(duì)待寫入底層物理塊設(shè)備的I/o數(shù)據(jù),在接收到內(nèi)存塊設(shè)備反饋的寫入成功標(biāo)志之后,再根據(jù)緩存回寫策略將數(shù)據(jù)寫入到對(duì)應(yīng)的物理塊設(shè)備中; 所述的緩存替換策略:用于當(dāng)應(yīng)用寫入數(shù)據(jù)時(shí),當(dāng)分配給該內(nèi)存塊設(shè)備的緩存空間使用率達(dá)到一定限值時(shí),從內(nèi)存中回收緩存資源,以釋放內(nèi)存空間; 所述的緩存分配管理策略,用于維護(hù)一個(gè)內(nèi)存塊設(shè)備可用及已用緩存資源空間鏈表。
10.根據(jù)權(quán)利要求6所述的一種應(yīng)用獨(dú)立緩存方法,其特征在于,當(dāng)所述內(nèi)存塊設(shè)備接受來自應(yīng)用的I/o請(qǐng)求時(shí),采用事先配置的、適用于該應(yīng)用的I/O特性的緩存管理策略,在該內(nèi)存塊設(shè)備中對(duì)來自該應(yīng)用的I/o請(qǐng)求采用組合、過濾、排隊(duì)等多種方式處理,并將零散的、小的I/o請(qǐng)求聚合成順序I/O請(qǐng)求,然后經(jīng)Linux緩存系統(tǒng)去訪問底層中與該應(yīng)用對(duì)應(yīng)的真正物理塊設(shè)備。
【文檔編號(hào)】G06F12/08GK104360955SQ201410742565
【公開日】2015年2月18日 申請(qǐng)日期:2014年12月8日 優(yōu)先權(quán)日:2014年12月8日
【發(fā)明者】何凱, 劉成印, 劉偉, 王雪琪, 高群, 初永麗 申請(qǐng)人:山東工商學(xué)院, 煙臺(tái)中用電子科技有限公司