亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法與流程

文檔序號:11250575閱讀:802來源:國知局
一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法與流程

本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體的說是涉及一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法。



背景技術(shù):

分布式存儲系統(tǒng)中,數(shù)據(jù)往往需要通過網(wǎng)絡(luò),數(shù)據(jù)路徑過長,導致性能降低,延遲增大,對于性能要求較高的使用場景,往往是望而卻步。目前主流的分布式存儲系統(tǒng),無論是開源或是商用,幾乎都是在虛擬磁盤端增加緩存系統(tǒng)來提升性能以滿足一些高端使用場景。主要有兩種方向:一種是基于內(nèi)存的緩存,一種是基于ssd的緩存?;趦?nèi)存緩存由于內(nèi)存的掉電易失性,無法滿足數(shù)據(jù)安全的需求?;趕sd的緩存如果選用nvmessd是比較理想的選擇,但是價格非常昂貴。如果是選用sata/sasssd則性能略顯不足。

目前軟件定義存儲的概念逐漸深入人心,這種基于通用x86服務的,分布式的,純軟件的存儲系統(tǒng)逐漸被廣大用戶所接受。相對于傳統(tǒng)陣列存儲系統(tǒng),分布式存儲系統(tǒng)的性能是巨大的弱點,通過緩存技術(shù)能顯著改善,使其使用場景更加廣泛。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)中的不足,本發(fā)明要解決的技術(shù)問題在于提供了一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法。

為解決上述技術(shù)問題,本發(fā)明通過以下方案來實現(xiàn):一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法,該方法通過內(nèi)存與sata/sasssd組成分層緩存系統(tǒng)結(jié)構(gòu),通過快速算法檢測數(shù)據(jù)訪問熱點,熱點度最高的數(shù)據(jù)存放在內(nèi)存,熱點讀較高的數(shù)據(jù)存放在sata/sasssd中;

緩存分層包括內(nèi)存和sata/sasssd兩個物理組件,由軟件實現(xiàn)熱點判斷和數(shù)據(jù)在各級緩存中的上浮與下層,緩存算法針對磁盤的讀寫特性設(shè)計,并非通用的緩存,主要應用于分布式塊存儲系統(tǒng)的前端虛擬磁盤中,為虛擬磁盤加速;

所述分布式塊存儲系統(tǒng)包括:

控制主機:所述控制主機生成虛擬磁盤,為虛擬磁盤準備高速緩沖存儲器,作為存儲數(shù)據(jù)路徑的前端主機,完成數(shù)據(jù)接收、緩存、轉(zhuǎn)發(fā)功能;

策略主機:所述策略主機為分布式塊存儲系統(tǒng)的大腦,控制主機需要創(chuàng)建虛擬磁盤時,將從存儲主機中調(diào)度處滿足條件的主機,生成存儲組件供控制主機連接使用;

存儲主機:分布式設(shè)于系統(tǒng)中,數(shù)據(jù)最終的存放地點,將存儲資源抽象成多個存儲組件;

所述方法包括塊設(shè)備的寫入和讀取方法,該塊設(shè)備的寫入和讀取方法如下:

塊設(shè)備的讀取或?qū)懭攵际且淮巫x取或?qū)懭胍粔K連續(xù)的數(shù)據(jù),其應用程序?qū)懭氲臄?shù)據(jù)的參數(shù)為:offset,length,data;讀取的參數(shù)為:offset,length,buffer;

offset:讀寫磁盤的位置,起始位置為0,offset為距離起始位置的偏移量;

length:讀寫磁盤數(shù)據(jù)的長度;

data:需要寫入磁盤的數(shù)據(jù);

buffer:將磁盤中的對應數(shù)據(jù)填入buffer中。

進一步的,所述分層緩存系統(tǒng)結(jié)構(gòu)將存儲空間劃分為cache對象,每個cache對象固定大小,所述分層緩存系統(tǒng)結(jié)構(gòu)的第一層是內(nèi)存索引,內(nèi)存索引由一組item組成,每個item占用4個字節(jié)代表一個cache對象;內(nèi)存索引主要維護cache對象的引用計數(shù),標志對應的item是否在cache樹中,如果在,該cache對象在cache樹的id;

