亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法

文檔序號(hào):85759閱讀:563來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域,具體涉及一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法。
背景技術(shù)
如今,隨著高速互連網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,集群系統(tǒng)正在不斷涌現(xiàn),它們將PC機(jī)或者工作站通過(guò)高速互連網(wǎng)絡(luò)連接起來(lái),為各種應(yīng)用和高性能計(jì)算提供平臺(tái)。
在網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域中也正發(fā)生著類(lèi)似的轉(zhuǎn)變。由磁盤(pán)陣列控制器、光纖通道和磁帶庫(kù)所構(gòu)成的存儲(chǔ)系統(tǒng)大都是非常復(fù)雜的,并且相當(dāng)昂貴。隨著磁盤(pán)容量的不斷增大和價(jià)格的不斷下降,網(wǎng)絡(luò)帶寬的不斷提高以及各種I/O密集型的應(yīng)用需求的日益增長(zhǎng),通過(guò)高速互連網(wǎng)絡(luò)搭建集群存儲(chǔ)系統(tǒng)就成為一個(gè)不可避免的趨勢(shì)。集群存儲(chǔ)系統(tǒng)由元數(shù)據(jù)服務(wù)器和存儲(chǔ)節(jié)點(diǎn)這2個(gè)部分組成,它將系統(tǒng)中的各個(gè)存儲(chǔ)節(jié)點(diǎn)的磁盤(pán)空間虛擬化為一個(gè)邏輯上統(tǒng)一的存儲(chǔ)空間,系統(tǒng)采用分條(Striping)技術(shù),將文件保存在多個(gè)存儲(chǔ)節(jié)點(diǎn)的磁盤(pán)中,元數(shù)據(jù)服務(wù)器提供樹(shù)型結(jié)構(gòu)的文件名字空間,并且記錄了每個(gè)文件所在的存儲(chǔ)節(jié)點(diǎn)列表,系統(tǒng)中的每個(gè)存儲(chǔ)節(jié)點(diǎn)都提供一個(gè)本地緩存,以提高數(shù)據(jù)的訪問(wèn)效率。在集群存儲(chǔ)系統(tǒng)中,用戶對(duì)文件的訪問(wèn)是在多個(gè)存儲(chǔ)節(jié)點(diǎn)中并行進(jìn)行的,從而提高了系統(tǒng)的整體I/O性能,訪問(wèn)的過(guò)程是用戶首先在文件名字空間中找到要訪問(wèn)的文件的文件名,然后和元數(shù)據(jù)服務(wù)器通訊,獲得文件所在的存儲(chǔ)節(jié)點(diǎn)列表,然后并行地對(duì)這些存儲(chǔ)節(jié)點(diǎn)發(fā)出I/O請(qǐng)求,如果請(qǐng)求的數(shù)據(jù)在存儲(chǔ)節(jié)點(diǎn)的本地緩存中,則直接將數(shù)據(jù)返回給用戶;如果在本地緩存中沒(méi)有命中,就需要啟動(dòng)磁盤(pán)訪問(wèn),從存儲(chǔ)節(jié)點(diǎn)的磁盤(pán)中讀取所需的數(shù)據(jù)返回給用戶。
隨著各種實(shí)時(shí)應(yīng)用(如多媒體、科學(xué)計(jì)算、在線事務(wù)處理、虛擬實(shí)現(xiàn)以及新興的高清電視等)的興起,它們對(duì)數(shù)據(jù)的訪問(wèn)延時(shí)的要求越來(lái)越高,對(duì)存儲(chǔ)系統(tǒng)的壓力也越來(lái)越大。因此提高集群存儲(chǔ)系統(tǒng)的數(shù)據(jù)訪問(wèn)效率對(duì)滿足日益增長(zhǎng)的應(yīng)用需求而言是至關(guān)重要的。
有關(guān)的研究表明,在數(shù)據(jù)塊大小為8K字節(jié)時(shí),訪問(wèn)本地緩存中的數(shù)據(jù)塊的延時(shí)大約為0.012ms,通過(guò)千兆以太網(wǎng)訪問(wèn)其他機(jī)器的本地緩存中的數(shù)據(jù)塊的延時(shí)大約為2.48ms,而對(duì)磁盤(pán)數(shù)據(jù)塊的訪問(wèn)延時(shí)則大約為5.58ms。目前的集群存儲(chǔ)系統(tǒng)(如Lustre,Panasas,PVFS等)雖然通過(guò)并行訪問(wèn)提高了系統(tǒng)的整體I/O性能,但是數(shù)據(jù)的訪問(wèn)效率并沒(méi)有得到提高,其原因是各個(gè)存儲(chǔ)節(jié)點(diǎn)相互獨(dú)立地管理各自的本地緩存,當(dāng)本地緩存沒(méi)有命中時(shí)就啟動(dòng)了磁盤(pán)訪問(wèn),而沒(méi)有利用其他存儲(chǔ)節(jié)點(diǎn)的本地緩存。

