專利名稱:數(shù)據(jù)緩存裝置和采用該裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)及緩存方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)信息技術(shù)領(lǐng)域,特別是涉及在動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ) 節(jié)點(diǎn)的環(huán)境下的一種數(shù)據(jù)緩存裝置和采用該裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)及緩存方法。
背景技術(shù):
在現(xiàn)有的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)中,其數(shù)據(jù)存儲(chǔ)方式是采用 集中存儲(chǔ)方式。圖1表示動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的結(jié)構(gòu),其中包括 多個(gè)存儲(chǔ)節(jié)點(diǎn)即存儲(chǔ)服務(wù)器,和多個(gè)計(jì)算節(jié)點(diǎn),它們通過網(wǎng)絡(luò)連接,每個(gè)計(jì)算 節(jié)點(diǎn)通過網(wǎng)絡(luò)訪問存儲(chǔ)節(jié)點(diǎn)。圖1中僅表示出三個(gè)存儲(chǔ)服務(wù)器,9個(gè)計(jì)算節(jié)點(diǎn)在一定時(shí)刻的連接關(guān)系, 它們之間的傳輸介質(zhì)是目前普遍使用的100Mb網(wǎng)絡(luò)環(huán)境,如圖中的箭頭,其中 標(biāo)記A的箭頭連線是表示計(jì)算節(jié)點(diǎn)連接到第一存儲(chǔ)節(jié)點(diǎn)上;標(biāo)記為B的箭頭連 線表示計(jì)算節(jié)點(diǎn)連接到第二存儲(chǔ)節(jié)點(diǎn)上;標(biāo)記為C的箭頭連線表示計(jì)算節(jié)點(diǎn)連 接到第三存儲(chǔ)節(jié)點(diǎn)上。在一定時(shí)刻,多個(gè)計(jì)算節(jié)點(diǎn)可能對(duì)應(yīng)同一個(gè)存儲(chǔ)服務(wù)器, 例如圖1的系統(tǒng)中有三個(gè)存儲(chǔ)節(jié)點(diǎn),第一存儲(chǔ)節(jié)點(diǎn)上面的數(shù)據(jù)有3個(gè)計(jì)算節(jié)點(diǎn) 訪問,分別是計(jì)算節(jié)點(diǎn)11、 14、 18;第二存儲(chǔ)節(jié)點(diǎn)上面的數(shù)據(jù)也有3個(gè)計(jì)算 節(jié)點(diǎn)訪問,分別是計(jì)算節(jié)點(diǎn)12、 16、 19;第三存儲(chǔ)節(jié)點(diǎn)上面的數(shù)據(jù)也有3個(gè) 計(jì)算節(jié)點(diǎn)訪問,分別是計(jì)算節(jié)點(diǎn)13、 15、 17,那么整個(gè)存儲(chǔ)系統(tǒng)中有3個(gè)存 儲(chǔ)節(jié)點(diǎn),9個(gè)計(jì)算節(jié)點(diǎn),通過網(wǎng)絡(luò)組織起來。當(dāng)然,按照存儲(chǔ)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn) 的配比,還可以在存儲(chǔ)系統(tǒng)中增加存儲(chǔ)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)?,F(xiàn)有的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的缺點(diǎn)是多個(gè)計(jì)算 節(jié)點(diǎn)同時(shí)訪問存儲(chǔ)節(jié)點(diǎn)的時(shí)候,由于計(jì)算節(jié)點(diǎn)的處理速度遠(yuǎn)大于訪問存儲(chǔ)節(jié)點(diǎn) 的速度,而且在某一時(shí)刻出現(xiàn)并發(fā)訪問的情況,訪問存儲(chǔ)數(shù)據(jù)的速度瓶頸就會(huì) 出現(xiàn)在傳輸介質(zhì)或者集中在存儲(chǔ)節(jié)點(diǎn)上面。例如多個(gè)計(jì)算節(jié)點(diǎn)啟動(dòng)的時(shí)候,因 為所需要的數(shù)據(jù)可能在同一個(gè)存儲(chǔ)節(jié)點(diǎn)中,這樣可能引起單個(gè)計(jì)算節(jié)點(diǎn)啟動(dòng)緩慢,用戶體驗(yàn)不佳;嚴(yán)重的情況下,可能導(dǎo)致一部分計(jì)算節(jié)點(diǎn)會(huì)藍(lán)屏或者死機(jī), 甚至導(dǎo)致存儲(chǔ)節(jié)點(diǎn)即存儲(chǔ)服務(wù)器死機(jī),造成系統(tǒng)癱瘓。解決這種問題的一個(gè)方法是為整個(gè)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)增加存儲(chǔ)節(jié)點(diǎn),雖然該方 法能夠解決這個(gè)問題,但同時(shí)增加了整個(gè)存儲(chǔ)系統(tǒng)的存儲(chǔ)節(jié)點(diǎn)的數(shù)量,相應(yīng)地 大大增加了存儲(chǔ)系統(tǒng)的成本。發(fā)明內(nèi)容本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種數(shù)據(jù)緩存裝置、方法及采 用該裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),其能夠減少計(jì)算節(jié)點(diǎn)對(duì)通過網(wǎng)絡(luò)訪問存儲(chǔ)節(jié)點(diǎn)的依 賴性,減少網(wǎng)絡(luò)負(fù)載,同時(shí)可以減少整個(gè)存儲(chǔ)系統(tǒng)對(duì)網(wǎng)絡(luò)的負(fù)載壓力;并在多 個(gè)計(jì)算節(jié)點(diǎn)在一定時(shí)刻出現(xiàn)并發(fā)訪問的情況下,減少對(duì)存儲(chǔ)節(jié)點(diǎn)的訪問次數(shù)。為了達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案一種數(shù)據(jù)緩存裝置,用于動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,其特征在于,包括網(wǎng)絡(luò)接口,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn);內(nèi)存,與所述網(wǎng)絡(luò)接口連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù);計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊,與所述內(nèi)存連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元,并用于與緩存存儲(chǔ)介質(zhì)傳輸數(shù)據(jù);處理單元,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊、所述網(wǎng)絡(luò)接口和所述內(nèi)存 連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì),與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單 元確定的緩存關(guān)系緩存數(shù)據(jù)。優(yōu)選地,所述網(wǎng)絡(luò)接口包括媒體訪問控制子層協(xié)議控制器和物理接口收發(fā)器。優(yōu)選地,所述接口為集成驅(qū)動(dòng)電子設(shè)備接口或串行傳輸技術(shù)硬盤接口 。 優(yōu)選地,所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程門陣列處理單元。優(yōu)選地,所述處理單元包括處理器和用于存儲(chǔ)控制程序的存儲(chǔ)固件。 優(yōu)選地,所述處理單元包括緩存信息管理模塊,與緩存處理模塊連接,用于管理所述緩存存儲(chǔ)介質(zhì)中 的緩存數(shù)據(jù)的元數(shù)據(jù),搜索所述元數(shù)據(jù)的索引信息的索引表;緩存處理模塊,用于向內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供管理信息,并 根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求,處理緩存存儲(chǔ)介質(zhì)中緩存數(shù)據(jù)的緩存關(guān)系;內(nèi)存管理模塊,用于管理內(nèi)存中的數(shù)據(jù);硬件抽象層模塊,用于為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接臟數(shù)據(jù)寫回模塊,用于從所述緩存處理模塊獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的臟數(shù)據(jù)寫回到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)中。優(yōu)選地,所述元數(shù)據(jù)存儲(chǔ)在所述緩存存儲(chǔ)介質(zhì)的預(yù)定的集中存儲(chǔ)區(qū)域。 優(yōu)選地,所述元數(shù)據(jù)還保存在所述緩存存儲(chǔ)介質(zhì)的與當(dāng)前緩存數(shù)據(jù)塊相關(guān)的冗余區(qū)。優(yōu)選地,所述索引表采用鏈?zhǔn)焦1?,哈希函?shù)使用直接映射方式。 優(yōu)選地,所述硬件抽象層模塊采用異步硬件操作方法為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接口。優(yōu)選地,所述處理單元還包括網(wǎng)絡(luò)協(xié)議模塊,與所述內(nèi)存管理模塊連接,用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊進(jìn)行處理。本發(fā)明還提供一種動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),包括通過網(wǎng)絡(luò)連接的多個(gè)計(jì)算節(jié)點(diǎn)和至少一個(gè)存儲(chǔ)節(jié)點(diǎn),其特征在于,還包括緩存裝置,所述計(jì)算節(jié)點(diǎn)與所述緩存裝置連接并通過所述緩存裝置連接到網(wǎng)絡(luò)上的所述存儲(chǔ)節(jié)點(diǎn),所述緩存裝置包括網(wǎng)絡(luò)接口,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn);內(nèi)存,與所述網(wǎng)絡(luò)接口連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù);計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊,與所述內(nèi)存連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元,并用于與緩存存儲(chǔ)介質(zhì)傳輸數(shù)據(jù);處理單元,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊、所述網(wǎng)絡(luò)接口和所述內(nèi)存 連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì),與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單 元確定的緩存關(guān)系緩存數(shù)據(jù)。優(yōu)選地,所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程門陣列處理單元。優(yōu)選地,所述處理單元包括緩存信息管理模塊,與緩存處理模塊連接,用于管理所述緩存存儲(chǔ)介質(zhì)中 的緩存數(shù)據(jù)的元數(shù)據(jù),搜索所述元數(shù)據(jù)的索引信息的索引表;緩存處理模塊,用于向內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供管理信息,并 根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求,處理緩存存儲(chǔ)介質(zhì)中緩存數(shù)據(jù)的緩存關(guān)系;內(nèi)存管理模塊,用于管理內(nèi)存中的數(shù)據(jù);硬件抽象層模塊,用于為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接臟數(shù)據(jù)寫回模塊,用于從所述緩存處理模塊獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的臟數(shù)據(jù)寫回到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)中。優(yōu)選地,所述元數(shù)據(jù)存儲(chǔ)在所述緩存存儲(chǔ)介質(zhì)的預(yù)定的集中存儲(chǔ)區(qū)域。 優(yōu)選地,所述元數(shù)據(jù)還保存在所述緩存存儲(chǔ)介質(zhì)的與當(dāng)前緩存數(shù)據(jù)塊相關(guān)的冗余區(qū)。優(yōu)選地,所述硬件抽象層模塊采用異步硬件操作方法為內(nèi)存管理模塊和臟 數(shù)據(jù)寫回模塊提供硬件操作接口 。優(yōu)選地,所述處理單元還包括網(wǎng)絡(luò)協(xié)議模塊,與所述內(nèi)存管理模塊連接, 用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊進(jìn)行處理。為達(dá)到上述目的,本發(fā)明還提供一種動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò) 存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法,包括如下步驟步驟Sl,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,分別按照請(qǐng)求的數(shù)據(jù)塊的存儲(chǔ)位置 進(jìn)行處理,在內(nèi)存中將數(shù)據(jù)塊處理后提供給計(jì)算節(jié)點(diǎn),并處理數(shù)據(jù)的緩存關(guān)系;步驟S2,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出寫請(qǐng)求后,通過處理數(shù)據(jù)的緩存關(guān)系確定在緩 存存儲(chǔ)介質(zhì)上需要被替換出去的數(shù)據(jù)并將該數(shù)據(jù)寫回到存儲(chǔ)節(jié)點(diǎn)上,確定寫請(qǐng) 求的相關(guān)數(shù)據(jù)中需要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù)塊,并將該數(shù)據(jù)塊寫入緩存存儲(chǔ) 介質(zhì)。優(yōu)選地,所述步驟S2中還包括在將緩存數(shù)據(jù)寫入所述緩存存儲(chǔ)介質(zhì)時(shí),先將該數(shù)據(jù)寫入緩存存儲(chǔ)介質(zhì)中設(shè)定的備用區(qū),然后修改該數(shù)據(jù)的元數(shù)據(jù),最 后把被替換的區(qū)域中的舊數(shù)據(jù)擦掉并寫入新數(shù)據(jù)。優(yōu)選地,所述步驟S2中還包括當(dāng)有數(shù)據(jù)塊需要寫入緩存存儲(chǔ)介質(zhì)時(shí), 通過元數(shù)據(jù)的擦寫位圖判斷是否要對(duì)緩存存儲(chǔ)介質(zhì)中的寫入位置進(jìn)行擦除操 作,如果需要擦除操作,則先把需要擦除操作的位置的數(shù)據(jù)讀到內(nèi)存中,之后 在內(nèi)存中根據(jù)要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù)塊修改數(shù)據(jù)后一起寫入緩存存儲(chǔ)介 質(zhì)。優(yōu)選地,步驟S1具體包括步驟SIO,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,對(duì)請(qǐng)求的數(shù)據(jù)塊按照存儲(chǔ)位置進(jìn)行 如下分類處理內(nèi)存命中的數(shù)據(jù)塊,則記錄該數(shù)據(jù)塊在內(nèi)存中的位置,且如果內(nèi)存中命中 的數(shù)據(jù)也存儲(chǔ)在緩存存儲(chǔ)介質(zhì)或存儲(chǔ)節(jié)點(diǎn)上,則僅處理內(nèi)存中的數(shù)據(jù)塊; 緩存存儲(chǔ)介質(zhì)未命中的數(shù)據(jù)塊,則讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊。 緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域外,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊; 緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域內(nèi),則通過讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊; 緩存命中且臟的數(shù)據(jù)塊,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊; 所述數(shù)據(jù)區(qū)域是由連續(xù)的數(shù)據(jù)塊構(gòu)成;步驟S20,對(duì)按照步驟S10分類處理的數(shù)據(jù)塊處理后,在內(nèi)存中合并數(shù)據(jù)塊并提交給計(jì)算節(jié)點(diǎn)。優(yōu)選地,歩驟Sl和步驟S2中所述處理數(shù)據(jù)的緩存關(guān)系包括如下步驟 如果讀請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則數(shù)據(jù)塊在第一物理緩存鏈表隊(duì)列中的對(duì)應(yīng)位置不改變;如果同時(shí)命中 內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊移到第二物理緩存鏈表隊(duì)列的隊(duì)首;所述第 一物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中一次的緩存數(shù)據(jù)在緩存介質(zhì)中 的位置;所述第二物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中至少兩次的緩存 數(shù)據(jù)在緩存介質(zhì)中的位置;如果寫請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則將該數(shù)據(jù)塊對(duì)應(yīng)的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首;如果同時(shí) 命中內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊對(duì)應(yīng)的位置移到第二物理緩存鏈表隊(duì)列 的隊(duì)首;如果讀或?qū)懻?qǐng)求命中第二物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,則把這個(gè)數(shù)據(jù)塊對(duì) 應(yīng)的位置移到第二物理緩存鏈表隊(duì)列的隊(duì)首;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第一邏輯緩存鏈表隊(duì)列對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第一修 改方法修改用于調(diào)整第一物理緩存鏈表與第二物理緩存鏈表的隊(duì)列長度的調(diào) 整因子P,執(zhí)行第一替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊在第一邏輯緩存鏈 表的對(duì)應(yīng)位置移到第二物理緩存鏈表的隊(duì)首位置;如果沒有命中內(nèi)部的對(duì)應(yīng)扇 區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第一替換操作,把該數(shù)據(jù)塊的位置移到第一物理緩存 鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子P值不改變;對(duì)于讀請(qǐng)求,數(shù)據(jù)塊在第一邏輯 緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不改變;其中,所述第一邏輯緩存鏈表用來描述從第一物理緩存鏈表中被替換出去 的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置信息,第二邏輯緩存鏈表用來描述從第二物理 緩存鏈表中被替換出去的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置;用于修改調(diào)整因子P 值的所述第一修改方法是選取P+S和緩存存儲(chǔ)介質(zhì)的物理緩存容量中的最小 值,其中5的取值是當(dāng)所述第一邏輯緩存鏈表的隊(duì)列長度大于或等于所述 第二邏輯緩存鏈表的隊(duì)列長度時(shí),S等于l;否則S等于所述第二邏輯緩存 鏈表的隊(duì)列長度除以所述第一邏輯緩存鏈表的隊(duì)列長度;所述第一替換操作 為如果滿足第一條件所述第一物理緩存鏈表的隊(duì)列長度大于O并且大于所 述調(diào)整因子P值,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈表的隊(duì)尾 位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈表的隊(duì)首 的位置;如果不滿足所述第一條件,則刪除第二物理緩存鏈表的隊(duì)尾位置,將 其移到第二邏輯緩存鏈表的隊(duì)首位置;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第二邏輯緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第二修改方 法修改所述調(diào)整因子P,執(zhí)行第二替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊的對(duì) 應(yīng)信息從第二邏輯緩存鏈表對(duì)應(yīng)的位置移到第二物理緩存鏈表的隊(duì)首位置;如 果沒有命中內(nèi)部的對(duì)應(yīng)扇區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第二替換操作,把該數(shù)據(jù)塊 的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子P值不改變,對(duì)于讀 請(qǐng)求,數(shù)據(jù)塊在第二邏輯緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不 改變;其中,用于修改調(diào)整因子P值的所述第二修改方法是選取p-S和緩存存 儲(chǔ)介質(zhì)的物理緩存容量中的最小值,其中5的取值是當(dāng)所述第二邏輯緩存 鏈表的隊(duì)列長度大于或等于所述第一邏輯緩存鏈表的隊(duì)列長度的時(shí),s等于 l;否則5等于所述第一邏輯緩存鏈表的隊(duì)列長度除以所述第二邏輯緩存鏈表 的隊(duì)列長度;所述第二替換操作為如果滿足第一條件所述第一物理緩存鏈 表的隊(duì)列長度大于O并且大于所述調(diào)整因子p值,或滿足第二條件所述第一 物理緩存鏈表的隊(duì)列長度大于O,并且等于所述調(diào)整因子P值,同時(shí)讀或?qū)懻?qǐng) 求命中第二邏輯緩存鏈表,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈 表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈 表的隊(duì)首的位置;如果不滿足所述第一條件和第二條件,則刪除第二物理緩存鏈表的隊(duì)尾位置,將其移到第二邏輯緩存鏈表的隊(duì)首位置。如果讀或?qū)懻?qǐng)求沒有命中所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩存鏈表和第二邏輯緩存鏈表,則按照以下兩種情況處理當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度等于 物理緩存的容量時(shí),如果第一物理緩存鏈表的隊(duì)列長度小于物理緩存的容量, 則刪除第一邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù),執(zhí)行所述第一替換操作,然 后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其位置信息放在第一物理緩存鏈表 隊(duì)列的隊(duì)首;如果第一物理緩存鏈表的隊(duì)列長度不小于物理緩存的容量,則刪 除第一物理緩存鏈表隊(duì)列的隊(duì)尾位置的數(shù)據(jù)并將請(qǐng)求的數(shù)據(jù)塊放入緩存存儲(chǔ) 介質(zhì)并將其放在第一物理緩存鏈表隊(duì)列的隊(duì)首;當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度小于 物理緩存的容量時(shí),則刪除第二邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊位置信 息-,進(jìn)一步判斷如果所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩 存鏈表和第二邏輯緩存鏈表的隊(duì)列長度總和等于兩倍的物理緩存容量,執(zhí)行所 述第一替換操作,然后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其數(shù)據(jù)塊對(duì)應(yīng)的 位置信息放在第一物理緩存鏈表隊(duì)列的隊(duì)首。優(yōu)選地,所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩存鏈表 和第二邏輯緩存鏈表的隊(duì)列長度在初始化時(shí)設(shè)為零。優(yōu)選地,還包括如下步驟步驟S3,在計(jì)算節(jié)點(diǎn)啟動(dòng)時(shí),啟動(dòng)并判斷上次關(guān)機(jī)是否是正常關(guān)機(jī),如果上次是非正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)掃描存儲(chǔ)在與緩存數(shù)據(jù)相關(guān)的冗余區(qū)內(nèi)的元 數(shù)據(jù),重新構(gòu)建緩存數(shù)據(jù)的元數(shù)據(jù);如果是正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)讀取緩存數(shù) 據(jù)的元數(shù)據(jù);步驟S4,判斷計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的綁定關(guān)系是否發(fā)生改變,如果綁定 關(guān)系沒有發(fā)生改變,則繼續(xù)啟動(dòng)并完成初始化,等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求; 如果綁定關(guān)系發(fā)生改變,則把臟數(shù)據(jù)按照上次的綁定關(guān)系寫回到存儲(chǔ)節(jié)點(diǎn),然 后等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求,并按本次綁定關(guān)系進(jìn)行使用。優(yōu)選地,步驟S4中所述初始化包括對(duì)緩存數(shù)據(jù)的元數(shù)據(jù)進(jìn)行初始化和對(duì) 用于搜索所述元數(shù)據(jù)的索引信息的索引表初始化。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果本發(fā)明能夠減少計(jì)算節(jié)點(diǎn)對(duì)通過網(wǎng)絡(luò)訪問存儲(chǔ)節(jié)點(diǎn)的依賴性,減少網(wǎng)絡(luò)負(fù)載,同時(shí)可以減少整個(gè)系統(tǒng)在一定時(shí)刻的網(wǎng)絡(luò)負(fù)載壓力;并在多個(gè)計(jì)算節(jié)點(diǎn)在 一定時(shí)刻出現(xiàn)并發(fā)訪問的情況下,減少對(duì)存儲(chǔ)節(jié)點(diǎn)的訪問次數(shù)。本發(fā)明的緩存方法使得緩存的命中率提高。在存儲(chǔ)節(jié)點(diǎn)的訪問次數(shù)比較多 時(shí),讀寫存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)性能差于讀寫緩存裝置的性能,因此從單個(gè)計(jì)算節(jié) 點(diǎn)的訪問性能上看,訪問效率也獲得比較好的提高。本發(fā)明在動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中采用緩存裝置 和緩存方法,不僅能夠提高網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)性能,而且降低了整個(gè)存儲(chǔ)系統(tǒng)的成 本。
圖1是現(xiàn)有的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖2是本發(fā)明的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖-,圖3是本發(fā)明的緩存裝置的結(jié)構(gòu)圖;圖4是本發(fā)明的緩存裝置中的處理單元的結(jié)構(gòu)圖;圖5是本發(fā)明的緩存裝置中的索引表的結(jié)構(gòu)圖;圖6是本發(fā)明的實(shí)施例中一段數(shù)據(jù)的結(jié)構(gòu)示意圖;圖7是本發(fā)明的緩沖裝置的元數(shù)據(jù)存儲(chǔ)位置示意圖;圖8是本發(fā)明的實(shí)施例所產(chǎn)生的效果圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明的數(shù)據(jù)緩存裝置、方法及采用該裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)進(jìn)一步詳 細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式
僅僅用以解釋本發(fā)明,并不用 于限定本發(fā)明。為了達(dá)到本發(fā)明的目的,如圖2、 3所示,作為一種可實(shí)施的方式,本發(fā) 明提供一種緩存裝置30,用于動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng) 中,連接在所述計(jì)算節(jié)點(diǎn)上并通過網(wǎng)絡(luò)連接到所述存儲(chǔ)節(jié)點(diǎn)。該緩存裝置30 包括網(wǎng)絡(luò)接口 31、內(nèi)存32、處理單元33、計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34和 緩存存儲(chǔ)介質(zhì)35,其中網(wǎng)絡(luò)接口31,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)-,較佳地,所述網(wǎng)絡(luò)接口 31包括媒體訪問控制(Media Access Control,MAC)子層協(xié)議控制器和物理接口 (PHY)收發(fā)器。內(nèi)存32,與所述網(wǎng)絡(luò)接口31連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù); 計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34,與所述內(nèi)存32連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元33,并用于與緩存存儲(chǔ)介質(zhì)35傳輸數(shù)據(jù);所述接口為集成驅(qū)動(dòng)電子設(shè)備接口 (IDE)或串行傳輸技術(shù)硬盤接口 (SATA)。采用這種接口有如下優(yōu)點(diǎn)(1) 電氣接口和協(xié)議都有通用的標(biāo)準(zhǔn);(2) 在個(gè)人計(jì)算機(jī)(PC)和服務(wù)器領(lǐng)域都有比較廣泛的廠商支持,是大 部分主機(jī)支持的啟動(dòng)設(shè)備,操作系統(tǒng)軟件支持成熟完善;(3) 成本較低,容量和性能方面可以接近小型計(jì)算機(jī)系統(tǒng)接口設(shè)備,協(xié) 議比較成熟,相關(guān)技術(shù)資源充足,相對(duì)其他存儲(chǔ)設(shè)備控制器容易實(shí)現(xiàn),普及率 比較高。較佳地,所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程門陣列(FPGA) 處理單元。處理單元33,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34、所述網(wǎng)絡(luò)接口 31 和所述內(nèi)存32連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì)35,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34連接,用于根據(jù) 處理單元33確定的緩存關(guān)系緩存數(shù)據(jù)。圖3中細(xì)箭頭連線表示控制關(guān)系,粗實(shí)心箭頭連線表示數(shù)據(jù)傳輸方向。處 理單元33作為核心部件控制其他部件。網(wǎng)絡(luò)接口 30和計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換 模塊34通過內(nèi)存32緩沖傳輸數(shù)據(jù),數(shù)據(jù)的傳輸均使用存儲(chǔ)器直接訪問(DMA) 方式,這樣不占用處理單元的資源。較佳地,如圖4所示,所述處理單元33包括緩存信息管理模塊41、緩 存處理模塊42、內(nèi)存管理模塊43、硬件抽象層模塊44和臟數(shù)據(jù)寫回模塊45; 其中緩存信息管理模塊41,與緩存處理模塊42連接,用于管理緩存存儲(chǔ)介質(zhì) 中的緩存數(shù)據(jù)的元數(shù)據(jù)和用于搜索所述元數(shù)據(jù)的索引信息的索引表。其中,在緩存裝置30工作過程中,是將所述元數(shù)據(jù)從緩存存儲(chǔ)介質(zhì)35 中讀到內(nèi)存32中進(jìn)行處理,所述元數(shù)據(jù)包括緩存管理的控制信息,如表示緩 存存儲(chǔ)介質(zhì)的數(shù)據(jù)和存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)對(duì)應(yīng)關(guān)系的信息,以及緩存存儲(chǔ)介質(zhì)上 數(shù)據(jù)的狀態(tài)信息,如臟數(shù)據(jù)位圖,有效數(shù)據(jù)位圖,擦寫位圖,緩存數(shù)據(jù)對(duì)應(yīng)的 鏈表隊(duì)列,以及在鏈表隊(duì)列中所處的位置。臟數(shù)據(jù)位圖用于表示緩存數(shù)據(jù)為臟 或干凈,所述臟數(shù)據(jù)是指數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)上或內(nèi)存中而沒有寫回到存儲(chǔ)節(jié) 點(diǎn)上,即緩存存儲(chǔ)介質(zhì)或內(nèi)存中為新數(shù)據(jù),而存儲(chǔ)節(jié)點(diǎn)上還是舊數(shù)據(jù);所述干 凈數(shù)據(jù)是指該數(shù)據(jù)在緩存介質(zhì)35上并且己經(jīng)通過網(wǎng)絡(luò)寫回到存儲(chǔ)節(jié)點(diǎn)上;有 效位圖是標(biāo)志該數(shù)據(jù)是否有效的位圖,擦寫位圖是指如果要寫入緩存存儲(chǔ)介質(zhì) 35中時(shí),是否引發(fā)擦除操作的位圖。緩存裝置30的運(yùn)行圍繞著對(duì)元數(shù)據(jù)的設(shè) 置、修改和檢測(cè)進(jìn)行,例如當(dāng)在緩存儲(chǔ)存介質(zhì)中發(fā)生緩存數(shù)據(jù)替換時(shí),修改緩 存數(shù)據(jù)的鏈表隊(duì)列及所在鏈表隊(duì)列中的位置,當(dāng)要寫入緩存存儲(chǔ)介質(zhì)時(shí)要修改 擦寫位圖和有效位圖,當(dāng)緩存數(shù)據(jù)寫回到存儲(chǔ)節(jié)點(diǎn)時(shí)要修改臟數(shù)據(jù)位圖等。如 圖7所示,元數(shù)據(jù)以分散和集中兩種方式分別存儲(chǔ)在緩存存儲(chǔ)介質(zhì)的兩處位 置。 一處位置是在緩存存儲(chǔ)介質(zhì)上預(yù)定的集中存儲(chǔ)區(qū)域71 (當(dāng)然也可以提供 另外的存儲(chǔ)介質(zhì)用于存儲(chǔ)該元數(shù)據(jù)),此種存儲(chǔ)方式稱作元數(shù)據(jù)集中存儲(chǔ)方式; 另一處位置是緩存數(shù)據(jù)區(qū)72的冗余區(qū)73,只包含與當(dāng)前數(shù)據(jù)塊相關(guān)的元數(shù)據(jù) 信息,此種存儲(chǔ)方式稱作元數(shù)據(jù)分散存儲(chǔ)方式。元數(shù)據(jù)的存儲(chǔ)采用這兩種存儲(chǔ) 方式的好處在于如果緩存裝置30和計(jì)算節(jié)點(diǎn)意外斷電或死機(jī)等造成非正常關(guān)機(jī),在計(jì)算節(jié)點(diǎn)下次啟動(dòng)時(shí)能夠按照冗余區(qū)中的分散元數(shù)據(jù)重建元數(shù)據(jù)結(jié) 構(gòu);如果緩存裝置和計(jì)算節(jié)點(diǎn)正常關(guān)機(jī)后,計(jì)算節(jié)點(diǎn)在下次啟動(dòng)時(shí)按照集中存 儲(chǔ)方式的元數(shù)據(jù)重建元數(shù)據(jù)結(jié)構(gòu),即直接從預(yù)定的集中存儲(chǔ)區(qū)域71讀取元數(shù) 據(jù),這樣啟動(dòng)速度比較快。當(dāng)系統(tǒng)出現(xiàn)異常斷電或計(jì)算節(jié)點(diǎn)死機(jī)等情況,由于此時(shí)元數(shù)據(jù)還在內(nèi)存32中處理,同時(shí),內(nèi)存32中也可能有一部分臟數(shù)據(jù),所以斷電或重啟后會(huì)丟 失,導(dǎo)致緩存裝置30的數(shù)據(jù)不可用。為解決內(nèi)存32中的元數(shù)據(jù)丟失問題,所 以本發(fā)明采用如上述的將離散的元數(shù)據(jù)和緩存數(shù)據(jù)一起寫入緩存存儲(chǔ)介質(zhì)35 中,在系統(tǒng)異常后的下一次啟動(dòng)的時(shí)候,掃描所有離散的元數(shù)據(jù),通過這些離 散的元數(shù)據(jù),重新構(gòu)建該緩存裝置的元數(shù)據(jù),重新獲得緩存裝置上的數(shù)據(jù)和其 存儲(chǔ)節(jié)點(diǎn)上的磁盤位置的對(duì)應(yīng)關(guān)系。圖5表示出索引表的結(jié)構(gòu)圖。所述索引表的存儲(chǔ)位置是在緩存裝置的內(nèi)存 中,是用來快速搜索元數(shù)據(jù)的索引信息。索引表采用鏈?zhǔn)焦?HASH),哈希 函數(shù)使用最簡單的直接映射方式,沖突的塊信息以鏈表的形式掛入哈希表。直 接映射的方式是通過磁盤塊號(hào)的低14位來查找哈希表。如果發(fā)生哈希沖突, 既低14位一致,則根據(jù)磁盤塊號(hào)來判斷該數(shù)據(jù)塊是否在緩存存儲(chǔ)介質(zhì)中命中。 整個(gè)索引表的大小可根據(jù)緩存裝置的內(nèi)存空間緊張情況調(diào)整,如果緩存裝置的 內(nèi)存比較小的情況下,需要把索引表的長度修改小,但是造成哈希沖突的概率 也與之上升,如果內(nèi)存比較大的情況下,索引表的長度可以增長,可以解決哈 希沖突過多造成的緩存裝置的性能下降。緩存處理模塊42,用于向內(nèi)存管理模塊43和臟數(shù)據(jù)寫回模塊45提供管 理信息,并根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求處理緩存存儲(chǔ)介質(zhì)36中緩存數(shù)據(jù)的 緩存關(guān)系。內(nèi)存管理模塊43,與所述緩存處理模塊42連接,用于管理內(nèi)存32中的 數(shù)據(jù)。雖然內(nèi)存32的存儲(chǔ)空間相對(duì)于緩存存儲(chǔ)介質(zhì)35的存儲(chǔ)空間不大,但是 可以結(jié)合硬件抽象層一起屏蔽底層硬件信息以及減少不必要的硬件損耗,節(jié)省 硬件存取時(shí)間、發(fā)揮硬件優(yōu)勢(shì)。硬件抽象層模塊44,用于采用異步硬件操作方法為內(nèi)存管理模塊43和臟 數(shù)據(jù)寫回模塊45提供硬件操作接口,如讀寫接口,擦除接口等。硬件抽象層 模塊45按照不同的緩存存儲(chǔ)介質(zhì),把其共性抽象出來,針對(duì)不同的存儲(chǔ)介質(zhì)采用相應(yīng)的處理方式,方便硬件移植工作。作為一種實(shí)施方式,如對(duì)NAND FLASH 類硬件,主要為內(nèi)存管理模塊43和臟數(shù)據(jù)寫回模塊45提供異步的硬件操作接 口。硬件抽象層的硬件操作包括讀寫NAND FLASH、擦除NAND FLASH、對(duì)設(shè)備 各種狀態(tài)的檢測(cè)(如一些完成標(biāo)志等)、對(duì)數(shù)據(jù)的校驗(yàn)結(jié)果進(jìn)行核實(shí)(數(shù)據(jù)的 正確性)、對(duì)有問題的數(shù)據(jù)完成糾錯(cuò),還包括廠商信息讀取命令。 所述異步操作的方法包括如下步驟步驟A,硬件抽象層模塊44接到所述內(nèi)存管理模塊43和所述臟數(shù)據(jù)寫回 模塊45用命令隊(duì)列的方式發(fā)送的讀寫命令;步驟B,硬件抽象層模塊44分析所述讀寫命令,計(jì)算讀寫的起始地址和 結(jié)束地址,分析寫命令的操作范圍,判斷該操作范圍內(nèi)是否發(fā)生擦除操作,根 據(jù)判斷結(jié)果生成新的命令隊(duì)列;具體來說,有些命令需要在硬件抽象層中分解 成多個(gè)命令,例如如果發(fā)生寫NAND FLASH的操作,并且要寫的區(qū)域已經(jīng)被寫 過了,這樣要引發(fā)一次讀取和擦除操作,既一個(gè)寫命令分解成多個(gè)命令即讀取、 擦除和寫。步驟C,硬件抽象層模塊44將分析后的讀寫命令以中斷處理方式發(fā)送給 緩存存儲(chǔ)介質(zhì)35。讀取和寫入的操作采用中斷的方式。既操作是否完成是以 中斷信號(hào)的方式通知給緩存設(shè)備的處理器。上述異步操作方法的優(yōu)點(diǎn)在于內(nèi)存管理模塊43和臟數(shù)據(jù)寫回模塊45 在發(fā)送命令以后,緩存裝置30的處理單元33不需要在原地查詢,處理單元還 可以繼續(xù)處理其他事務(wù),如在操作NAND FLASH的同時(shí),處理單元仍能進(jìn)行緩 存處理和網(wǎng)絡(luò)上的數(shù)據(jù),達(dá)到一種并行處理的效果,從而提高緩存裝置的性能。需要注意的是,如果發(fā)生寫NAND FLASH的操作,因?yàn)橛布橄髮幽K44 的寫操作的數(shù)據(jù)是在內(nèi)存32中,也就是說是從內(nèi)存32寫入緩存介質(zhì)35中, 這可能會(huì)涉及到在寫入之前要先將緩存存儲(chǔ)介質(zhì)35中的原數(shù)據(jù)擦除,在重新 寫入以前如果異常斷電則會(huì)造成數(shù)據(jù)丟失的問題,即新的數(shù)據(jù)在內(nèi)存32中會(huì) 丟失,舊的數(shù)據(jù)又被擦除,這樣會(huì)造成數(shù)據(jù)不完整。為解決上述問題,本發(fā)明在緩存存儲(chǔ)介質(zhì)35上提供一個(gè)備用區(qū),寫入數(shù) 據(jù)的時(shí)候先將數(shù)據(jù)寫入備用區(qū),如果在這個(gè)過程中沒有異常斷電和死機(jī)的情 況,則寫完以后修改該數(shù)據(jù)的元數(shù)據(jù),最后把原來要寫的區(qū)域擦掉再寫入新的 數(shù)據(jù)。這樣做的好處是即使斷電或死機(jī),要寫的區(qū)域的數(shù)據(jù)也沒有被先擦掉,數(shù)據(jù)還是可以還原以前的舊數(shù)據(jù),數(shù)據(jù)不會(huì)丟失和出錯(cuò)。同時(shí)解決了緩存存儲(chǔ) 介質(zhì)的磨損平衡的問題。臟數(shù)據(jù)寫回模塊45,與所述緩存處理模塊42連接,用于從緩存處理模塊42獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的臟數(shù)據(jù)寫回到遠(yuǎn)程的存儲(chǔ)節(jié)點(diǎn)中。圖3中粗實(shí)心箭頭方向即數(shù)據(jù)流向的方向;細(xì)箭頭方向即調(diào)用關(guān)系。計(jì)算 節(jié)點(diǎn)的讀或?qū)懻?qǐng)求的數(shù)據(jù)可能分布在三個(gè)層次中(a) 緩存裝置30的內(nèi)存32中;(b) 緩存裝置30的非易失性的緩存存儲(chǔ)介質(zhì)35中,作為一種實(shí)施方式, 該緩存存儲(chǔ)介質(zhì)35采用與非型閃存(NAND FLASH);(c) 存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)介質(zhì)中。進(jìn)一步地,所述處理單元33還包括網(wǎng)絡(luò)協(xié)議模塊46,與內(nèi)存管理模塊 43、所述硬件抽象層模塊44連接,用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊進(jìn)行處 理。該網(wǎng)絡(luò)協(xié)議模塊46是對(duì)TCP/IP協(xié)議的優(yōu)化,以減少網(wǎng)絡(luò)的輸入/輸出(I/O) 次數(shù)。如圖6所示,作為一個(gè)實(shí)施方式,對(duì)于計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)塊的處理方 法為步驟SIO,對(duì)數(shù)據(jù)塊按照存儲(chǔ)位置進(jìn)行如下分類處理;(1) 緩存未命中的數(shù)據(jù)塊,通過網(wǎng)絡(luò)讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)。對(duì)于存儲(chǔ) 節(jié)點(diǎn)來說,其存儲(chǔ)介質(zhì)一般是磁盤介質(zhì),因?yàn)檎?qǐng)求的次數(shù)的開銷和請(qǐng)求的數(shù)據(jù) 量會(huì)對(duì)整個(gè)系統(tǒng)的性能有比較大的影響,所以希望通過網(wǎng)絡(luò)讀取存儲(chǔ)節(jié)點(diǎn)上的 數(shù)據(jù)的長度最少而且盡量保證網(wǎng)絡(luò)讀取的次數(shù)最少,因此,圖6中需要從網(wǎng)絡(luò) 讀取的區(qū)域是從標(biāo)號(hào)4一9的數(shù)據(jù)塊。(2) 緩存命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是 在需要從網(wǎng)絡(luò)讀取的數(shù)據(jù)區(qū)域外,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊,如數(shù)據(jù)塊3;所述數(shù)據(jù)區(qū)域是由連續(xù)的數(shù)據(jù)塊構(gòu)成;(3) 緩存命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是 在需要從網(wǎng)絡(luò)讀取的數(shù)據(jù)區(qū)域內(nèi),則通過網(wǎng)絡(luò)讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù);具體來 說,如果數(shù)據(jù)塊在需要從網(wǎng)絡(luò)讀取的數(shù)據(jù)區(qū)域內(nèi),則不從緩存存儲(chǔ)介質(zhì)讀取該 數(shù)據(jù),而從網(wǎng)絡(luò)讀取存儲(chǔ)服務(wù)器上的數(shù)據(jù),因?yàn)橥ㄟ^網(wǎng)絡(luò)讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù) 據(jù)塊也是一樣的,這樣計(jì)算讀網(wǎng)絡(luò)上數(shù)據(jù)的開銷小于讀緩存存儲(chǔ)介質(zhì)上的數(shù) 據(jù),所以不讀緩存存儲(chǔ)介質(zhì),如圖6中的數(shù)據(jù)塊6。(3) 緩存命中且臟的數(shù)據(jù),需要讀取緩存存儲(chǔ)介質(zhì),如圖6中數(shù)據(jù)塊1、5、 10。(4) 內(nèi)存命中的數(shù)據(jù)塊,不需要從緩存或是網(wǎng)絡(luò)上讀取,但是為了下一 步驟的數(shù)據(jù)塊合并,記錄該數(shù)據(jù)塊在內(nèi)存32中的位置,。步驟S20,對(duì)分類處理的數(shù)據(jù)塊按照各自的方式處理后,在內(nèi)存32中合 并數(shù)據(jù)塊并提交給計(jì)算節(jié)點(diǎn)。這樣做的一個(gè)優(yōu)點(diǎn)是通過網(wǎng)絡(luò)讀取存儲(chǔ)節(jié)點(diǎn)上的 數(shù)據(jù)和通過緩存存儲(chǔ)介質(zhì)35讀取數(shù)據(jù)可以同時(shí)進(jìn)行,如從存儲(chǔ)節(jié)點(diǎn)讀取數(shù)據(jù) 塊4到9的同時(shí)可以進(jìn)行從緩存存儲(chǔ)介質(zhì)35讀取數(shù)據(jù)塊5。在所述緩存處理模塊42中,對(duì)數(shù)據(jù)進(jìn)行緩存分為物理緩存和邏輯緩存, 緩存數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)35中的位置信息都通過鏈表的形式保存。物理緩存 指實(shí)際存在在所述緩存存儲(chǔ)介質(zhì)35的存儲(chǔ)空間中,需要有緩存數(shù)據(jù)的位圖的 描述信息,位圖表示的最小單位是訪問的最小單位,包括該數(shù)據(jù)是否有效(如 沒有寫過的數(shù)據(jù)區(qū)的數(shù)據(jù)是無效的)和是否臟等信息,所述臟數(shù)據(jù)是指存儲(chǔ)在 緩存存儲(chǔ)介質(zhì)35或內(nèi)存32中的新的數(shù)據(jù),而與該數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)中的數(shù) 據(jù)是舊的。所述邏輯緩存沒有對(duì)應(yīng)緩存存儲(chǔ)介質(zhì)35的存儲(chǔ)空間,實(shí)質(zhì)上是為 了保存緩存關(guān)系的歷史記錄,需要管理的信息包括一些鏈表控制信息,狀態(tài), 以及映射的磁盤塊號(hào)。為了達(dá)到本發(fā)明的目的,如圖2所示,本發(fā)明還提供一種動(dòng)態(tài)綁定計(jì)算節(jié) 點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),包括通過網(wǎng)絡(luò)連接的多個(gè)計(jì)算節(jié)點(diǎn),圖2中所 示計(jì)算節(jié)點(diǎn)11至19,和至少一個(gè)存儲(chǔ)節(jié)點(diǎn),圖2中所示第一至第三存儲(chǔ)節(jié)點(diǎn); 還包括緩存裝置30,所述計(jì)算節(jié)點(diǎn)與所述緩存裝置30連接并通過所述緩存裝 置30連接到網(wǎng)絡(luò)上的所述存儲(chǔ)節(jié)點(diǎn),下面對(duì)各部分進(jìn)行詳細(xì)描述所述緩存裝置30包括網(wǎng)絡(luò)接口31,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn);內(nèi)存32,與所述網(wǎng)絡(luò)接口31連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù); 計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34,與所述內(nèi)存32連接,用于通過接口將計(jì) 算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求并提交給處理單元33,并用于與緩存存儲(chǔ) 介質(zhì)35傳輸數(shù)據(jù)。優(yōu)選地,所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程 門陣列處理單元。處理單元33,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊34、所述網(wǎng)絡(luò)接口 31和所述內(nèi)存32連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì)35,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單元確定的緩存關(guān)系緩存數(shù)據(jù)。計(jì)算節(jié)點(diǎn),又稱為客戶機(jī),其本地沒有任何存儲(chǔ)節(jié)點(diǎn),客戶機(jī)和存儲(chǔ)節(jié)點(diǎn) 之間存在動(dòng)態(tài)綁定的關(guān)系。所述動(dòng)態(tài)綁定是指計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系可能改變, 一種改變方式例如,用戶在一個(gè)時(shí)間使用的是windows xp的系統(tǒng), 在另一個(gè)時(shí)間使用是linux系統(tǒng),而windows xp系統(tǒng)在第一存儲(chǔ)服務(wù)器,linux 系統(tǒng)在第二存儲(chǔ)服務(wù)器中,這樣,計(jì)算節(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系就發(fā)生改變。 另外一種改變方式是,用戶使用的計(jì)算節(jié)點(diǎn)變?yōu)榱硪粋€(gè)計(jì)算節(jié)點(diǎn),這樣計(jì)算節(jié) 點(diǎn)與存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系也會(huì)發(fā)生改變。存儲(chǔ)節(jié)點(diǎn),它是在集中的物理存儲(chǔ)節(jié)點(diǎn)虛擬多個(gè)磁盤供用戶使用; 網(wǎng)絡(luò),作為一種可實(shí)施方式,所述計(jì)算節(jié)點(diǎn)和所述存儲(chǔ)節(jié)點(diǎn)之間的網(wǎng)絡(luò)連 接采用以太網(wǎng)。以太網(wǎng)不僅性能穩(wěn)定,而且部署以太網(wǎng)的價(jià)格也比較低廉,因 此使用以太網(wǎng)技術(shù)不僅能獲得最大性價(jià)比,而且能獲得較廣泛的兼容性。同樣, TCP/IP協(xié)議是Internet標(biāo)準(zhǔn)協(xié)議,使得緩存系統(tǒng)能獲取最廣泛的兼容性和支 持,此外由于TCP/IP成熟且提供簡單統(tǒng)一的編程接口支持,這有利于系統(tǒng)程 序的迅速開發(fā)和可移植。較佳地,所述處理單元33包括緩存信息管理模塊41,與緩存處理模塊42連接,用于管理所述緩存存儲(chǔ) 介質(zhì)35中的緩存數(shù)據(jù)的元數(shù)據(jù),搜索所述元數(shù)據(jù)的索引信息的索引表;緩存處理模塊42,用于向內(nèi)存管理模塊43和臟數(shù)據(jù)寫回模塊45提供管 理信息,并根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求,處理緩存存儲(chǔ)介質(zhì)35中緩存數(shù)據(jù) 的緩存關(guān)系;內(nèi)存管理模塊43,用于管理內(nèi)存32中的數(shù)據(jù);硬件抽象層模塊44,用于為內(nèi)存管理模塊43和臟數(shù)據(jù)寫回模塊45提供 硬件操作接口;優(yōu)選地,所述硬件抽象層模塊采用異歩硬件操作方法為內(nèi)存管 理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接口 。臟數(shù)據(jù)寫回模塊45,用于從所述緩存處理模塊42獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的臟數(shù)據(jù)寫回到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)中。較佳地,所述處理單元還包括網(wǎng)絡(luò)協(xié)議模塊,與所述內(nèi)存管理模塊連接,用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊進(jìn)行處理。較佳地,所述元數(shù)據(jù)存儲(chǔ)在所述緩存存儲(chǔ)介質(zhì)的預(yù)定的集中存儲(chǔ)區(qū)域。 較佳地,所述元數(shù)據(jù)還保存在所述緩存存儲(chǔ)介質(zhì)的與當(dāng)前緩存數(shù)據(jù)塊相關(guān)的冗余區(qū)。為了達(dá)到本發(fā)明的目的,本發(fā)明還提供一種數(shù)據(jù)緩存方法,用于動(dòng)態(tài)綁定 計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)中,所述計(jì)算節(jié)點(diǎn)通過用于緩存數(shù)據(jù)的緩存裝置連 接到網(wǎng)絡(luò)上的所述存儲(chǔ)節(jié)點(diǎn)。該方法包括如下步驟步驟Sl,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,計(jì)算讀的起始扇區(qū)和長度,分別按 照請(qǐng)求的數(shù)據(jù)塊的存儲(chǔ)位置進(jìn)行處理,在內(nèi)存中將數(shù)據(jù)塊處理后提供給計(jì)算節(jié) 點(diǎn),并處理數(shù)據(jù)的緩存關(guān)系;歩驟S2,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出寫請(qǐng)求后,計(jì)算讀的起始扇區(qū)和長度,通過處 理數(shù)據(jù)的緩存關(guān)系確定在緩存存儲(chǔ)介質(zhì)上需要被替換出去的數(shù)據(jù)并將該數(shù)據(jù) 寫回到存儲(chǔ)節(jié)點(diǎn)上,確定寫請(qǐng)求的相關(guān)數(shù)據(jù)中需要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù) 塊,并將該數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)。較佳地,所述步驟S2中還包括在將緩存數(shù)據(jù)寫入所述緩存存儲(chǔ)介質(zhì)時(shí),先將該數(shù)據(jù)寫入緩存存儲(chǔ)介質(zhì)中設(shè)定的備用區(qū),然后修改該數(shù)據(jù)的元數(shù)據(jù),最 后把被替換的區(qū)域中的舊數(shù)據(jù)擦掉并寫入新數(shù)據(jù)。較佳地,所述步驟S2中還包括當(dāng)有數(shù)據(jù)塊需要寫入緩存存儲(chǔ)介質(zhì)時(shí),通過元數(shù)據(jù)的擦寫位圖判斷是否要對(duì)緩存存儲(chǔ)介質(zhì)中的寫入位置進(jìn)行擦除操 作,如果需要擦除操作,則先把需要擦除操作的位置的數(shù)據(jù)讀到內(nèi)存中,之后 在內(nèi)存中根據(jù)要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù)塊修改數(shù)據(jù)后一起寫入緩存存儲(chǔ)介 質(zhì)。較佳地,步驟S1具體包括步驟SlOl,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,對(duì)請(qǐng)求的數(shù)據(jù)塊按照存儲(chǔ)位置進(jìn) 行如下分類處理內(nèi)存命中的數(shù)據(jù)塊,則記錄該數(shù)據(jù)塊在內(nèi)存中的位置,且如果內(nèi)存中命中 的數(shù)據(jù)也存儲(chǔ)在緩存存儲(chǔ)介質(zhì)或存儲(chǔ)節(jié)點(diǎn)上,則僅處理內(nèi)存中的數(shù)據(jù)塊; 緩存存儲(chǔ)介質(zhì)未命中的數(shù)據(jù)塊,則讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊。緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置 是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域外,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊;緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置 是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域內(nèi),則通過讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊;緩存命中且臟的數(shù)據(jù)塊,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊;所述數(shù)據(jù)區(qū)域是由連續(xù)的數(shù)據(jù)塊構(gòu)成;步驟S102,對(duì)按照步驟SIOI分類處理的數(shù)據(jù)塊處理后,在內(nèi)存中合并數(shù) 據(jù)塊并提交給計(jì)算節(jié)點(diǎn)。較佳地,步驟Sl和步驟S2中所述處理數(shù)據(jù)的緩存關(guān)系包括如下步驟如果讀請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則數(shù)據(jù)塊在第一物理緩存鏈表隊(duì)列中的對(duì)應(yīng)位置不改變;如果同時(shí)命中 內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊移到第二物理緩存鏈表隊(duì)列的隊(duì)首;所述第 一物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中一次的緩存數(shù)據(jù)在緩存介質(zhì)中 的位置;所述第二物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中至少兩次的緩存 數(shù)據(jù)在緩存介質(zhì)中的位置;如果寫請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則將該數(shù)據(jù)塊對(duì)應(yīng)的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首;如果同時(shí) 命中內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊對(duì)應(yīng)的位置移到第二物理緩存鏈表隊(duì)列 的隊(duì)首;如果讀或?qū)懻?qǐng)求命中第二物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,則把這個(gè)數(shù)據(jù)塊對(duì) 應(yīng)的位置移到第二物理緩存鏈表隊(duì)列的隊(duì)首;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第一邏輯緩存鏈表隊(duì)列對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第一修 改方法修改用于調(diào)整第一物理緩存鏈表與第二物理緩存鏈表的隊(duì)列長度的調(diào) 整因子P,執(zhí)行第一替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊在第-邏輯緩存鏈 表的對(duì)應(yīng)位置移到第二物理緩存鏈表的隊(duì)首位置;如果沒有命中內(nèi)部的對(duì)應(yīng)扇 區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第一替換操作,把該數(shù)據(jù)塊的位置移到第一物理緩存 鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子P值不改變;對(duì)于讀請(qǐng)求,數(shù)據(jù)塊在第一邏輯 緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不改變;其中,所述第一邏輯緩存鏈表用來描述從第一物理緩存鏈表中被替換出去的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置信息,第二邏輯緩存鏈表用來描述從第二物理 緩存鏈表中被替換出去的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置;用于修改調(diào)整因子P 值的所述第一修改方法是選取P+S和緩存存儲(chǔ)介質(zhì)的物理緩存容量中的最小 值,其中S的取值是當(dāng)所述第一邏輯緩存鏈表的隊(duì)列長度大于或等于所述 第二邏輯緩存鏈表的隊(duì)列長度時(shí),S等于l;否則5等于所述第二邏輯緩存 鏈表的隊(duì)列長度除以所述第一邏輯緩存鏈表的隊(duì)列長度;所述第一替換操作 為如果滿足第一條件所述第一物理緩存鏈表的隊(duì)列長度大于O并且大于所 述調(diào)整因子P值,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈表的隊(duì)尾 位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈表的隊(duì)首 的位置;如果不滿足所述第一條件,則刪除第二物理緩存鏈表的隊(duì)尾位置,將 其移到第二邏輯緩存鏈表的隊(duì)首位置;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第二邏輯緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第二修改方 法修改所述調(diào)整因子P,執(zhí)行第二替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊的對(duì) 應(yīng)信息從第二邏輯緩存鏈表對(duì)應(yīng)的位置移到第二物理緩存鏈表的隊(duì)首位置;如 果沒有命中內(nèi)部的對(duì)應(yīng)扇區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第二替換操作,把該數(shù)據(jù)塊 的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子P值不改變,對(duì)于讀 請(qǐng)求,數(shù)據(jù)塊在第二邏輯緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不 改變;其中,用于修改調(diào)整因子P值的所述第二修改方法是選取P-S和緩存存 儲(chǔ)介質(zhì)的物理緩存容量中的最小值,其中S的取值是當(dāng)所述第二邏輯緩存 鏈表的隊(duì)列長度大于或等于所述第一邏輯緩存鏈表的隊(duì)列長度的時(shí),5等于 l;否則S等于所述第一邏輯緩存鏈表的隊(duì)列長度除以所述第二邏輯緩存鏈表 的隊(duì)列長度;所述第二替換操作為如果滿足第一條件所述第一物理緩存鏈 表的隊(duì)列長度大于O并且大于所述調(diào)整因子p值,或滿足第二條件所述第一物理緩存鏈表的隊(duì)列長度大于O,并且等于所述調(diào)整因子p值,同時(shí)讀或?qū)懻?qǐng)求命中第二邏輯緩存鏈表,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈 表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈 表的隊(duì)首的位置;如果不滿足所述第一條件和第二條件,則刪除第二物理緩存 鏈表的隊(duì)尾位置,將其移到第二邏輯緩存鏈表的隊(duì)首位置。如果讀或?qū)懻?qǐng)求沒有命中所述第一物理緩存鏈表、第二物理緩存鏈表、第 一邏輯緩存鏈表和第二邏輯緩存鏈表,則按照以下兩種情況處理當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度等于 物理緩存的容量時(shí),如果第一物理緩存鏈表的隊(duì)列長度小于物理緩存的容量, 則刪除第一邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù),執(zhí)行所述第一替換操作,然 后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其位置信息放在第一物理緩存鏈表 隊(duì)列的隊(duì)首;如果第一物理緩存鏈表的隊(duì)列長度不小于物理緩存的容量,則刪 除第一物理緩存鏈表隊(duì)列的隊(duì)尾位置的數(shù)據(jù)并將請(qǐng)求的數(shù)據(jù)塊放入緩存存儲(chǔ) 介質(zhì)并將其放在第一物理緩存鏈表隊(duì)列的隊(duì)首;當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度小于 物理緩存的容量時(shí),則刪除第二邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊位置信息;進(jìn)一步判斷如果所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩 存鏈表和第二邏輯緩存鏈表的隊(duì)列長度總和等于兩倍的物理緩存容量,執(zhí)行所 述第一替換操作,然后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其數(shù)據(jù)塊對(duì)應(yīng)的 位置信息放在第一物理緩存鏈表隊(duì)列的隊(duì)首。所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩存鏈表和第二邏 輯緩存鏈表的隊(duì)列長度在初始化時(shí)設(shè)為零。本發(fā)明提供的處理數(shù)據(jù)的緩存關(guān)系的方法產(chǎn)生的有益效果是由于緩存介質(zhì)的存儲(chǔ)粒度是128K字節(jié),而計(jì)算節(jié)點(diǎn)訪問的最小粒度是512字節(jié),既l個(gè) 扇區(qū),針對(duì)緩存存儲(chǔ)介質(zhì)128K的數(shù)據(jù)塊,存在命中128K字節(jié)對(duì)應(yīng)的數(shù)據(jù)塊, 但是沒有命中512字節(jié)的區(qū)域,由于兩部分粒度有差別,所以基于這種情況, 本發(fā)明對(duì)命中情況作了細(xì)分,產(chǎn)生的有益效果是克服掃描和低局部性的訪問 模式造成的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)性能下降,并可以自適應(yīng)功能,針對(duì)不同的緩存存儲(chǔ) 介質(zhì),本發(fā)明的控制粒度是固定的,NAND FLASH的存儲(chǔ)粒度是128K字節(jié),而 客戶機(jī)I/0的粒度也是固定的,以扇區(qū)(512字節(jié))為單位,這種方法切合替 換粒度大于真正訪問粒度的這種情況,減小了算法的失真,提高了緩存的命中 率。較佳地,為了解決非正常關(guān)機(jī)和綁定關(guān)系發(fā)生變化產(chǎn)生的數(shù)據(jù)不完整問 題,上述數(shù)據(jù)緩存方法還包括如下步驟歩驟S3,在計(jì)算節(jié)點(diǎn)啟動(dòng)時(shí),啟動(dòng)并判斷上次關(guān)機(jī)是否是正常關(guān)機(jī),如果上次是非正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)掃描存儲(chǔ)在與緩存數(shù)據(jù)相關(guān)的冗余區(qū)內(nèi)的元 數(shù)據(jù),重新構(gòu)建緩存數(shù)據(jù)的元數(shù)據(jù);如果是正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)讀取緩存數(shù) 據(jù)的元數(shù)據(jù);步驟S4,判斷計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的綁定關(guān)系是否發(fā)生改變,如果綁定 關(guān)系沒有發(fā)生改變,則繼續(xù)啟動(dòng)并完成初始化,等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求;如果綁定關(guān)系發(fā)生改變,則把臟數(shù)據(jù)按照上次的綁定關(guān)系寫回到存儲(chǔ)節(jié)點(diǎn),然 后等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求,并按本次綁定關(guān)系進(jìn)行使用。步驟S4中所述初始化包括對(duì)緩存數(shù)據(jù)的元數(shù)據(jù)進(jìn)行初始化和對(duì)用于搜索所述元數(shù)據(jù)的索弓I信息的索引表初始化。與現(xiàn)有技術(shù)相比,本發(fā)明能夠產(chǎn)生如下有益效果本發(fā)明能夠減少計(jì)算節(jié)點(diǎn)對(duì)通過網(wǎng)絡(luò)訪問存儲(chǔ)節(jié)點(diǎn)的依賴性,減少網(wǎng)絡(luò)負(fù) 載,同時(shí)可以減少整個(gè)系統(tǒng)在一定時(shí)刻的網(wǎng)絡(luò)負(fù)載壓力;并在多個(gè)計(jì)算節(jié)點(diǎn)在一定時(shí)刻出現(xiàn)并發(fā)訪問的情況下,減少對(duì)存儲(chǔ)節(jié)點(diǎn)的訪問次數(shù)。本發(fā)明的緩存方法使得緩存的命中率提高。在存儲(chǔ)節(jié)點(diǎn)的訪問次數(shù)比較多 時(shí),讀寫存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)性能差于讀寫緩存裝置的性能,因此從單個(gè)計(jì)算節(jié)點(diǎn)的訪問性能上看,訪問效率也獲得比較好的提高。如圖8所示,測(cè)試使用多 個(gè)計(jì)算節(jié)點(diǎn)模擬windows的讀寫過程,其中,本發(fā)明的帶有緩存裝置的網(wǎng)絡(luò)存 儲(chǔ)系統(tǒng)的測(cè)試數(shù)據(jù)點(diǎn)用方塊標(biāo)記,而現(xiàn)有的沒有緩存裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的測(cè) 試數(shù)據(jù)點(diǎn)用圓形塊標(biāo)記??梢悦黠@的看出,加入緩存裝置后,單點(diǎn)的平均性能 有了比較好的提升。隨著計(jì)算節(jié)點(diǎn)的數(shù)目增多,對(duì)存儲(chǔ)節(jié)點(diǎn)的壓力增長不快。本發(fā)明在動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中采用緩存裝置 和緩存方法,不僅能夠提高網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)性能,而且降低了整個(gè)存儲(chǔ)系統(tǒng)的成 本。例如對(duì)于現(xiàn)有的系統(tǒng), 一臺(tái)存儲(chǔ)節(jié)點(diǎn)可能承受40個(gè)計(jì)算節(jié)點(diǎn)的讀寫壓力, 通過在計(jì)算節(jié)點(diǎn)端加入緩存裝置, 一臺(tái)存儲(chǔ)服務(wù)器可以承受65個(gè)計(jì)算節(jié)點(diǎn)。 這樣,如果對(duì)于195個(gè)計(jì)算節(jié)點(diǎn)現(xiàn)在需要3臺(tái)存儲(chǔ)服務(wù)器,那么以前的情況, 需要195/40 = 4.8臺(tái)存儲(chǔ)服務(wù)器。對(duì)于更大規(guī)模的使用情況,達(dá)到相同的系 統(tǒng)性能,整個(gè)系統(tǒng)的成本會(huì)下降很多。以上所述內(nèi)容,僅為本發(fā)明具體的實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局 限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易 想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1、一種數(shù)據(jù)緩存裝置,用于動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,其特征在于,包括網(wǎng)絡(luò)接口,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn);內(nèi)存,與所述網(wǎng)絡(luò)接口連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù);計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊,與所述內(nèi)存連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元,并用于與緩存存儲(chǔ)介質(zhì)傳輸數(shù)據(jù);處理單元,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊、所述網(wǎng)絡(luò)接口和所述內(nèi)存連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì),與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單元確定的緩存關(guān)系緩存數(shù)據(jù)。
2、 根據(jù)權(quán)利要求1所述的緩存裝置,其特征在于,所述網(wǎng)絡(luò)接口包括媒 體訪問控制子層協(xié)議控制器和物理接口收發(fā)器。
3、 根據(jù)權(quán)利要求1所述的緩存裝置,其特征在于,所述接口為集成驅(qū)動(dòng)電子設(shè)備接口或串行傳輸技術(shù)硬盤接口。
4、 根據(jù)權(quán)利要求1所述的緩存裝置,其特征在于,所述計(jì)算節(jié)點(diǎn)接口協(xié) 議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程門陣列處理單元。
5、 根據(jù)權(quán)利要求1所述的緩存裝置,其特征在于,所述處理單元包括處 理器和用于存儲(chǔ)控制程序的存儲(chǔ)固件。
6、 根據(jù)權(quán)利要求1所述的緩存裝置,其特征在于,所述處理單元包括緩存信息管理模塊,與緩存處理模塊連接,用于管理所述緩存存儲(chǔ)介質(zhì)中 的緩存數(shù)據(jù)的元數(shù)據(jù),搜索所述元數(shù)據(jù)的索引信息的索引表;緩存處理模塊,用于向內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供管理信息,并 根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求,處理緩存存儲(chǔ)介質(zhì)中緩存數(shù)據(jù)的緩存關(guān)系;內(nèi)存管理模塊,用于管理內(nèi)存中的數(shù)據(jù);硬件抽象層模塊,用于為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接 臟數(shù)據(jù)寫回模塊,用于從所述緩存處理模塊獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的臟數(shù)據(jù)寫回到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)中。
7、 根據(jù)權(quán)利要求6所述的緩存裝置,其特征在于,所述元數(shù)據(jù)存儲(chǔ)在所 述緩存存儲(chǔ)介質(zhì)的預(yù)定的集中存儲(chǔ)區(qū)域。
8、 根據(jù)權(quán)利要求7所述的緩存裝置,其特征在于,所述元數(shù)據(jù)還保存在所述緩存存儲(chǔ)介質(zhì)的與當(dāng)前緩存數(shù)據(jù)塊相關(guān)的冗余區(qū)。
9、 根據(jù)權(quán)利要求6所述的緩存裝置,其特征在于,所述索引表采用鏈?zhǔn)?哈希表,哈希函數(shù)使用直接映射方式。
10、 根據(jù)權(quán)利要求6所述的緩存裝置,其特征在于,所述硬件抽象層模塊 采用異歩硬件操作方法為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接口。
11、 根據(jù)權(quán)利要求6所述的緩存裝置,其特征在于,所述處理單元還包括 網(wǎng)絡(luò)協(xié)議模塊,與所述內(nèi)存管理模塊連接,用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊 進(jìn)行處理。
12、 一種動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),包括通過網(wǎng)絡(luò)連接的多個(gè)計(jì)算節(jié)點(diǎn)和至少一個(gè)存儲(chǔ)節(jié)點(diǎn),其特征在于,還包括緩存裝置,所述 計(jì)算節(jié)點(diǎn)與所述緩存裝置連接并通過所述緩存裝置連接到網(wǎng)絡(luò)上的所述存儲(chǔ)節(jié)點(diǎn),所述緩存裝置包括網(wǎng)絡(luò)接口,用于連接到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn);內(nèi)存,與所述網(wǎng)絡(luò)接口連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)-,計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊,與所述內(nèi)存連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元,并用于與緩存存儲(chǔ)介質(zhì)傳輸數(shù)據(jù);處理單元,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊、所述網(wǎng)絡(luò)接口和所述內(nèi)存 連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì),與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單 元確定的緩存關(guān)系緩存數(shù)據(jù)。
13、 根據(jù)權(quán)利要求12所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng),其特征在于,所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊包括現(xiàn)場(chǎng)可編程門陣列處理 單元。
14、 根據(jù)權(quán)利要求12所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng),其特征在于,所述處理單元包括緩存信息管理模塊,與緩存處理模塊連接,用于管理所述緩存存儲(chǔ)介質(zhì)中 的緩存數(shù)據(jù)的元數(shù)據(jù),搜索所述元數(shù)據(jù)的索引信息的索引表;緩存處理模塊,用于向內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供管理信息,并 根據(jù)來自計(jì)算節(jié)點(diǎn)的讀寫請(qǐng)求,處理緩存存儲(chǔ)介質(zhì)中緩存數(shù)據(jù)的緩存關(guān)系;內(nèi)存管理模塊,用于管理內(nèi)存中的數(shù)據(jù);硬件抽象層模塊,用于為內(nèi)存管理模塊和臟數(shù)據(jù)寫回模塊提供硬件操作接臟數(shù)據(jù)寫回模塊,用于從所述緩存處理模塊獲得臟數(shù)據(jù)信息后,將對(duì)應(yīng)的 臟數(shù)據(jù)寫回到網(wǎng)絡(luò)中的所述存儲(chǔ)節(jié)點(diǎn)中。
15、 根據(jù)權(quán)利要求14所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng),其特征在于,所述元數(shù)據(jù)存儲(chǔ)在所述緩存存儲(chǔ)介質(zhì)的預(yù)定的集中存儲(chǔ)區(qū)域。
16、 根據(jù)權(quán)利要求14或15所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存 儲(chǔ)系統(tǒng),其特征在于,所述元數(shù)據(jù)還保存在所述緩存存儲(chǔ)介質(zhì)的與當(dāng)前緩存數(shù) 據(jù)塊相關(guān)的冗余區(qū)。
17、 根據(jù)權(quán)利要求14所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng),其特征在于,所述硬件抽象層模塊采用異歩硬件操作方法為內(nèi)存管理模塊 和臟數(shù)據(jù)寫回模塊提供硬件操作接口 。
18、 根據(jù)權(quán)利要求14所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),其特征在于,所述處理單元還包括網(wǎng)絡(luò)協(xié)議模塊,與所述內(nèi)存管理模塊 連接,用于按照不同的存儲(chǔ)位置對(duì)數(shù)據(jù)塊進(jìn)行處理。
19、 一種動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法, 包括如下步驟步驟Sl,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,分別按照請(qǐng)求的數(shù)據(jù)塊的存儲(chǔ)位置 進(jìn)行處理,在內(nèi)存中將數(shù)據(jù)塊處理后提供給計(jì)算節(jié)點(diǎn),并處理數(shù)據(jù)的緩存關(guān)系;步驟S2,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出寫請(qǐng)求后,通過處理數(shù)據(jù)的緩存關(guān)系確定在緩 存存儲(chǔ)介質(zhì)上需要被替換出去的數(shù)據(jù)并將該數(shù)據(jù)寫回到存儲(chǔ)節(jié)點(diǎn)上,確定寫請(qǐng) 求的相關(guān)數(shù)據(jù)中需要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù)塊,并將該數(shù)據(jù)塊寫入緩存存儲(chǔ) 介質(zhì)。
20、 根據(jù)權(quán)利要求19所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,所述步驟S2中還包括在將緩存數(shù)據(jù)寫入所述緩存存儲(chǔ)介質(zhì)時(shí),先將該數(shù)據(jù)寫入緩存存儲(chǔ)介質(zhì)中設(shè)定的備用區(qū),然后修 改該數(shù)據(jù)的元數(shù)據(jù),最后把被替換的區(qū)域中的舊數(shù)據(jù)擦掉并寫入新數(shù)據(jù)。
21、 根據(jù)權(quán)利要求19或20所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,所述步驟S2中還包括當(dāng)有數(shù)據(jù)塊需要寫入緩存存儲(chǔ)介質(zhì)時(shí),通過元數(shù)據(jù)的擦寫位圖判斷是否要對(duì)緩存存儲(chǔ)介質(zhì)中 的寫入位置進(jìn)行擦除操作,如果需要擦除操作,則先把需要擦除操作的位置的 數(shù)據(jù)讀到內(nèi)存中,之后在內(nèi)存中根據(jù)要寫入緩存存儲(chǔ)介質(zhì)的數(shù)據(jù)塊修改數(shù)據(jù)后 一起寫入緩存存儲(chǔ)介質(zhì)。
22、 根據(jù)權(quán)利要求19所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,步驟S1具體包括步驟SIO,當(dāng)計(jì)算節(jié)點(diǎn)發(fā)出讀請(qǐng)求后,對(duì)請(qǐng)求的數(shù)據(jù)塊按照存儲(chǔ)位置進(jìn)行如下分類處理內(nèi)存命中的數(shù)據(jù)塊,則記錄該數(shù)據(jù)塊在內(nèi)存中的位置,且如果內(nèi)存中命中的數(shù)據(jù)也存儲(chǔ)在緩存存儲(chǔ)介質(zhì)或存儲(chǔ)節(jié)點(diǎn)上,則僅處理內(nèi)存中的數(shù)據(jù)塊;緩存存儲(chǔ)介質(zhì)未命中的數(shù)據(jù)塊,則讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊。 緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域外,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊; 緩存存儲(chǔ)介質(zhì)命中且干凈的數(shù)據(jù)塊,并且該數(shù)據(jù)塊在讀請(qǐng)求數(shù)據(jù)中的位置是在需要從存儲(chǔ)節(jié)點(diǎn)讀取的數(shù)據(jù)區(qū)域內(nèi),則通過讀取存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)塊; 緩存命中且臟的數(shù)據(jù)塊,則從緩存存儲(chǔ)介質(zhì)中讀取該數(shù)據(jù)塊; 所述數(shù)據(jù)區(qū)域是由連續(xù)的數(shù)據(jù)塊構(gòu)成;步驟S20,對(duì)按照步驟S10分類處理的數(shù)據(jù)塊處理后,在內(nèi)存中合并數(shù)據(jù)塊并提交給計(jì)算節(jié)點(diǎn)。
23、 根據(jù)權(quán)利要求19所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系 統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,步驟S1和步驟S2中所述處理數(shù)據(jù)的緩存關(guān) 系包括如下歩驟如果讀請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則數(shù)據(jù)塊在第一物理緩存鏈表隊(duì)列中的對(duì)應(yīng)位置不改變;如果同時(shí)命中 內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊移到第二物理緩存鏈表隊(duì)列的隊(duì)首;所述第 一物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中一次的緩存數(shù)據(jù)在緩存介質(zhì)中的位置;所述第二物理緩存鏈表用來描述緩存存儲(chǔ)介質(zhì)中命中至少兩次的緩存 數(shù)據(jù)在緩存介質(zhì)中的位置;如果寫請(qǐng)求命中第一物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,但沒有命中內(nèi)部對(duì)應(yīng)的 扇區(qū),則將該數(shù)據(jù)塊對(duì)應(yīng)的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首;如果同時(shí) 命中內(nèi)部對(duì)應(yīng)的扇區(qū),則把這個(gè)數(shù)據(jù)塊對(duì)應(yīng)的位置移到第二物理緩存鏈表隊(duì)列 的隊(duì)首-,如果讀或?qū)懻?qǐng)求命中第二物理緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,則把這個(gè)數(shù)據(jù)塊對(duì) 應(yīng)的位置移到第二物理緩存鏈表隊(duì)列的隊(duì)首;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第一邏輯緩存鏈表隊(duì)列對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第一修 改方法修改用于調(diào)整第一物理緩存鏈表與第二物理緩存鏈表的隊(duì)列長度的調(diào) 整因子P,執(zhí)行第一替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊在第一邏輯緩存鏈 表的對(duì)應(yīng)位置移到第二物理緩存鏈表的隊(duì)首位置;如果沒有命中內(nèi)部的對(duì)應(yīng)扇 區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第一替換操作,把該數(shù)據(jù)塊的位置移到第一物理緩存 鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子P值不改變;對(duì)于讀請(qǐng)求,數(shù)據(jù)塊在第一邏輯 緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不改變;其中,所述第一邏輯緩存鏈表用來描述從第一物理緩存鏈表中被替換出去 的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置信息,第二邏輯緩存鏈表用來描述從第二物理 緩存鏈表中被替換出去的數(shù)據(jù)在緩存存儲(chǔ)介質(zhì)中的位置;用于修改調(diào)整因子P 值的所述第一修改方法是選取P+S和緩存存儲(chǔ)介質(zhì)的物理緩存容量中的最小 值,其中5的取值是當(dāng)所述第一邏輯緩存鏈表的隊(duì)列長度大于或等于所述 第二邏輯緩存鏈表的隊(duì)列長度時(shí),5等于l;否則S等于所述第二邏輯緩存 鏈表的隊(duì)列長度除以所述第一邏輯緩存鏈表的隊(duì)列長度;所述第一替換操作 為如果滿足第一條件所述第一物理緩存鏈表的隊(duì)列長度大于O并且大于所述調(diào)整因子p值,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈表的隊(duì)尾 位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈表的隊(duì)首的位置;如果不滿足所述第一條件,則刪除第二物理緩存鏈表的隊(duì)尾位置,將 其移到第二邏輯緩存鏈表的隊(duì)首位置;如果讀或?qū)懻?qǐng)求沒有命中第一物理緩存鏈表和第二物理緩存鏈表,但是命 中第二邏輯緩存鏈表對(duì)應(yīng)的數(shù)據(jù)塊,且命中內(nèi)部的對(duì)應(yīng)扇區(qū),則用第二修改方法修改所述調(diào)整因子P,執(zhí)行第二替換操作,然后將讀或?qū)懻?qǐng)求的數(shù)據(jù)塊的對(duì) 應(yīng)信息從第二邏輯緩存鏈表對(duì)應(yīng)的位置移到第二物理緩存鏈表的隊(duì)首位置;如 果沒有命中內(nèi)部的對(duì)應(yīng)扇區(qū),則對(duì)于寫請(qǐng)求,執(zhí)行第二替換操作,把該數(shù)據(jù)塊 的位置移到第一物理緩存鏈表隊(duì)列的隊(duì)首,所述調(diào)整因子p值不改變,對(duì)于讀 請(qǐng)求,數(shù)據(jù)塊在第二邏輯緩存鏈表隊(duì)列中的位置不變,所述調(diào)整因子P值也不 改變;其中,用于修改調(diào)整因子p值的所述第二修改方法是選取p-s和緩存存儲(chǔ)介質(zhì)的物理緩存容量中的最小值,其中5的取值是當(dāng)所述第二邏輯緩存 鏈表的隊(duì)列長度大于或等于所述第一邏輯緩存鏈表的隊(duì)列長度的時(shí),6等于 l;否則S等于所述第一邏輯緩存鏈表的隊(duì)列長度除以所述第二邏輯緩存鏈表 的隊(duì)列長度;所述第二替換操作為如果滿足第一條件所述第一物理緩存鏈 表的隊(duì)列長度大于O并且大于所述調(diào)整因子p值,或滿足第二條件所述第一 物理緩存鏈表的隊(duì)列長度大于O,并且等于所述調(diào)整因子P值,同時(shí)讀或?qū)懻?qǐng) 求命中第二邏輯緩存鏈表,則從所述緩存存儲(chǔ)介質(zhì)中刪除所述第一物理緩存鏈 表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊信息,將描述該數(shù)據(jù)塊的信息移到第一邏輯緩存鏈 表的隊(duì)首的位置;如果不滿足所述第一條件和第二條件,則刪除第二物理緩存 鏈表的隊(duì)尾位置,將其移到第二邏輯緩存鏈表的隊(duì)首位置;如果讀或?qū)懻?qǐng)求沒有命中所述第一物理緩存鏈表、第二物理緩存鏈表、第 一邏輯緩存鏈表和第二邏輯緩存鏈表,則按照以下兩種情況處理.-當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度等于 物理緩存的容量時(shí),如果第一物理緩存鏈表的隊(duì)列長度小于物理緩存的容量, 則刪除第一邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù),執(zhí)行所述第一替換操作,然 后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其位置信息放在第一物理緩存鏈表 隊(duì)列的隊(duì)首;如果第一物理緩存鏈表的隊(duì)列長度不小于物理緩存的容量,則刪 除第一物理緩存鏈表隊(duì)列的隊(duì)尾位置的數(shù)據(jù)并將請(qǐng)求的數(shù)據(jù)塊放入緩存存儲(chǔ) 介質(zhì)并將其放在第一物理緩存鏈表隊(duì)列的隊(duì)首;當(dāng)?shù)谝晃锢砭彺骀湵淼年?duì)列長度加上第一邏輯緩存鏈表的隊(duì)列長度小于 物理緩存的容量時(shí),則刪除第二邏輯緩存鏈表的隊(duì)尾位置對(duì)應(yīng)的數(shù)據(jù)塊位置信 息;進(jìn)一步判斷如果所述第一物理緩存鏈表、第二物理緩存鏈表、第一邏輯緩 存鏈表和第二邏輯緩存鏈表的隊(duì)列長度總和等于兩倍的物理緩存容量,執(zhí)行所7述第一替換操作,然后將請(qǐng)求的數(shù)據(jù)塊寫入緩存存儲(chǔ)介質(zhì)并將其數(shù)據(jù)塊對(duì)應(yīng)的 位置信息放在第一物理緩存鏈表隊(duì)列的隊(duì)首。
24、 根據(jù)權(quán)利要求23所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,所述第一物理緩存鏈表、第二物理緩存鏈表、 第一邏輯緩存鏈表和第二邏輯緩存鏈表的隊(duì)列長度在初始化時(shí)設(shè)為零。
25、 根據(jù)權(quán)利要求19所述的動(dòng)態(tài)綁定計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩存方法,其特征在于,還包括如下步驟步驟S3,在計(jì)算節(jié)點(diǎn)啟動(dòng)時(shí),啟動(dòng)并判斷上次關(guān)機(jī)是否是正常關(guān)機(jī),如 果上次是非正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)掃描存儲(chǔ)在與緩存數(shù)據(jù)相關(guān)的冗余區(qū)內(nèi)的元 數(shù)據(jù),重新構(gòu)建緩存數(shù)據(jù)的元數(shù)據(jù);如果是正常關(guān)機(jī),則計(jì)算節(jié)點(diǎn)讀取緩存數(shù) 據(jù)的元數(shù)據(jù);步驟S4,判斷計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的綁定關(guān)系是否發(fā)生改變,如果綁定 關(guān)系沒有發(fā)生改變,則繼續(xù)啟動(dòng)并完成初始化,等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求; 如果綁定關(guān)系發(fā)生改變,則把臟數(shù)據(jù)按照上次的綁定關(guān)系寫回到存儲(chǔ)節(jié)點(diǎn),然 后等待計(jì)算節(jié)點(diǎn)的讀或?qū)懻?qǐng)求,并按本次綁定關(guān)系進(jìn)行使用。
26、 根據(jù)權(quán)利要求17所述的緩存方法,其特征在于,步驟S4中所述初始化包括對(duì)緩存數(shù)據(jù)的元數(shù)據(jù)進(jìn)行初始化和對(duì)用于搜索所述元數(shù)據(jù)的索引信息 的索引表初始化。
全文摘要
本發(fā)明提供一種數(shù)據(jù)緩存裝置和采用該裝置的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)及緩存方法。該緩存裝置包括網(wǎng)絡(luò)接口;內(nèi)存,與所述網(wǎng)絡(luò)接口連接,用于存儲(chǔ)所述計(jì)算節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù);計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊,與所述內(nèi)存連接,用于通過接口將計(jì)算節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)換成外部設(shè)備請(qǐng)求后提交給處理單元,并用于與緩存存儲(chǔ)介質(zhì)傳輸數(shù)據(jù);處理單元,與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊、所述網(wǎng)絡(luò)接口和所述內(nèi)存連接,用于控制數(shù)據(jù)的傳輸和確定數(shù)據(jù)的緩存關(guān)系;緩存存儲(chǔ)介質(zhì),與所述計(jì)算節(jié)點(diǎn)接口協(xié)議轉(zhuǎn)換模塊連接,用于根據(jù)處理單元確定的緩存關(guān)系緩存數(shù)據(jù)。本發(fā)明能夠減少計(jì)算節(jié)點(diǎn)對(duì)通過網(wǎng)絡(luò)訪問存儲(chǔ)節(jié)點(diǎn)的依賴性,減少網(wǎng)絡(luò)負(fù)載,同時(shí)可以減少整個(gè)系統(tǒng)在一定時(shí)刻的網(wǎng)絡(luò)負(fù)載壓力。
文檔編號(hào)H04L29/06GK101252589SQ20081010270
公開日2008年8月27日 申請(qǐng)日期2008年3月25日 優(yōu)先權(quán)日2008年3月25日
發(fā)明者宇 劉, 孫清濤, 楊碧波, 韓曉明 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所