內(nèi)存索引所需要的內(nèi)存空間,假設(shè)ssd緩存空間為1tb,一個item占用4個字節(jié)空間代表4mb的cache對象:

內(nèi)存索引占用空間=1tb÷4mb*4=1mb;

內(nèi)存索引占用空間較小幾乎可以忽略不計;提到具體的cache對象時緩存在cache樹中的,cache樹是一顆完全二叉樹,并組織成最小堆;完全二叉樹表示其每個節(jié)點可以用整數(shù)編號,并且隨著插入,刪除節(jié)點,依然能滿足完全二叉樹條件;最小堆表示樹根節(jié)點一定是二叉樹中key值最小的;通過不同的計算引用計數(shù)的方式可以實現(xiàn)不同的緩存淘汰算法;cache樹的value用于存儲ssdcache的偏移id,以快速找到ssdcache的block;

cache樹將ssdcache中的block組織成完全二叉樹,ssdcache將存儲空間劃分為一組block,一個block對應一個cache對象,通過簡單的映射算法將將要從hdd讀取或?qū)懭氲臄?shù)據(jù)加載到ssdcache中;

計算cache樹占用內(nèi)存空間,最小堆以數(shù)組的形式實現(xiàn)無需指針:

cache樹的節(jié)點數(shù)量=1tb÷4mb=262144;

cache樹占用內(nèi)存空間=262144*16=4mb。

進一步的,基于述各模塊的描述,描述cache的具體寫入流程步驟:

步驟①:應用程序發(fā)起寫入請求,請求中包含(offset,length,data);

步驟②:虛擬磁盤io處理程序接收到該請求,根據(jù)offset獲取內(nèi)存索引對應的item項,直接通過移位運算得到時間復雜度為o(1),將引用計數(shù)+1;

步驟③:如果有需要將數(shù)據(jù)拆分成多個cache對象,插入cache樹中,將根節(jié)點替換掉,如果沒有設(shè)置為o_direct則直接返回,后續(xù)數(shù)據(jù)將異步同步到ssdcache和hdd中;

步驟④:如果設(shè)置了o_direct,將cache對象的數(shù)據(jù)同步到節(jié)點對應的ssdcacheblock中返回;后續(xù)由異步進程同步到后端hdd中;

基于cache系統(tǒng)的讀取流程步驟:

步驟①:應用程序發(fā)起讀取請求,請求中包含(offset,length,buffer);

步驟②:虛擬磁盤io處理程序接收到該請求,根據(jù)offset獲取內(nèi)存索引對應的item項,直接通過移位運算得到時間復雜度為o(1),將引用計數(shù)+1;

步驟③:根據(jù)item的最高位bit,判斷offset對應的數(shù)據(jù)是否在cache中;如果在cache中,在直接從item讀取到其對應的cache樹的索引id值,如果cache對象保存了數(shù)據(jù),將數(shù)據(jù)讀取返回;如果cache對象內(nèi)存數(shù)據(jù)已是否,則根據(jù)cache樹節(jié)點的值對應的ssdcache偏移id,從ssd讀取數(shù)據(jù);

步驟④:如果所請求不在cache中,則直接請求存儲主機,讀取數(shù)據(jù);

步驟⑤:比較該請求對應item的引用計數(shù),如果該item的引用計數(shù)大于cache樹根節(jié)點的引用計數(shù),則節(jié)點替換,緩存更新;

步驟⑥:如果該item的引用計數(shù)小于cache樹根節(jié)點的引用計數(shù),表示該數(shù)據(jù)塊熱度不夠,數(shù)據(jù)返回后,則不更新緩存。

進一步的,由于內(nèi)存的掉電易失性,內(nèi)存中僅僅保存讀取的數(shù)據(jù),更新的數(shù)據(jù)需要寫入ssd中以防掉電數(shù)據(jù)丟失。

