專利名稱:光盤鏡像服務(wù)器/客戶機(jī)的兩級(jí)Cache系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域,具體是指光盤鏡像服務(wù)器/客戶機(jī)的兩級(jí)Cache系統(tǒng)。
2、在進(jìn)行網(wǎng)絡(luò)傳輸時(shí),客戶端發(fā)出網(wǎng)絡(luò)請(qǐng)求后,操作系統(tǒng)一般采用查詢的方式,檢查請(qǐng)求是否返回,如果請(qǐng)求返回慢,勢(shì)必會(huì)影響數(shù)據(jù)傳輸率。
3、如果客戶端的訪問(wèn)大量增加,在服務(wù)器端取數(shù)據(jù)時(shí)也會(huì)形成瓶頸,從而影響數(shù)據(jù)的傳輸。
本發(fā)明的光盤鏡像服務(wù)器/客戶機(jī)的兩級(jí)Cache系統(tǒng),其特征在于,該系統(tǒng)采用兩級(jí)Cache結(jié)構(gòu);在客戶端設(shè)置一個(gè)自適應(yīng)的Cache和預(yù)取線程模塊,該模塊通過(guò)客戶端請(qǐng)求接口接收來(lái)自操作系統(tǒng)的請(qǐng)求,并進(jìn)行如下處理(1)接收操作系統(tǒng)的請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中則返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1);如果未命中則轉(zhuǎn)(3);(3)向網(wǎng)絡(luò)發(fā)送預(yù)取數(shù)據(jù)請(qǐng)求,預(yù)取數(shù)據(jù)塊的大小根據(jù)前面的請(qǐng)求的命中情況確定如果前面的請(qǐng)求連續(xù)命中,假設(shè)連續(xù)命中n次,則預(yù)取數(shù)據(jù)塊的大小為B*(n+1),如果預(yù)取占用的Cache超過(guò)A時(shí),預(yù)取的數(shù)據(jù)塊大小為A;如果未命中,則預(yù)取數(shù)據(jù)塊的大小為B*2;其中B為操作系統(tǒng)請(qǐng)求的大小,A為客戶端的Cache的大小;(4)返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1);在服務(wù)器端設(shè)置一個(gè)以大塊數(shù)據(jù)為單位進(jìn)行組織的Cache,及相應(yīng)的光盤流服務(wù)模塊,該服務(wù)模塊接收客戶端的請(qǐng)求并進(jìn)行以下處理(1)服務(wù)器端從網(wǎng)絡(luò)中接收請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中,通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù);否則,從磁盤中取包含預(yù)取數(shù)據(jù)在內(nèi)的相應(yīng)請(qǐng)求的數(shù)據(jù),然后通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù)。
光盤作為一種存儲(chǔ)介質(zhì),它具有下述不同于磁盤的特性,本發(fā)明正是根據(jù)光盤的這些特性提出來(lái)的。
第一,一張光盤可以看成一個(gè)獨(dú)立的存儲(chǔ)單位,它的容量比較大,而且它所存放的文件都是順序的,不存在磁盤碎片現(xiàn)象。
第二,把一張光盤作為一個(gè)文件鏡像在磁盤上時(shí),它在物理上的存放一般也是連續(xù)的,因?yàn)樽鳛殓R像服務(wù)器的磁盤肯定不是碎片很多的磁盤。
第三,用戶在使用光盤時(shí),一般都是讀取連續(xù)的數(shù)據(jù)。
通過(guò)對(duì)采用兩級(jí)Cache的光盤鏡像服務(wù)器系統(tǒng)進(jìn)行測(cè)試,在請(qǐng)求數(shù)據(jù)連續(xù)的情況下,整個(gè)系統(tǒng)的性能有很大的提高。我們?cè)?00M的局域網(wǎng)內(nèi)測(cè)試了使用不同請(qǐng)求塊大小的順序請(qǐng)求的數(shù)據(jù)傳輸率,結(jié)果證明采用兩級(jí)Cache系統(tǒng)的數(shù)據(jù)傳輸率與請(qǐng)求塊的大小基本上沒(méi)有關(guān)系,即在任何請(qǐng)求塊大小的情況下,數(shù)據(jù)傳輸率都很高。同時(shí),我們還測(cè)試了網(wǎng)上鄰居的順序讀請(qǐng)求的數(shù)據(jù)傳輸率,結(jié)果顯示,采用本發(fā)明的系統(tǒng)數(shù)據(jù)傳輸率要大大高于網(wǎng)上鄰居的數(shù)據(jù)傳輸率。上述結(jié)果如圖4所示。
如
圖1所示,本發(fā)明采用兩級(jí)Cache結(jié)構(gòu)由主Cache(服務(wù)器端Cache)1和客戶端Cache2組成。主Cache1對(duì)所有的客戶端有效,是一個(gè)大的Cache,可提高服務(wù)器的數(shù)據(jù)讀取速度??蛻舳薈ache2只對(duì)本客戶端有效。客戶端可以在任何地方,通過(guò)Internet訪問(wèn)服務(wù)器端。它是一個(gè)自適應(yīng)的Cache,通過(guò)預(yù)取機(jī)制增大一次網(wǎng)絡(luò)請(qǐng)求的大小,以提高網(wǎng)絡(luò)數(shù)據(jù)傳輸效率,其中預(yù)取由專用的線程來(lái)完成,不需要操作系統(tǒng)來(lái)觸發(fā)。
客戶端Cache2主要是為了提高網(wǎng)絡(luò)數(shù)據(jù)傳輸率以及對(duì)操作系統(tǒng)請(qǐng)求的響應(yīng)速率。在客戶端對(duì)光盤鏡像服務(wù)器的請(qǐng)求一般是大塊且連續(xù)的,客戶端Cache根據(jù)這一特點(diǎn),采用了一種自適應(yīng)的預(yù)取算法,即根據(jù)開始的請(qǐng)求和以后的命中率確定預(yù)取塊的大小。因?yàn)榭蛻舳薈ache只為一個(gè)用戶服務(wù),所以客戶端的Cache不需要很大(一般設(shè)為2M),循環(huán)使用??蛻舳送ㄟ^(guò)客戶端程序接口接收來(lái)自操作系統(tǒng)的請(qǐng)求,然后再通過(guò)一個(gè)預(yù)取線程從服務(wù)器端讀取數(shù)據(jù),其具體步驟如下(其中操作系統(tǒng)請(qǐng)求的大小一般設(shè)為32K)(1)接收操作系統(tǒng)的請(qǐng)求(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中則返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1);如果未命中則轉(zhuǎn)(3)(3)向網(wǎng)絡(luò)發(fā)預(yù)取數(shù)據(jù)請(qǐng)求,預(yù)取數(shù)據(jù)塊的大小根據(jù)前面的請(qǐng)求的命中情況確定。如果前面的請(qǐng)求連續(xù)命中,假設(shè)連續(xù)命中n次,則預(yù)取數(shù)據(jù)塊的大小為32*(n+1)K,如果預(yù)取占用的Cache超過(guò)2M時(shí),預(yù)取的數(shù)據(jù)塊大小為2M;如果未命中則預(yù)取數(shù)據(jù)塊的大小為64K。
(4)返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1)。
服務(wù)器端Cache容量較大,以大塊數(shù)據(jù)為單位進(jìn)行組織,通過(guò)每次從磁盤上讀取大塊數(shù)據(jù)加快讀數(shù)據(jù)的速度;同時(shí),請(qǐng)求在Cache中命中又可以加快請(qǐng)求響應(yīng)的速度。服務(wù)器端Cache的容量根據(jù)服務(wù)器的配置和所服務(wù)的客戶端的數(shù)量確定,容量越大,其效果越好;服務(wù)器端Cache的數(shù)據(jù)單位是Cache從磁盤中取數(shù)據(jù)的基本單位,根據(jù)鏡像光盤的類型確定,一般取30K字節(jié)。服務(wù)器端通過(guò)光盤鏡像服務(wù)器端的光盤流服務(wù)模塊,接收客戶端的請(qǐng)求并進(jìn)行處理,其請(qǐng)求的具體處理過(guò)程如下(1)服務(wù)器端從網(wǎng)絡(luò)中接收請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中,通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù);否則,從磁盤中取相應(yīng)請(qǐng)求的數(shù)據(jù)(含預(yù)取數(shù)據(jù))然后通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù)。
由于本發(fā)明充分利用了光盤鏡像及網(wǎng)絡(luò)傳輸?shù)奶攸c(diǎn)以及Cache的局部性原理,在實(shí)際應(yīng)用中能夠大大提高系統(tǒng)效率。
如圖2所示,客戶端的用戶需要讀取光盤鏡像文件,首先是通過(guò)操作系統(tǒng)向客戶端請(qǐng)求接口發(fā)讀數(shù)據(jù)請(qǐng)求,這時(shí)啟動(dòng)客戶端的預(yù)取線程。預(yù)取線程根據(jù)上面提到的四個(gè)步驟開始通過(guò)網(wǎng)絡(luò)發(fā)送請(qǐng)求到服務(wù)器端。服務(wù)器端的光盤流服務(wù)模塊接收客戶端發(fā)送來(lái)的請(qǐng)求,然后進(jìn)行處理。
圖3中,Cache中當(dāng)前命中的部分和它后面的預(yù)取部分是有效的數(shù)據(jù);前面的請(qǐng)求命中的部分和還未使用的內(nèi)存部分都視為空白區(qū),可以存放后面預(yù)取的數(shù)據(jù)。當(dāng)Cache占用達(dá)到Cache內(nèi)存區(qū)的尾端時(shí),又轉(zhuǎn)到其始端。
我們?cè)?00M的局域網(wǎng)內(nèi)進(jìn)行了以下三個(gè)方面的數(shù)據(jù)測(cè)試(1)Windows所提供的網(wǎng)上鄰居的順序讀的數(shù)據(jù)傳輸率;(2)本系統(tǒng)順序讀的數(shù)據(jù)傳輸率;(3)本系統(tǒng)去掉客戶端Cache后順序讀的數(shù)據(jù)傳輸率。測(cè)試分別采用不同的數(shù)據(jù)塊大小進(jìn)行。其結(jié)果如圖4所示。
權(quán)利要求
1.光盤鏡像服務(wù)器/客戶機(jī)的兩級(jí)Cache系統(tǒng),其特征在于,該系統(tǒng)采用兩級(jí)Cache結(jié)構(gòu);在客戶端設(shè)置一個(gè)自適應(yīng)的Cache和預(yù)取線程模塊,該模塊通過(guò)客戶端請(qǐng)求接口接收來(lái)自操作系統(tǒng)的請(qǐng)求,并進(jìn)行如下處理(1)接收操作系統(tǒng)的請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中則返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1);如果未命中則轉(zhuǎn)(3);(3)向網(wǎng)絡(luò)發(fā)送預(yù)取數(shù)據(jù)請(qǐng)求,預(yù)取數(shù)據(jù)塊的大小根據(jù)前面的請(qǐng)求的命中情況確定如果前面的請(qǐng)求連續(xù)命中,假設(shè)連續(xù)命中n次,則預(yù)取數(shù)據(jù)塊的大小為B*(n+1),如果預(yù)取占用的Cache超過(guò)A時(shí),預(yù)取的數(shù)據(jù)塊大小為A;如果未命中,則預(yù)取數(shù)據(jù)塊的大小為B*2;其中B為操作系統(tǒng)請(qǐng)求的大小,A為客戶端的Cache的大??;(4)返回請(qǐng)求數(shù)據(jù)給操作系統(tǒng),進(jìn)入(1);在服務(wù)器端設(shè)置一個(gè)以大塊數(shù)據(jù)為單位進(jìn)行組織的Cache,及相應(yīng)的光盤流服務(wù)模塊,該服務(wù)模塊接收客戶端的請(qǐng)求并進(jìn)行以下處理(1)服務(wù)器端從網(wǎng)絡(luò)中接收請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中,通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù);否則,從磁盤中取包含預(yù)取數(shù)據(jù)在內(nèi)的相應(yīng)請(qǐng)求的數(shù)據(jù),然后通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種光盤鏡像服務(wù)器/客戶機(jī)的兩級(jí)Cache系統(tǒng),該系統(tǒng)采用兩級(jí)Cache結(jié)構(gòu);在客戶端設(shè)置一個(gè)自適應(yīng)的Cache和預(yù)取線程模塊,該模塊通過(guò)客戶端請(qǐng)求接口接收來(lái)自操作系統(tǒng)的請(qǐng)求,并進(jìn)行相應(yīng)處理;在服務(wù)器端設(shè)置一個(gè)以大塊數(shù)據(jù)為單位進(jìn)行組織的Cache,及相應(yīng)的光盤流服務(wù)模塊,該服務(wù)模塊接收客戶端的請(qǐng)求并以下處理(1)服務(wù)器端從網(wǎng)絡(luò)中接收請(qǐng)求;(2)在Cache中查詢?cè)撜?qǐng)求是否命中;如果命中,通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù);否則,從磁盤中取相應(yīng)請(qǐng)求的數(shù)據(jù),再通過(guò)網(wǎng)絡(luò)返回請(qǐng)求數(shù)據(jù)。測(cè)試表明這種兩級(jí)Cache系統(tǒng)的數(shù)據(jù)傳輸率與請(qǐng)求塊的大小基本上沒(méi)有關(guān)系,即在任何請(qǐng)求塊大小的情況下,數(shù)據(jù)傳輸率都很高;并且采用本系統(tǒng)的數(shù)據(jù)傳輸率要大大高于網(wǎng)上鄰居的數(shù)據(jù)傳輸率。
文檔編號(hào)G06F12/08GK1453710SQ0312802
公開日2003年11月5日 申請(qǐng)日期2003年5月23日 優(yōu)先權(quán)日2003年5月23日
發(fā)明者謝長(zhǎng)生, 譚志虎, 易法令, 萬(wàn)繼光, 魯修卓, 任勁 申請(qǐng)人:華中科技大學(xué)