發(fā)明內(nèi)容本發(fā)明的目的在于提供一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法,該方法可以提高集群存儲(chǔ)系統(tǒng)的數(shù)據(jù)訪問(wèn)效率。
本發(fā)明提供的一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法,其步驟包括(1)初始化系統(tǒng),在每個(gè)存儲(chǔ)節(jié)點(diǎn)中設(shè)置一個(gè)本地時(shí)鐘周期計(jì)數(shù)器LCT、一個(gè)本地?cái)?shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器LCA和一個(gè)本地定時(shí)器LTimer;為每個(gè)存儲(chǔ)節(jié)點(diǎn)分配本地緩存空間;在系統(tǒng)啟動(dòng)時(shí),各個(gè)存儲(chǔ)節(jié)點(diǎn)協(xié)商一個(gè)共同的時(shí)鐘周期計(jì)數(shù)器值ICT、一個(gè)共同的數(shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器值ICA、以及一個(gè)共同的定時(shí)器到期間隔值ITimer;將各自的LCT、LCA和LTimer分別設(shè)置為ICT、ICA和ITimer的值;然后設(shè)置每個(gè)存儲(chǔ)節(jié)點(diǎn)為IDLE狀態(tài),并且監(jiān)控各自的數(shù)據(jù)塊訪問(wèn)行為;(2)各個(gè)存儲(chǔ)節(jié)點(diǎn)各自判斷是否發(fā)生數(shù)據(jù)塊的訪問(wèn)行為,如果發(fā)生了數(shù)據(jù)塊的訪問(wèn),則存儲(chǔ)節(jié)點(diǎn)進(jìn)入步驟(3),否則保持IDLE狀態(tài);(3)存儲(chǔ)節(jié)點(diǎn)進(jìn)行本地緩存管理,替換局部性強(qiáng)度最小的數(shù)據(jù)塊;(4)根據(jù)數(shù)據(jù)塊的訪問(wèn)頻率各存儲(chǔ)節(jié)點(diǎn)判斷是否需要在本地緩存中進(jìn)行數(shù)據(jù)塊遷移,如果需要,則在本地緩存中選擇待遷移的數(shù)據(jù)塊,然后進(jìn)入步驟(5),否則直接進(jìn)入步驟(5);(5)進(jìn)行時(shí)鐘計(jì)數(shù),將時(shí)鐘周期計(jì)數(shù)器值LCT分配給訪問(wèn)的數(shù)據(jù)塊,該LCT值稱(chēng)為該數(shù)據(jù)塊的時(shí)鐘周期編號(hào)DCN,然后將LCA的值加1,LTimer的值減1;(6)判斷LTimer的值是否為0,如果LTimer的值為0,轉(zhuǎn)步驟(7),否則轉(zhuǎn)步驟(10);(7)將自身的LCT的值加1,附在時(shí)鐘周期同步控制廣播消息中,并將該廣播消息發(fā)送給系統(tǒng)中所有的其他存儲(chǔ)節(jié)點(diǎn);然后接收當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的響應(yīng)消息;(8)判斷自身的本地緩存中是否有待遷移的數(shù)據(jù)塊;如果沒(méi)有待遷移的數(shù)據(jù)塊,則轉(zhuǎn)步驟(2);如果有待遷移的數(shù)據(jù)塊,則轉(zhuǎn)步驟(9);(9)根據(jù)當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的響應(yīng)消息,在這些當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)本地緩存利用率最低且低于自身本地緩存利用率的存儲(chǔ)節(jié)點(diǎn),然后將待遷移的數(shù)據(jù)塊遷移到該存儲(chǔ)節(jié)點(diǎn)的本地緩存中,完成后進(jìn)入步驟(2);(10)當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)按照下述步驟接收時(shí)鐘周期同步控制廣播消息,并且響應(yīng)該時(shí)鐘周期同步控制消息,完成后進(jìn)入步驟(2)(10.1)判斷是否接收到主動(dòng)存儲(chǔ)節(jié)點(diǎn)發(fā)送的消息,主動(dòng)存儲(chǔ)節(jié)點(diǎn)是指發(fā)送時(shí)鐘周期同步控制廣播消息的存儲(chǔ)節(jié)點(diǎn);如果沒(méi)有接收到,則轉(zhuǎn)步驟(2);如果接收到了則轉(zhuǎn)步驟(10.2);(10.2)判斷時(shí)鐘周期同步控制廣播消息中的LCT的值是否大于自身的LCT的值;如果大于進(jìn)入步驟(10.3),否則,直接轉(zhuǎn)步驟(2);(10.3)響應(yīng)時(shí)鐘周期同步控制消息,將本地緩存中的所有數(shù)據(jù)塊中的最小DCN的值MinDCN、LCA的值和自身的IP地址附在時(shí)鐘周期同步控制的響應(yīng)消息中,并發(fā)送時(shí)鐘周期同步控制響應(yīng)消息給主動(dòng)存儲(chǔ)節(jié)點(diǎn);(10.4)重新設(shè)置自身的LTimer為ITimer,并且使用時(shí)鐘周期同步控制廣播消息中的LCT的值作為自身LCT的當(dāng)前值,設(shè)置LCA的值為ICA;(11)重復(fù)上述步驟(2)-(10),直到系統(tǒng)停止。
本發(fā)明在原始的集群存儲(chǔ)系統(tǒng)的本地存儲(chǔ)的層次之上增加了一個(gè)全局緩存的抽象層,構(gòu)成一個(gè)由系統(tǒng)中所有存儲(chǔ)節(jié)點(diǎn)相互協(xié)作的、準(zhǔn)確高效的全局緩存管理的方法。為了后續(xù)的描述簡(jiǎn)單起見(jiàn),在本地緩存中被選擇的需要進(jìn)行遷移的數(shù)據(jù)塊稱(chēng)為“候選數(shù)據(jù)塊”,發(fā)生數(shù)據(jù)塊遷移的存儲(chǔ)節(jié)點(diǎn)稱(chēng)為“遷移節(jié)點(diǎn)”,而接收被遷移數(shù)據(jù)塊的存儲(chǔ)節(jié)點(diǎn)稱(chēng)為“接收節(jié)點(diǎn)”。本方法通過(guò)定量測(cè)量各個(gè)存儲(chǔ)節(jié)點(diǎn)本地緩存中數(shù)據(jù)塊的局部性強(qiáng)度以及設(shè)定各自的評(píng)價(jià)數(shù)據(jù)塊局部性強(qiáng)弱的基準(zhǔn),將各個(gè)存儲(chǔ)節(jié)點(diǎn)本地緩存中的數(shù)據(jù)塊的局部性強(qiáng)度的測(cè)量結(jié)果和各自的局部性強(qiáng)弱的基準(zhǔn)進(jìn)行比較,為各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存管理和候選數(shù)據(jù)塊的決策提供了準(zhǔn)確可靠的依據(jù),消除了由于數(shù)據(jù)塊的遷移而導(dǎo)致的不必要的磁盤(pán)訪問(wèn);同時(shí),本方法還通過(guò)定量測(cè)量各個(gè)存儲(chǔ)節(jié)點(diǎn)本地緩存的利用率,將各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率的測(cè)量結(jié)果在全局范圍內(nèi)進(jìn)行比較,為接收節(jié)點(diǎn)的決策提供了準(zhǔn)確可靠的依據(jù),平衡了各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存的利用率。從而提供了一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法。
總之,本發(fā)明方法不僅能夠管理好系統(tǒng)中各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存、提高各自的本地緩存的命中率,還能夠充分利用系統(tǒng)中其他存儲(chǔ)節(jié)點(diǎn)的本地緩存、在不同的存儲(chǔ)節(jié)點(diǎn)的本地緩存之間進(jìn)行準(zhǔn)確高效的數(shù)據(jù)塊遷移,大大提高了集群存儲(chǔ)系統(tǒng)的數(shù)據(jù)訪問(wèn)效率。
圖1為本發(fā)明方法的流程示意圖;圖2為系統(tǒng)初始化的流程示意圖;圖3為存儲(chǔ)節(jié)點(diǎn)進(jìn)行本地緩存管理的流程示意圖;圖4為在本地緩存中選擇候選數(shù)據(jù)塊的流程示意圖;圖5為選擇接收節(jié)點(diǎn)并且進(jìn)行候選數(shù)據(jù)塊遷移的流程示意圖;圖6為接收時(shí)鐘周期的同步控制(TYC)廣播消息,并且發(fā)送TYC響應(yīng)消息的流程示意圖。
具體實(shí)施方式本發(fā)明的總體策略為局部性強(qiáng)度較大的數(shù)據(jù)塊被后續(xù)請(qǐng)求所訪問(wèn)的概率也較大,因此應(yīng)該保存在存儲(chǔ)節(jié)點(diǎn)的本地緩存中;局部性強(qiáng)度較小的數(shù)據(jù)塊被后續(xù)請(qǐng)求所訪問(wèn)的概率也較小,則應(yīng)該被遷移到另外一個(gè)本地緩存利用率較小的存儲(chǔ)節(jié)點(diǎn)的本地緩存中,并且替換掉該存儲(chǔ)節(jié)點(diǎn)本地緩存中局部性強(qiáng)度最小的數(shù)據(jù)塊。
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
如圖1所示,本發(fā)明方法包括以下步驟(1)初始化系統(tǒng)。如圖2所示,初始化按照以下步驟進(jìn)行(1.1)在每個(gè)存儲(chǔ)節(jié)點(diǎn)中設(shè)置一個(gè)本地時(shí)鐘周期計(jì)數(shù)器(LCT)、一個(gè)本地?cái)?shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器(LCA)和一個(gè)本地定時(shí)器(LTimer);(1.2)為每個(gè)存儲(chǔ)節(jié)點(diǎn)分配本地緩存空間;(1.3)在系統(tǒng)啟動(dòng)時(shí),各個(gè)存儲(chǔ)節(jié)點(diǎn)協(xié)商一個(gè)共同的時(shí)鐘周期計(jì)數(shù)器值(ICT)——比如為零,一個(gè)共同的數(shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器值(ICA)——比如為零,以及一個(gè)共同的定時(shí)器到期間隔值(ITimer)——比如為50;(1.4)將各自的LCT、LCA和LTimer分別設(shè)置為ICT、ICA和ITimer的值;(1.5)然后設(shè)置每個(gè)存儲(chǔ)節(jié)點(diǎn)為IDLE狀態(tài),并且監(jiān)控各自的數(shù)據(jù)塊訪問(wèn)行為。
本發(fā)明可以采用使用LRU棧、LRU鏈表和MRU棧等作為實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存管理的數(shù)據(jù)結(jié)構(gòu)。在LRU棧中,當(dāng)數(shù)據(jù)塊被訪問(wèn)時(shí)它就被放置到棧頂;當(dāng)數(shù)據(jù)塊在后續(xù)的訪問(wèn)中不會(huì)被使用時(shí)就被逐漸下移到棧底,直至被替換出緩存。下面以LRU棧為例說(shuō)明本發(fā)明的各實(shí)施步驟,本領(lǐng)域一般技術(shù)人員可以根據(jù)本發(fā)明公開(kāi)的內(nèi)容,設(shè)計(jì)出本發(fā)明采用LRU鏈表、MRU?;蚱渌鼣?shù)據(jù)結(jié)構(gòu)時(shí)進(jìn)行緩存管理的具體步驟。
(2)各個(gè)存儲(chǔ)節(jié)點(diǎn)各自判斷是否發(fā)生數(shù)據(jù)塊的訪問(wèn)行為,如果發(fā)生了數(shù)據(jù)塊的訪問(wèn),則存儲(chǔ)節(jié)點(diǎn)進(jìn)入步驟(3),否則保持IDLE狀態(tài)。
(3)存儲(chǔ)節(jié)點(diǎn)利用LRU棧執(zhí)行本地的緩存管理。如圖3所示,本地的緩存管理按照以下步驟進(jìn)行(3.1)對(duì)訪問(wèn)的數(shù)據(jù)塊設(shè)置一個(gè)“訪問(wèn)計(jì)數(shù)器”(AC),用來(lái)記錄數(shù)據(jù)塊在本地LRU棧中被訪問(wèn)的次數(shù),以及設(shè)置一個(gè)“當(dāng)前訪問(wèn)間隔”(CAI),并且做出如下規(guī)定如果該數(shù)據(jù)塊對(duì)應(yīng)的AC的值等于1,則它的CAI的值就等于無(wú)窮大;如果該數(shù)據(jù)塊對(duì)應(yīng)的AC的值大于1,則它的CAI的值就等于它在LRU棧中相對(duì)于棧頂?shù)漠?dāng)前位置;(3.2)判斷訪問(wèn)的數(shù)據(jù)塊是否是本地LRU棧中已有的數(shù)據(jù)塊,如果訪問(wèn)的數(shù)據(jù)塊是本地LRU棧中已有的數(shù)據(jù)塊,則進(jìn)入步驟(3.3);否則進(jìn)入步驟(3.5);(3.3)將該數(shù)據(jù)塊對(duì)應(yīng)的AC的值加1;(3.4)將該數(shù)據(jù)塊在LRU棧中之前的所有數(shù)據(jù)塊依次下移,然后轉(zhuǎn)步驟(3.8);(3.5)將該數(shù)據(jù)塊對(duì)應(yīng)的AC的值設(shè)置為1;(3.6)判斷本地LRU棧中是否還有空間,如果有進(jìn)入步驟(3.7),否則進(jìn)入步驟(3.9);(3.7)將LRU棧中所有的數(shù)據(jù)塊依次下移,然后進(jìn)入步驟(3.8);(3.8)將被移動(dòng)的各個(gè)數(shù)據(jù)塊的CAI的值均加1,然后將訪問(wèn)的數(shù)據(jù)塊放置在LRU棧的棧頂,并且設(shè)置該數(shù)據(jù)塊的CAI的值為零,進(jìn)入步驟(5);(3.9)使用該數(shù)據(jù)塊的AC的值和CAI的值作為它的局部性強(qiáng)度的定量測(cè)量結(jié)果。其目的有兩個(gè)一是為在本地緩存中選擇被將要被替換掉的數(shù)據(jù)塊提供定量的依據(jù);二是為在本地緩存中選擇候選的數(shù)據(jù)塊提供定量的依據(jù),其效果為AC值較大并且CAI的值較小的數(shù)據(jù)塊具有的局部性強(qiáng)度較大,而AC的值較小而CAI的值較大的數(shù)據(jù)塊具有的局部性強(qiáng)度較?。?3.10)比較本地LRU棧中已有的各個(gè)數(shù)據(jù)塊的局部性強(qiáng)度的大?。皇紫缺容^AC的值。AC的值越大,則數(shù)據(jù)塊的局部性強(qiáng)度就越大,反之則越小。當(dāng)有兩個(gè)或者兩個(gè)以上的數(shù)據(jù)塊具有相同的AC的值時(shí),進(jìn)一步比較CAI的值。CAI的值越小,則數(shù)據(jù)塊的局部性強(qiáng)度就越大,反之則越小。當(dāng)有兩個(gè)或者兩個(gè)以上的數(shù)據(jù)塊具有相同的AC的值并且也具有相同的CAI的值時(shí),則距離棧頂越近的數(shù)據(jù)塊具有的局部性強(qiáng)度越大,反之則越小。
(3.11)將比較的結(jié)果中局部性強(qiáng)度最小的數(shù)據(jù)塊作為將要被替換的數(shù)據(jù)塊,并且將被選擇的將要被替換的數(shù)據(jù)塊在LRU棧中之前的所有數(shù)據(jù)塊依次下移,然后將被移動(dòng)的各個(gè)數(shù)據(jù)塊的CAI的值加1;(3.12)將訪問(wèn)的數(shù)據(jù)塊放置在LRU棧的棧頂,設(shè)置該數(shù)據(jù)塊的CAI的值為零,進(jìn)入步驟(4)。
在選擇被替換的數(shù)據(jù)塊時(shí),還可以采用其他的方法,如根據(jù)應(yīng)用程序的訪問(wèn)特性,預(yù)測(cè)本地LRU棧中哪些數(shù)據(jù)塊在將來(lái)都不會(huì)被訪問(wèn)到,將這些不會(huì)被訪問(wèn)的數(shù)據(jù)塊作為將要被替換的數(shù)據(jù)塊。
(4)根據(jù)數(shù)據(jù)塊的訪問(wèn)頻率各存儲(chǔ)節(jié)點(diǎn)判斷是否需要在本地緩存中進(jìn)行數(shù)據(jù)塊遷移,如果需要,則在本地緩存中選擇候選數(shù)據(jù)塊,然后進(jìn)入步驟(5),否則直接進(jìn)入步驟(5)。
如圖4所示,步驟(4)按照下述過(guò)程進(jìn)行(4.1)判斷本地緩存中是否存在AC的值大于1的數(shù)據(jù)塊,如果存在,進(jìn)入步驟(4.2),否則進(jìn)入步驟(5);如果本地緩存中不存在AC的值大于1的數(shù)據(jù)塊,也就是本地LRU棧中所有數(shù)據(jù)塊的CAI的值都等于無(wú)窮大,則不需要選擇候選數(shù)據(jù)塊,因此直接轉(zhuǎn)步驟(5)。
(4.2)將該存儲(chǔ)節(jié)點(diǎn)本地緩存中的所有AC的值大于1的數(shù)據(jù)塊中的最大的CAI的值作為本地緩存中候選數(shù)據(jù)塊的選擇基準(zhǔn)(NBSBL),其效果為CAI的值小于NBSBL的數(shù)據(jù)塊被認(rèn)為具有較大的局部性強(qiáng)度,不作為候選的數(shù)據(jù)塊;而CAI的值大于NBSBL的數(shù)據(jù)塊則被認(rèn)為具有較小的局部性強(qiáng)度,作為候選的數(shù)據(jù)塊;(4.3)將LRU棧中的CAI的值大于NBSBL、并且距離LRU棧頂最遠(yuǎn)的那一個(gè)數(shù)據(jù)塊作為候選數(shù)據(jù)塊,然后轉(zhuǎn)步驟(5)。
可以采用其他的方法進(jìn)行候選數(shù)據(jù)塊的選擇,如根據(jù)應(yīng)用程序的訪問(wèn)特性,預(yù)測(cè)本地LRU棧中哪些數(shù)據(jù)塊在將來(lái)的一段時(shí)間內(nèi)不會(huì)被訪問(wèn)到,將這些訪問(wèn)頻率較低的數(shù)據(jù)塊作為候選數(shù)據(jù)塊。
(5)進(jìn)行時(shí)鐘計(jì)數(shù)。將LCT的值分配給訪問(wèn)的數(shù)據(jù)塊,稱(chēng)為該數(shù)據(jù)塊的時(shí)鐘周期編號(hào)(DCN),然后將LCA的值加1,LTimer的值減1。
(6)判斷LTimer的值是否為0。如果LTimer的值為0,則認(rèn)為存儲(chǔ)節(jié)點(diǎn)的當(dāng)前時(shí)鐘周期結(jié)束了,然后轉(zhuǎn)步驟(7),否則認(rèn)為存儲(chǔ)節(jié)點(diǎn)當(dāng)前時(shí)鐘周期沒(méi)有結(jié)束,轉(zhuǎn)步驟(10)。
(7)存儲(chǔ)節(jié)點(diǎn)發(fā)送時(shí)鐘周期同步控制(TYC)的廣播消息并且接收其他存儲(chǔ)節(jié)點(diǎn)的響應(yīng)。其具體方法為首先將自身的LCT的值加1并且附在TYC廣播消息中,接著將該TYC消息發(fā)送給系統(tǒng)中所有的其他存儲(chǔ)節(jié)點(diǎn),然后接收其他存儲(chǔ)節(jié)點(diǎn)的響應(yīng)消息。為了避免時(shí)鐘服務(wù)器性能瓶頸,不采用基于服務(wù)器的收集和廣播定時(shí)信息的方法,而是采用存儲(chǔ)節(jié)點(diǎn)之間的消息通信的方法。此刻,系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)只會(huì)處于兩種狀態(tài)一種狀態(tài)是當(dāng)前的時(shí)鐘周期已經(jīng)結(jié)束了,另一種狀態(tài)是當(dāng)前的時(shí)鐘周期還沒(méi)有結(jié)束。處于第一種狀態(tài)的存儲(chǔ)節(jié)點(diǎn)接收到TYC廣播消息后,并不響應(yīng)TYC消息,而是繼續(xù)執(zhí)行它自身的操作步驟;處于第二種狀態(tài)的存儲(chǔ)節(jié)點(diǎn)接收到TYC廣播消息后,立即響應(yīng)TYC消息,其響應(yīng)消息包括本地LRU棧中的所有數(shù)據(jù)塊中的最小DCN的值(MinDCN)、LCA的值和自身的IP地址,響應(yīng)TYC消息的步驟見(jiàn)(10)。為了后續(xù)的描述簡(jiǎn)單起見(jiàn),稱(chēng)發(fā)送TYC廣播消息的存儲(chǔ)節(jié)點(diǎn)為主動(dòng)存儲(chǔ)節(jié)點(diǎn),響應(yīng)TYC廣播消息的存儲(chǔ)節(jié)點(diǎn)為響應(yīng)存儲(chǔ)節(jié)點(diǎn)。
(8)判斷是否有候選的數(shù)據(jù)塊。如果沒(méi)有候選的數(shù)據(jù)塊,則轉(zhuǎn)步驟(2);如果有候選的數(shù)據(jù)塊,則轉(zhuǎn)步驟(9)。
(9)選擇接收節(jié)點(diǎn),并且進(jìn)行候選數(shù)據(jù)塊的遷移,完成后進(jìn)入步驟(2)。
如圖5所示,接收節(jié)點(diǎn)的選擇以及候選數(shù)據(jù)塊的遷移按照以下的步驟進(jìn)行(9.1)定量測(cè)量各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率,并對(duì)各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率進(jìn)行比較;各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率的測(cè)量方法為利用TYC響應(yīng)消息中的MinDCN的值和LCA的值定量測(cè)量各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率。其效果為MinDCN的值和LCA的值越小,則存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率越低;反之,則存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率越高。
各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率的比較方法為首先比較MinDCN的值。MinDCN的值越小,則緩存利用率越低,反之則越高。當(dāng)有兩個(gè)或者兩個(gè)以上的響應(yīng)存儲(chǔ)節(jié)點(diǎn)具有相同的MinDCN的值時(shí),則比較LCA的值。LCA的值越小,則緩存利用率越低,反之則越高。當(dāng)有兩個(gè)或者兩個(gè)以上的響應(yīng)存儲(chǔ)節(jié)點(diǎn)不但具有相同的MinDCN的值,而且也具有相同的LCA的值時(shí),則認(rèn)為它們的本地緩存的利用率是相同的。
(9.2)建立一個(gè)鏈表(ULink)的數(shù)據(jù)結(jié)構(gòu),按照緩存利用率的測(cè)量結(jié)果將各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率按照從低到高的順序排列在ULink中,使得測(cè)量結(jié)果在各個(gè)響應(yīng)存儲(chǔ)節(jié)點(diǎn)之間具有可比性;(9.3)記錄ULink鏈表中各個(gè)本地緩存利用率對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)的IP地址;(9.4)判斷ULink中的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)是否為0,如果是,轉(zhuǎn)步驟(2),否則進(jìn)入步驟(9.5);(9.5)在ULink中選擇本地緩存利用率最低的存儲(chǔ)節(jié)點(diǎn),然后判斷該存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率是否低于自身,如果ULink中滿足該條件的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)為0,轉(zhuǎn)步驟(2),否則進(jìn)入步驟(9.6);(9.6)判斷ULink中滿足該條件的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)是否為1,如果不為1,隨機(jī)選擇其中的一個(gè)作為接收節(jié)點(diǎn),進(jìn)入步驟(9.7),否則直接進(jìn)入步驟(9.7);(9.7)將候選數(shù)據(jù)塊遷移到該選擇的存儲(chǔ)節(jié)點(diǎn)的本地緩存中;(9.8)完成候選數(shù)據(jù)塊的遷移后,記下接收節(jié)點(diǎn)的IP地址,當(dāng)下一次對(duì)該數(shù)據(jù)塊進(jìn)行訪問(wèn)時(shí),順著記錄的路線就能夠準(zhǔn)確、快速地訪問(wèn)目標(biāo)數(shù)據(jù)塊;(9.9)撤銷(xiāo)ULink數(shù)據(jù)結(jié)構(gòu),然后轉(zhuǎn)步驟(2)。
(10)接收TYC廣播消息,并且響應(yīng)該TYC消息,完成后進(jìn)入步驟(2)。
如圖6所示,接收并且響應(yīng)TYC廣播消息按照以下的步驟進(jìn)行(10.1)判斷是否接收到主動(dòng)存儲(chǔ)節(jié)點(diǎn)發(fā)送的TYC廣播消息。如果沒(méi)有接收到,則轉(zhuǎn)步驟(2);如果接收到了則轉(zhuǎn)步驟(10.2);(10.2)判斷TYC廣播消息中的LCT的值是否大于自身的LCT的值;如果大于進(jìn)入步驟(10.3),否則,直接轉(zhuǎn)步驟(2);(10.3)響應(yīng)TYC消息,將本地LRU棧中的所有數(shù)據(jù)塊中的最小DCN的值(MinDCN)、LCA的值和自身的IP地址附在TYC的響應(yīng)消息中,并發(fā)送TYC響應(yīng)消息給主動(dòng)存儲(chǔ)節(jié)點(diǎn);(10.4)重新設(shè)置自身的LTimer為ITimer,并且使用TYC廣播消息中的LCT的值作為自身LCT的當(dāng)前值,設(shè)置LCA的值為ICA。
(11)重復(fù)上述步驟(2)-(10),直到系統(tǒng)停止。
實(shí)例使用Trace模擬的實(shí)驗(yàn)手段模擬了具有10個(gè)存儲(chǔ)節(jié)點(diǎn)的集群存儲(chǔ)系統(tǒng),分別評(píng)價(jià)在小文件訪問(wèn)和大文件訪問(wèn)這兩種不同工作負(fù)載的情況下、采用本方法和不采用本方法時(shí),系統(tǒng)的平均本地緩存命中率和平均數(shù)據(jù)塊訪問(wèn)延時(shí)。
實(shí)驗(yàn)使用了如下的兩種Trace,一種包含了大量的小文件的訪問(wèn),另一種則包含了大量的大文件的訪問(wèn)(1)大量的小文件訪問(wèn)的Trace。該Trace是一天內(nèi)從具有8個(gè)節(jié)點(diǎn)的并行web服務(wù)器系統(tǒng)中收集到的數(shù)據(jù)集,大小為532M字節(jié),大約包含了15,000,000個(gè)HTTP請(qǐng)求。
(2)大量的大文件訪問(wèn)的Trace。該Trace是2小時(shí)內(nèi)從具有7個(gè)節(jié)點(diǎn)的并行計(jì)算機(jī)系統(tǒng)中收集到的數(shù)據(jù)庫(kù)訪問(wèn)的數(shù)據(jù)集,大小為5.2G字節(jié)。
計(jì)算平均訪問(wèn)延時(shí),采用的參數(shù)如下訪問(wèn)本地緩存中的數(shù)據(jù)塊的延時(shí)為0.012ms,訪問(wèn)保存在其他存儲(chǔ)節(jié)點(diǎn)的本地緩存中的數(shù)據(jù)塊的訪問(wèn)延時(shí)為2.48ms,訪問(wèn)磁盤(pán)上的數(shù)據(jù)塊的訪問(wèn)延時(shí)為5.58ms。
系統(tǒng)初始化時(shí)采用的參數(shù)如下ICT的值為0,ICA的值為0,ITimer的值為50,存儲(chǔ)節(jié)點(diǎn)的本地緩存管理所采用的數(shù)據(jù)結(jié)構(gòu)為L(zhǎng)RU棧,數(shù)據(jù)塊的大小為8K字節(jié)。由于以上兩種Trace的工作負(fù)載具有不同的特性,為了使實(shí)驗(yàn)結(jié)果更加清楚,對(duì)于第一種Trace,系統(tǒng)初始化時(shí)分配給每個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存空間的大小為75M字節(jié);對(duì)于第二種Trace,系統(tǒng)初始化時(shí)分配給每個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存空間的大小為375M字節(jié)。
通過(guò)Trace模擬實(shí)驗(yàn),得出如下的結(jié)果
(1)在小文件訪問(wèn)的情況下,不采用本方法的平均本地緩存命中率為90.6%,采用本方法的平均本地緩存命中率為92.6%;不采用本方法的平均數(shù)據(jù)塊訪問(wèn)延時(shí)為0.52ms,采用本方法的平均數(shù)據(jù)塊訪問(wèn)延時(shí)為0.41ms。
(2)在大文件訪問(wèn)的情況下,不采用本方法的平均本地緩存命中率為11.6%,采用本方法的平均本地緩存命中率為38.5%;不采用本方法的平均數(shù)據(jù)塊訪問(wèn)延時(shí)為4.5ms,采用本方法的平均數(shù)據(jù)塊訪問(wèn)延時(shí)為3.2ms。
實(shí)驗(yàn)結(jié)果表明本方法能夠提高集群存儲(chǔ)系統(tǒng)的緩存命中率,減小數(shù)據(jù)訪問(wèn)的延時(shí),在大文件訪問(wèn)的工作負(fù)載情況下,本方法的效果尤其明顯。
權(quán)利要求
1.一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法,其步驟包括(1)初始化系統(tǒng),在每個(gè)存儲(chǔ)節(jié)點(diǎn)中設(shè)置一個(gè)本地時(shí)鐘周期計(jì)數(shù)器LCT、一個(gè)本地?cái)?shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器LCA和一個(gè)本地定時(shí)器LTimer;為每個(gè)存儲(chǔ)節(jié)點(diǎn)分配本地緩存空間;在系統(tǒng)啟動(dòng)時(shí),各個(gè)存儲(chǔ)節(jié)點(diǎn)協(xié)商一個(gè)共同的時(shí)鐘周期計(jì)數(shù)器值ICT、一個(gè)共同的數(shù)據(jù)塊訪問(wèn)活動(dòng)計(jì)數(shù)器值ICA、以及一個(gè)共同的定時(shí)器到期間隔值ITimer;將各自的LCT、LCA和LTimer分別設(shè)置為ICT、ICA和ITimer的值;然后設(shè)置每個(gè)存儲(chǔ)節(jié)點(diǎn)為IDLE狀態(tài),并且監(jiān)控各自的數(shù)據(jù)塊訪問(wèn)行為;(2)各個(gè)存儲(chǔ)節(jié)點(diǎn)各自判斷是否發(fā)生數(shù)據(jù)塊的訪問(wèn)行為,如果發(fā)生了數(shù)據(jù)塊的訪問(wèn),則存儲(chǔ)節(jié)點(diǎn)進(jìn)入步驟(3),否則保持IDLE狀態(tài);(3)存儲(chǔ)節(jié)點(diǎn)進(jìn)行本地緩存管理,替換局部性強(qiáng)度最小的數(shù)據(jù)塊;(4)根據(jù)數(shù)據(jù)塊的訪問(wèn)頻率各存儲(chǔ)節(jié)點(diǎn)判斷是否需要在本地緩存中進(jìn)行數(shù)據(jù)塊遷移,如果需要,則在本地緩存中選擇待遷移的數(shù)據(jù)塊,然后進(jìn)入步驟(5),否則直接進(jìn)入步驟(5);(5)進(jìn)行時(shí)鐘計(jì)數(shù),將時(shí)鐘周期計(jì)數(shù)器值LCT分配給訪問(wèn)的數(shù)據(jù)塊,該LCT值稱(chēng)為該數(shù)據(jù)塊的時(shí)鐘周期編號(hào)DCN,然后將LCA的值加1,LTimer的值減1;(6)判斷LTimer的值是否為0,如果LTimer的值為0,轉(zhuǎn)步驟(7),否則轉(zhuǎn)步驟(10);(7)將自身的LCT的值加1,附在時(shí)鐘周期同步控制廣播消息中,并將該廣播消息發(fā)送給系統(tǒng)中所有的其他存儲(chǔ)節(jié)點(diǎn);然后接收當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的響應(yīng)消息;(8)判斷自身的本地緩存中是否有待遷移的數(shù)據(jù)塊;如果沒(méi)有待遷移的數(shù)據(jù)塊,則轉(zhuǎn)步驟(2);如果有待遷移的數(shù)據(jù)塊,則轉(zhuǎn)步驟(9);(9)根據(jù)當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的響應(yīng)消息,在這些當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)本地緩存利用率最低且低于自身本地緩存利用率的存儲(chǔ)節(jié)點(diǎn),然后將待遷移的數(shù)據(jù)塊遷移到該存儲(chǔ)節(jié)點(diǎn)的本地緩存中,完成后進(jìn)入步驟(2);(10)當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)按照下述步驟接收時(shí)鐘周期同步控制廣播消息,并且響應(yīng)該時(shí)鐘周期同步控制消息,完成后進(jìn)入步驟(2)(10.1)判斷是否接收到主動(dòng)存儲(chǔ)節(jié)點(diǎn)發(fā)送的消息,主動(dòng)存儲(chǔ)節(jié)點(diǎn)是指發(fā)送時(shí)鐘周期同步控制廣播消息的存儲(chǔ)節(jié)點(diǎn);如果沒(méi)有接收到,則轉(zhuǎn)步驟(2);如果接收到了則轉(zhuǎn)步驟(10.2);(10.2)判斷時(shí)鐘周期同步控制廣播消息中的LCT的值是否大于自身的LCT的值;如果大于進(jìn)入步驟(10.3),否則,直接轉(zhuǎn)步驟(2);(10.3)響應(yīng)時(shí)鐘周期同步控制消息,將本地緩存中的所有數(shù)據(jù)塊中的最小DCN的值MinDCN、LCA的值和自身的IP地址附在時(shí)鐘周期同步控制的響應(yīng)消息中,并發(fā)送時(shí)鐘周期同步控制響應(yīng)消息給主動(dòng)存儲(chǔ)節(jié)點(diǎn);(10.4)重新設(shè)置自身的LTimer為ITimer,并且使用時(shí)鐘周期同步控制廣播消息中的LCT的值作為自身LCT的當(dāng)前值,設(shè)置LCA的值為ICA;(11)重復(fù)上述步驟(2)-(10),直到系統(tǒng)停止。
2.根據(jù)權(quán)利要求
1所述的方法,其特征在于以使用LRU棧作為實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存管理的數(shù)據(jù)結(jié)構(gòu),步驟(3)按照下述過(guò)程進(jìn)行(3.1)對(duì)訪問(wèn)的數(shù)據(jù)塊設(shè)置一個(gè)“訪問(wèn)計(jì)數(shù)器”AC,用來(lái)記錄數(shù)據(jù)塊在本地LRU棧中被訪問(wèn)的次數(shù),以及設(shè)置一個(gè)“當(dāng)前訪問(wèn)間隔”CAI,并且規(guī)定如果該數(shù)據(jù)塊對(duì)應(yīng)的AC的值等于1,則它的CAI的值就等于無(wú)窮大;如果該數(shù)據(jù)塊對(duì)應(yīng)的AC的值大于1,則它的CAI的值就等于它在LRU棧中相對(duì)于棧頂?shù)漠?dāng)前位置;(3.2)判斷訪問(wèn)的數(shù)據(jù)塊是否是本地LRU棧中已有的數(shù)據(jù)塊,如果訪問(wèn)的數(shù)據(jù)塊是本地LRU棧中已有的數(shù)據(jù)塊,則進(jìn)入步驟(3.3);否則進(jìn)入步驟(3.5);(3.3)將該數(shù)據(jù)塊對(duì)應(yīng)的AC的值加1;(3.4)將該數(shù)據(jù)塊在LRU棧中之前的所有數(shù)據(jù)塊依次下移,然后轉(zhuǎn)步驟(3.8);(3.5)將該數(shù)據(jù)塊對(duì)應(yīng)的AC的值設(shè)置為1;(3.6)判斷本地LRU棧中是否還有空間,如果有進(jìn)入步驟(3.7),否則進(jìn)入步驟(3.9);(3.7)將LRU棧中所有的數(shù)據(jù)塊依次下移,然后進(jìn)入步驟(3.8);(3.8)將被移動(dòng)的各個(gè)數(shù)據(jù)塊的CAI的值均加1,然后將訪問(wèn)的數(shù)據(jù)塊放置在LRU棧的棧頂,并且設(shè)置該數(shù)據(jù)塊的CAI的值為零,進(jìn)入步驟(5);(3.9)使用該數(shù)據(jù)塊的AC的值和CAI的值作為它的局部性強(qiáng)度的定量測(cè)量結(jié)果;(3.10)按照下述方法比較本地LRU棧中已有的各個(gè)數(shù)據(jù)塊的局部性強(qiáng)度的大?。皇紫缺容^AC的值,當(dāng)有兩個(gè)或者兩個(gè)以上的數(shù)據(jù)塊具有相同的AC的值時(shí),進(jìn)一步比較CAI的值,當(dāng)有兩個(gè)或者兩個(gè)以上的數(shù)據(jù)塊具有相同的AC的值并且也具有相同的CAI的值時(shí),則距離棧頂越近的數(shù)據(jù)塊具有的局部性強(qiáng)度越大,反之則越?。?3.11)將比較的結(jié)果中局部性強(qiáng)度最小的數(shù)據(jù)塊作為將要被替換的數(shù)據(jù)塊,并且將被選擇的將要被替換的數(shù)據(jù)塊在LRU棧中之前的所有數(shù)據(jù)塊依次下移,然后將被移動(dòng)的各個(gè)數(shù)據(jù)塊的CAI的值加1;(3.12)將訪問(wèn)的數(shù)據(jù)塊放置在LRU棧的棧頂,設(shè)置該數(shù)據(jù)塊的CAI的值為零,進(jìn)入步驟(4)。
3.根據(jù)權(quán)利要求
2所述的方法,其特征在于步驟(4)按照下述過(guò)程進(jìn)行(4.1)判斷本地緩存中是否存在AC的值大于1的數(shù)據(jù)塊,如果存在,進(jìn)入步驟(4.2),否則進(jìn)入步驟(5);(4.2)將該存儲(chǔ)節(jié)點(diǎn)本地緩存中的所有AC的值大于1的數(shù)據(jù)塊中的最大的CAI的值作為本地緩存中待遷移數(shù)據(jù)塊的選擇基準(zhǔn);(4.3)將LRU棧中的CAI的值大于NBSBL、并且距離LRU棧頂最遠(yuǎn)的那一個(gè)數(shù)據(jù)塊作為待遷移的數(shù)據(jù)塊,然后轉(zhuǎn)步驟(5)。
4.根據(jù)權(quán)利要求
1、2或3所述的方法,其特征在于步驟(9)按照下述過(guò)程進(jìn)行(9.1)利用時(shí)鐘周期同步控制響應(yīng)消息中的MinDCN的值和LCA的值定量測(cè)量各個(gè)當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率,并按照下述方法對(duì)它們的本地緩存利用率進(jìn)行比較首先比較MinDCN的值,當(dāng)有兩個(gè)或者兩個(gè)以上的存儲(chǔ)節(jié)點(diǎn)具有相同的MinDCN的值時(shí),則比較LCA的值,當(dāng)有兩個(gè)或者兩個(gè)以上的存儲(chǔ)節(jié)點(diǎn)具有相同的MinDCN的值和相同的LCA的值時(shí),認(rèn)為它們的本地緩存的利用率是相同的;(9.2)建立一個(gè)鏈表ULink的數(shù)據(jù)結(jié)構(gòu),按照緩存利用率的測(cè)量結(jié)果將這些當(dāng)前時(shí)鐘周期還沒(méi)有結(jié)束的存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率按照從低到高的順序排列在ULink中;(9.3)記錄ULink鏈表中各個(gè)本地緩存利用率對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)的IP地址;(9.4)判斷ULink中的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)是否為0,如果是,轉(zhuǎn)步驟(2),否則進(jìn)入步驟(9.5);(9.5)在ULink中選擇本地緩存利用率最低的存儲(chǔ)節(jié)點(diǎn),然后判斷該存儲(chǔ)節(jié)點(diǎn)的本地緩存利用率是否低于自身,如果ULink中滿足該條件的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)為0,轉(zhuǎn)步驟(2),否則進(jìn)入步驟(9.6);(9.6)判斷ULink中滿足該條件的存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù)是否為1,如果不為1,隨機(jī)選擇其中的一個(gè),進(jìn)入步驟(9.7),否則直接進(jìn)入步驟(9.7);(9.7)將待遷移的數(shù)據(jù)塊遷移到被選中的存儲(chǔ)節(jié)點(diǎn)的本地緩存中;(9.8)完成數(shù)據(jù)塊的遷移后,記下該存儲(chǔ)節(jié)點(diǎn)的IP地址,當(dāng)下一次對(duì)該數(shù)據(jù)塊進(jìn)行訪問(wèn)時(shí),順著記錄的路線就能夠準(zhǔn)確、快速地訪問(wèn)目標(biāo)數(shù)據(jù)塊;(9.9)撤銷(xiāo)ULink數(shù)據(jù)結(jié)構(gòu),然后轉(zhuǎn)步驟(2)。
專(zhuān)利摘要
本發(fā)明公開(kāi)了一種用于集群存儲(chǔ)系統(tǒng)的全局緩存管理的方法。本發(fā)明在本地存儲(chǔ)的層次之上增加全局緩存的抽象層,構(gòu)成由系統(tǒng)中各存儲(chǔ)節(jié)點(diǎn)相互協(xié)作、準(zhǔn)確高效的全局緩存管理的方法;再通過(guò)定量測(cè)量各存儲(chǔ)節(jié)點(diǎn)本地緩存中數(shù)據(jù)塊的局部性強(qiáng)度、設(shè)定各自的評(píng)價(jià)數(shù)據(jù)塊局部性強(qiáng)弱的基準(zhǔn)、和定量測(cè)量各存儲(chǔ)節(jié)點(diǎn)本地緩存的利用率,為節(jié)點(diǎn)的本地緩存管理和數(shù)據(jù)塊遷移的決策提供準(zhǔn)確可靠的依據(jù)。本發(fā)明能有效管理各存儲(chǔ)節(jié)點(diǎn)的本地緩存,提高其本地緩存命中率,充分利用其他節(jié)點(diǎn)的本地緩存、在各節(jié)點(diǎn)的本地緩存之間進(jìn)行準(zhǔn)確高效的數(shù)據(jù)塊遷移,消除由于數(shù)據(jù)塊遷移而導(dǎo)致的不必要的磁盤(pán)訪問(wèn),平衡各個(gè)存儲(chǔ)節(jié)點(diǎn)的本地緩存的利用率,大大提高了系統(tǒng)的數(shù)據(jù)訪問(wèn)效率。
文檔編號(hào)G06F15/16GK1996944SQ200610124995
公開(kāi)日2007年7月11日 申請(qǐng)日期2006年11月9日
發(fā)明者謝長(zhǎng)生, 蔡斌, 黃建忠, 李懷陽(yáng) 申請(qǐng)人:華中科技大學(xué)導(dǎo)出引文BiBTeX, EndNote, RefMan
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1