相對于現(xiàn)有技術(shù),本發(fā)明的有益效果是:本發(fā)明提出一種全新的基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法。通過內(nèi)存與sata/sasssd組成分層緩存結(jié)構(gòu),通過快速算法檢測數(shù)據(jù)訪問熱點,熱點度最高的數(shù)據(jù)存放在內(nèi)存,熱點讀較高的數(shù)據(jù)存放在sata/sasssd中。由于內(nèi)存的掉電易失性,內(nèi)存中僅僅保存讀取的數(shù)據(jù)。更新的數(shù)據(jù)需要寫入ssd中以防掉電數(shù)據(jù)丟失。緩存分層由內(nèi)存和sata/sasssd兩個物理組件組成。由軟件實現(xiàn)熱點判斷和數(shù)據(jù)在各級緩存中的上浮與下層。本發(fā)明的緩存算法針對磁盤的讀寫特性設(shè)計,并非通用的緩存,主要應用于分布式塊存儲系統(tǒng)的前端虛擬磁盤中,為虛擬磁盤加速。采用本發(fā)明的分層緩存方案,避免了內(nèi)存的掉電易失性,相比于sata/sasssd能大幅度提升性能,同時能帶來巨大的成本效益,為客戶降低存儲上的總擁有成本(tco)。

附圖說明

圖1為本發(fā)明的分布式塊存儲系統(tǒng)架構(gòu)圖;

圖2為本發(fā)明的分層緩存系統(tǒng)結(jié)構(gòu)圖;

圖3為本發(fā)明的磁盤讀寫方法流程圖;

圖4為本發(fā)明的第一類內(nèi)存索引結(jié)構(gòu)圖;

圖5為本發(fā)明的內(nèi)存cache樹結(jié)構(gòu)圖;

圖6為本發(fā)明的第二類內(nèi)存索引結(jié)構(gòu)圖。

具體實施方式

下面結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行詳細闡述,以使本發(fā)明的優(yōu)點和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護范圍做出更為清楚明確的界定。

請參照附圖1-6,本發(fā)明的一種基于分布式塊存儲的虛擬磁盤分層緩存設(shè)計方法,該方法通過內(nèi)存與sata/sasssd組成分層緩存系統(tǒng)結(jié)構(gòu),通過快速算法檢測數(shù)據(jù)訪問熱點,熱點度最高的數(shù)據(jù)存放在內(nèi)存,熱點讀較高的數(shù)據(jù)存放在sata/sasssd中;

緩存分層包括內(nèi)存和sata/sasssd兩個物理組件,由軟件實現(xiàn)熱點判斷和數(shù)據(jù)在各級緩存中的上浮與下層,緩存算法針對磁盤的讀寫特性設(shè)計,并非通用的緩存,主要應用于分布式塊存儲系統(tǒng)的前端虛擬磁盤中,為虛擬磁盤加速;

所述分布式塊存儲系統(tǒng)包括:

控制主機:所述控制主機生成虛擬磁盤,為虛擬磁盤準備高速緩沖存儲器,作為存儲數(shù)據(jù)路徑的前端主機,完成數(shù)據(jù)接收、緩存、轉(zhuǎn)發(fā)功能;

策略主機:所述策略主機為分布式塊存儲系統(tǒng)的大腦,控制主機需要創(chuàng)建虛擬磁盤時,將從存儲主機中調(diào)度處滿足條件的主機,生成存儲組件供控制主機連接使用;

存儲主機:分布式設(shè)于系統(tǒng)中,數(shù)據(jù)最終的存放地點,將存儲資源抽象成多個存儲組件;

如圖3所示,所述方法還包括塊設(shè)備的寫入和讀取方法,該塊設(shè)備的寫入和讀取方法如下:

塊設(shè)備的讀取或?qū)懭攵际且淮巫x取或?qū)懭胍粔K連續(xù)的數(shù)據(jù),其應用程序?qū)懭氲臄?shù)據(jù)的參數(shù)為:offset,length,data;讀取的參數(shù)為:offset,length,buffer;

offset:讀寫磁盤的位置,起始位置為0,offset為距離起始位置的偏移量;

length:讀寫磁盤數(shù)據(jù)的長度;

data:需要寫入磁盤的數(shù)據(jù);

buffer:將磁盤中的對應數(shù)據(jù)填入buffer中。

所述分層緩存系統(tǒng)結(jié)構(gòu)將存儲空間劃分為cache對象,每個cache對象固定大小(以4mb為例),如圖4所示,所述分層緩存系統(tǒng)結(jié)構(gòu)的第一層是內(nèi)存索引,內(nèi)存索引由一組item組成,每個item占用4個字節(jié)代表一個cache對象;內(nèi)存索引主要維護cache對象的引用計數(shù),標志對應的item是否在cache樹中,如果在,該cache對象在cache樹的id;

內(nèi)存索引所需要的內(nèi)存空間,假設(shè)ssd緩存空間為1tb,一個item占用4個字節(jié)空間代表4mb的cache對象:

內(nèi)存索引占用空間=1tb÷4mb*4=1mb;

內(nèi)存索引占用空間較小幾乎可以忽略不計;提到具體的cache對象時緩存在cache樹中的,如圖5所示,cache樹是一顆完全二叉樹,并組織成最小堆;完全二叉樹表示其每個節(jié)點可以用整數(shù)編號,并且隨著插入,刪除節(jié)點,依然能滿足完全二叉樹條件;最小堆表示樹根節(jié)點一定是二叉樹中key值最小的;通過不同的計算引用計數(shù)的方式可以實現(xiàn)不同的緩存淘汰算法;cache樹的value用于存儲ssdcache的偏移id,以快速找到ssdcache的block;

cache樹將ssdcache中的block組織成完全二叉樹,如圖6所示,ssdcache將存儲空間劃分為一組block,一個block對應一個cache對象,通過簡單的映射算法將將要從hdd讀取或?qū)懭氲臄?shù)據(jù)加載到ssdcache中;

計算cache樹占用內(nèi)存空間,最小堆以數(shù)組的形式實現(xiàn)無需指針:

cache樹的節(jié)點數(shù)量=1tb÷4mb=262144;

cache樹占用內(nèi)存空間=262144*16=4mb。

基于述各模塊的描述,描述cache的具體寫入流程步驟:

步驟①:應用程序發(fā)起寫入請求,請求中包含(offset,length,data);

步驟②:虛擬磁盤io處理程序接收到該請求,根據(jù)offset獲取內(nèi)存索引對應的item項,直接通過移位運算得到時間復雜度為o(1),將引用計數(shù)+1;

步驟③:如果有需要將數(shù)據(jù)拆分成多個cache對象,插入cache樹中,將根節(jié)點替換掉,如果沒有設(shè)置為o_direct則直接返回,后續(xù)數(shù)據(jù)將異步同步到ssdcache和hdd中;

步驟④:如果設(shè)置了o_direct,將cache對象的數(shù)據(jù)同步到節(jié)點對應的ssdcacheblock中返回;后續(xù)由異步進程同步到后端hdd中;

基于cache系統(tǒng)的讀取流程步驟:

步驟①:應用程序發(fā)起讀取請求,請求中包含(offset,length,buffer);

步驟②:虛擬磁盤io處理程序接收到該請求,根據(jù)offset獲取內(nèi)存索引對應的item項,直接通過移位運算得到時間復雜度為o(1),將引用計數(shù)+1;

步驟③:根據(jù)item的最高位bit,判斷offset對應的數(shù)據(jù)是否在cache中;如果在cache中,在直接從item讀取到其對應的cache樹的索引id值,如果cache對象保存了數(shù)據(jù),將數(shù)據(jù)讀取返回;如果cache對象內(nèi)存數(shù)據(jù)已是否,則根據(jù)cache樹節(jié)點的值對應的ssdcache偏移id,從ssd讀取數(shù)據(jù);

步驟④:如果所請求不在cache中,則直接請求存儲主機,讀取數(shù)據(jù);

步驟⑤:比較該請求對應item的引用計數(shù),如果該item的引用計數(shù)大于cache樹根節(jié)點的引用計數(shù),則節(jié)點替換,緩存更新;

步驟⑥:如果該item的引用計數(shù)小于cache樹根節(jié)點的引用計數(shù),表示該數(shù)據(jù)塊熱度不夠,數(shù)據(jù)返回后,則不更新緩存。

由于內(nèi)存的掉電易失性,內(nèi)存中僅僅保存讀取的數(shù)據(jù),更新的數(shù)據(jù)需要寫入ssd中以防掉電數(shù)據(jù)丟失。

以上所述僅為本發(fā)明的優(yōu)選實施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1