最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法及系統(tǒng)與流程

文檔序號:11154212閱讀:540來源:國知局
基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法及系統(tǒng)與制造工藝
本發(fā)明實施例涉及云存儲
技術(shù)領(lǐng)域
,尤其涉及基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法及系統(tǒng)。
背景技術(shù)
:云計算是一種利用虛擬化技術(shù),通過互聯(lián)網(wǎng)向用戶提供可動態(tài)擴展共享軟硬件資源的服務(wù)。云計算的動態(tài)、彈性等特性使得用戶能夠按需使用并按使用資源數(shù)量付費,用戶可以依據(jù)當前服務(wù)的負載情況,動態(tài)調(diào)整資源使用量,以減少資源浪費。云存儲系統(tǒng)是云計算系統(tǒng)的一個重要組成部分。從技術(shù)的角度說,云存儲系統(tǒng)實際上就是一個大型的分布式的網(wǎng)絡(luò)存儲系統(tǒng),它是一種特殊的共享存儲。實際使用的云存儲系統(tǒng)主要可以分為對象存儲和塊存儲兩類。其中塊存儲(Cinder)主要用于向虛擬機實例提供擴展的磁盤存儲空間,并具有持久化的數(shù)據(jù)存儲特性,其后端可通過drivers支持多種存儲,如Ceph、NetApp、OceanStor、Nexenta、SolidFire以及Zadara等?,F(xiàn)今的云計算系統(tǒng)往往擁有多個大型數(shù)據(jù)中心,均有各自的塊級別云存儲子系統(tǒng),并分布于多地。由于兩個數(shù)據(jù)中心之間的網(wǎng)絡(luò)帶寬限制,當虛擬機實例與云存儲子系統(tǒng)處在不同數(shù)據(jù)中心時,將嚴重影響存儲系統(tǒng)的I/O性能,影響虛擬機實例的穩(wěn)定運行,最終影響虛擬機實例的穩(wěn)定高效運行。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法及系統(tǒng),以提高緩存數(shù)據(jù)讀寫的效率。一方面,本發(fā)明實施例提供了一種基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法,包括:任一緩存客戶端接收虛擬磁盤設(shè)備發(fā)出的通用塊層讀寫請求,其中虛擬磁盤設(shè)備由該緩存客戶端的本地緩存磁盤、與該緩存客戶端位于同一局域網(wǎng)內(nèi)的其它緩存客戶端和元數(shù)據(jù)服務(wù)器端的源存儲磁盤映射得到,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置;該緩存客戶端采用預(yù)定義的緩存策略將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理。另一方面,本發(fā)明實施例還提供了基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫系統(tǒng),包括元數(shù)據(jù)服務(wù)器端和多個位于同一局域網(wǎng)內(nèi)的緩存客戶端;緩存客戶端用于接收虛擬磁盤設(shè)備發(fā)出的通用塊層讀寫請求,并采用預(yù)定義的緩存策略將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置;其中虛擬磁盤設(shè)備由該緩存客戶端的本地緩存磁盤、與該緩存客戶端位于同一局域網(wǎng)內(nèi)的其它緩存客戶端和元數(shù)據(jù)服務(wù)器端的源存儲磁盤映射得到,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置。本發(fā)明實施例提供的技術(shù)方案,針對網(wǎng)絡(luò)帶寬對分布式云存儲產(chǎn)生的數(shù)據(jù)讀寫這一瓶頸問題,提出在局域網(wǎng)模式上,采用多節(jié)點混合塊緩沖數(shù)據(jù)讀寫的方法,實現(xiàn)對塊級別云存儲的讀寫性能的改進,最終實現(xiàn)云存儲I/O性能的總體提升,保證整個云存儲系統(tǒng)的穩(wěn)定、安全運行。附圖說明圖1為本發(fā)明實施例一中提供的一種基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法的流程圖;圖2為本發(fā)明實施例中提供的基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫系統(tǒng)的框架圖;圖3為本發(fā)明實施例中提供的元數(shù)據(jù)服務(wù)器端的結(jié)構(gòu)圖;圖4為本發(fā)明實施例中提供的緩存客戶端的結(jié)構(gòu)圖;圖5為本發(fā)明實施例中提供的緩存寫入策略示意圖;圖6為本發(fā)明實施例中提供的測試環(huán)境拓撲圖。具體實施方式下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。圖1為本發(fā)明實施例中提供的一種基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法的流程圖。本實施例的方法可以由基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫系統(tǒng)執(zhí)行。參考圖1,該基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫方法具體可以包括如下:步驟11、任一緩存客戶端接收虛擬磁盤設(shè)備發(fā)出的通用塊層讀寫請求。其中,虛擬磁盤設(shè)備由該緩存客戶端的本地緩存磁盤、與該緩存客戶端位于同一局域網(wǎng)內(nèi)的其它緩存客戶端和元數(shù)據(jù)服務(wù)器端的源存儲磁盤映射得到,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置。參考圖2,該緩存系統(tǒng)可以包括一個元數(shù)據(jù)服務(wù)器端以及多個位于同一局域網(wǎng)內(nèi)的緩存客戶端。元數(shù)據(jù)服務(wù)器端內(nèi)的源存儲磁盤由外部網(wǎng)絡(luò)通過iSCSI(InternetSmallComputerSystemInterface,小型計算機系統(tǒng)接口)協(xié)議連接到局域網(wǎng)內(nèi)所有緩存客戶端,供所有緩存客戶端共享使用。各緩存客戶端的本地緩存磁盤同樣通過iSCSI協(xié)議連接到其它緩存客戶端,供其它緩存客戶端對遠端緩存數(shù)據(jù)進行讀寫。并且,各緩存客戶端使用緩存客戶端程序?qū)⒈镜鼐彺娲疟P、多個遠端緩存磁盤(即局域網(wǎng)中的其它緩存客戶端節(jié)點,可以是一個服務(wù)器或多個磁盤陣列)以及源存儲磁盤映射成為一個帶有緩存功能的虛擬磁盤設(shè)備。此虛擬磁盤設(shè)備與源存儲磁盤擁有相同容量,用戶使用虛擬磁盤設(shè)備替代源存儲磁盤。緩存客戶端程序?qū)⒃撎摂M磁盤設(shè)備的塊I/O轉(zhuǎn)發(fā),由相應(yīng)緩存磁盤或源存儲磁盤進行處理,實現(xiàn)緩存功能。參考圖3,元數(shù)據(jù)服務(wù)器端主要為各緩存客戶端提供所有緩存客戶端節(jié)點的緩存命中情況查詢功能,通過同步請求實現(xiàn)與各緩存客戶端的元數(shù)據(jù)同步。而緩存客戶端則負責(zé)實現(xiàn)實際的緩存功能通過預(yù)定義的緩存策略及與元數(shù)據(jù)服務(wù)器端通信實現(xiàn)緩存功能。元數(shù)據(jù)服務(wù)器端負責(zé)集中處理各緩存客戶端的元數(shù)據(jù)并提供緩存命中查詢服務(wù)。元數(shù)據(jù)服務(wù)器端的實現(xiàn)主要包括三個步驟:第一、初始化配置。元數(shù)據(jù)服務(wù)器端在初始化時記錄各緩存客戶端的緩存塊大小、緩存塊數(shù)量、緩存寫入策略等緩存參數(shù),以及各緩存客戶端節(jié)點編號、IP地址等配置信息。第二、元數(shù)據(jù)同步。存儲各緩存客戶端節(jié)點中與緩存命中查詢相關(guān)的部分元數(shù)據(jù)(包括各緩存塊的狀態(tài)信息、緩存塊對應(yīng)的源存儲磁盤起始扇區(qū)信息等),元數(shù)據(jù)服務(wù)器端通過接收各緩存客戶端的元數(shù)據(jù)同步請求,進行服務(wù)器端的元數(shù)據(jù)更新操作。第三,緩存命中查詢。元數(shù)據(jù)服務(wù)器向各緩存客戶端提供緩存命中查詢服務(wù),接收緩存客戶端的查詢請求(包括緩存塊的起始扇區(qū)信息等)并返回查詢結(jié)果(緩存塊所在的客戶端編號、狀態(tài)信息等)。緩存的元數(shù)據(jù)服務(wù)器端與客戶端的元數(shù)據(jù)同步以及緩存命中查詢均通過UDP(UserDatagramProtocol,用戶數(shù)據(jù)報協(xié)議)通信協(xié)議實現(xiàn)。參考圖4,緩存客戶端負責(zé)實際緩存功能,根據(jù)預(yù)設(shè)的緩存策略進行緩存操作。緩存客戶端的實現(xiàn)主要包括三部分:第一,初始化配置。與元數(shù)據(jù)服務(wù)器相同,緩存客戶端首先在初始化時記錄緩存塊大小、緩存塊數(shù)量、緩存寫入策略等緩存參數(shù),以及各緩存客戶端節(jié)點編號和對應(yīng)遠端緩存磁盤設(shè)備信息。第二,元數(shù)據(jù)同步。各緩存客戶端將各自的本地緩存元數(shù)據(jù)信息放入內(nèi)核內(nèi)存中,并將緩存命中查詢相關(guān)的部分元數(shù)據(jù)同步至元數(shù)據(jù)服務(wù)器端。緩存客戶端在本地緩存元數(shù)據(jù)發(fā)生變更后,立即向元數(shù)據(jù)服務(wù)器端發(fā)送元數(shù)據(jù)同步信息。各緩存客戶端同時接收并處理元數(shù)據(jù)服務(wù)器端對本地緩存元數(shù)據(jù)的修改請求。第三,緩存實現(xiàn)。為實現(xiàn)緩存功能,各緩存客戶端利用LinuxDeviceMapper機制,將本地緩存磁盤、多個遠端緩存磁盤及源存儲磁盤映射為一個帶緩存功能的虛擬磁盤設(shè)備。對于此虛擬磁盤設(shè)備的塊I/O,緩存客戶端查詢本地及遠端緩存元數(shù)據(jù),并根據(jù)預(yù)定義的緩存策略,將虛擬磁盤設(shè)備發(fā)出的通用塊層bio(塊設(shè)備的io請求)轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理。針對緩存功能的實現(xiàn)還包括以下五個要點:(1)實際緩存數(shù)據(jù)存放于各緩存客戶端節(jié)點的緩存磁盤中,緩存數(shù)據(jù)按照初始化配置的緩存塊大小組織成塊,且各緩存數(shù)據(jù)塊在所有緩存客戶端節(jié)點中只保存一份。(2)對于緩存塊與數(shù)據(jù)塊間的映射,采用組相聯(lián)方式,通過hash方法實現(xiàn)源存儲磁盤的數(shù)據(jù)塊與緩存磁盤的緩存塊的映射。(3)在緩存塊的替換策略方面,使用LRU策略。(4)由于緩存磁盤分布于局域網(wǎng)內(nèi)的多個緩存客戶端節(jié)點,因此各節(jié)點的本地緩存磁盤與遠端緩存磁盤存在性能差異。根據(jù)緩存映射規(guī)則,緩存客戶端會優(yōu)先使用性能較好的本地緩存磁盤。(5)緩存客戶端通過內(nèi)核模塊形式實現(xiàn),因此用戶可根據(jù)需求動態(tài)的將緩存模塊插入Linux內(nèi)核或從內(nèi)核移除。客戶與服務(wù)端通信實現(xiàn)如下:元數(shù)據(jù)服務(wù)器端與各緩存客戶端的數(shù)據(jù)通信包括兩部分:元數(shù)據(jù)同步及緩存命中查詢。元數(shù)據(jù)同步部分包括元數(shù)據(jù)服務(wù)器端的元數(shù)據(jù)更新以及緩存客戶端的元數(shù)據(jù)更新。其中,元數(shù)據(jù)服務(wù)器端的元數(shù)據(jù)更新請求由緩存客戶端發(fā)起。當緩存客戶端的緩存元數(shù)據(jù)變更時觸發(fā),將元數(shù)據(jù)變更緩存塊的對應(yīng)源存儲磁盤起始扇區(qū)、緩存塊編號、緩存塊狀態(tài)信息以及發(fā)送更新請求的緩存客戶端節(jié)點編號信息發(fā)送至元數(shù)據(jù)服務(wù)器端進行元數(shù)據(jù)更新。而緩存客戶端的元數(shù)據(jù)更新請求由元數(shù)據(jù)服務(wù)器端發(fā)起,且僅在進行寫入操作時產(chǎn)生。當緩存命中查詢導(dǎo)致緩存元數(shù)據(jù)變更時,觸發(fā)此更新請求,將元數(shù)據(jù)變更緩存塊編號及緩存塊狀態(tài)信息發(fā)送至對應(yīng)緩存客戶端進行元數(shù)據(jù)更新。緩存客戶端同樣回應(yīng)更新請求編號確認。緩存命中查詢部分則包括緩存塊查詢請求及其回應(yīng)。緩存塊查詢請求由緩存客戶端發(fā)起。當緩存本地未命中時觸發(fā)此請求,發(fā)送緩存塊對應(yīng)的源存儲磁盤起始扇區(qū)及I/O讀寫方向至元數(shù)據(jù)服務(wù)器端,并等待查詢請求回應(yīng)。具體的,任一緩存客戶端接收虛擬磁盤設(shè)備發(fā)出的通用塊層讀寫請求(bio請求),該bio結(jié)構(gòu)中包含讀寫磁盤起始扇區(qū)位置。步驟12、該緩存客戶端采用預(yù)定義的緩存策略將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理。其中,預(yù)定義的緩存策略主要可以包括緩存塊映射策略、緩存寫入策略以及緩存塊替換策略。其中,緩存寫入策略以及緩存塊映射策略的相聯(lián)度(assoc)均可在緩存系統(tǒng)初始化時由用戶自定義,此外用戶還可以對緩存系統(tǒng)的緩存塊大小、緩存塊數(shù)量以及緩存客戶端IP等參數(shù)進行設(shè)定。具體的,該緩存客戶端采用緩存塊映射策略,依據(jù)讀寫磁盤起始扇區(qū)位置確定通用塊層讀寫請求的相應(yīng)物理磁盤設(shè)備,且相應(yīng)物理磁盤設(shè)備采用緩存寫入策略進行讀寫處理。針對寫入操作,主要提供寫直達以及寫回兩種寫入策略,寫直達策略偏向于數(shù)據(jù)安全,而寫回策略則更偏向于寫入性能,用戶可以根據(jù)需求來設(shè)置緩存的寫入策略。參考圖5,當使用寫直達策略時,所有塊I/O數(shù)據(jù)均直接寫入遠端的源存儲磁盤,并不緩存到緩存磁盤。若寫入的數(shù)據(jù)已在本地或遠端緩存磁盤緩存,則需將對應(yīng)緩存塊狀態(tài)設(shè)置為無效。此寫入策略能夠保證緩存磁盤與源存儲磁盤之間的數(shù)據(jù)一致性,在緩存客戶端節(jié)點出現(xiàn)問題而導(dǎo)致緩存數(shù)據(jù)丟失的情況下,仍能夠保證數(shù)據(jù)的安全性。參考圖5,使用寫回策略時,所有塊I/O數(shù)據(jù)均直接寫入本地緩存磁盤或遠端緩存磁盤,所有緩存數(shù)據(jù)將被延遲寫回源存儲磁盤。那些延遲寫回操作將在緩存塊發(fā)生替換時發(fā)生,或在緩存磁盤使用完畢進行卸載時,由緩存客戶端程序進行沖洗操作,統(tǒng)一將所有臟緩存塊中的數(shù)據(jù)寫回遠端的源存儲磁盤。當然,緩存沖洗操作會對相應(yīng)緩存客戶端節(jié)點的性能產(chǎn)生一定影響。使用寫回策略在理論上能夠提升數(shù)據(jù)寫入速度,并降低遠端網(wǎng)絡(luò)存儲系統(tǒng)的負載壓力。但使用寫回策略同時也存在風(fēng)險,當緩存客戶端節(jié)點出現(xiàn)故障時,將出現(xiàn)緩存數(shù)據(jù)丟失的情況。對于緩存塊與數(shù)據(jù)塊間的映射,系統(tǒng)采用組相聯(lián)的方式。根據(jù)預(yù)定義的緩存相聯(lián)度,將每緩存相聯(lián)度個緩存塊組合成為一個緩存組,通過hash(哈希)方法實現(xiàn)源存儲磁盤的數(shù)據(jù)塊與緩存磁盤的緩存塊的映射。示例性的,步驟12可以包括:A、該緩存客戶端依據(jù)讀寫磁盤起始扇區(qū)位置、預(yù)設(shè)的緩存塊掩碼以及緩存相聯(lián)度,確定目標緩存塊。進一步的,步驟A具體可以包括:A1、該緩存客戶端依據(jù)讀寫磁盤起始扇區(qū)位置和預(yù)設(shè)的緩存塊掩碼,得到讀寫請求數(shù)據(jù)對應(yīng)數(shù)據(jù)塊在源存儲磁盤中的起始扇區(qū)位置。具體的,該緩存客戶端針對來自上層文件系統(tǒng)或VFS(virtualFileSystem,虛擬文件系統(tǒng))層的通用塊層bio請求,根據(jù)bio結(jié)構(gòu)中的讀寫磁盤起始扇區(qū)位置bi_sector,首先與預(yù)設(shè)的緩存塊掩碼block_mask進行按位與操作得出讀寫磁盤起始扇區(qū)位置bi_sector在對應(yīng)數(shù)據(jù)塊內(nèi)的偏移量offset,然后將bi_sector減去偏移量offset得出數(shù)據(jù)塊在源存儲磁盤設(shè)備中起始扇區(qū)request_block。A2、該緩存客戶端依據(jù)所述數(shù)據(jù)塊在源存儲磁盤中的起始扇區(qū)位置,計算所述數(shù)據(jù)塊對應(yīng)緩存組號。具體的,該緩存客戶端依據(jù)起始扇區(qū)位置request_block,利用hash_block函數(shù)首先計算數(shù)據(jù)庫編號,然后與緩存相聯(lián)度assoc相除得出緩存組號set_number。A3、該緩存客戶端依據(jù)所述數(shù)據(jù)塊對應(yīng)緩存組號以及緩存相聯(lián)度,確定所述緩存組的起始緩存塊編號。具體的,該緩存客戶端將數(shù)據(jù)塊對應(yīng)緩存組號set_number與緩存相聯(lián)度assoc相乘得出該緩存組的起始緩存塊編號index。A4、該緩存客戶端依據(jù)所述起始緩存塊編號和所述緩存相聯(lián)度確定目標緩存塊。具體的,該緩存客戶端將起始緩存塊編號index至index+assoc的緩存塊確定為目標緩存塊。B、該緩存客戶端通過本地緩存磁盤的元數(shù)據(jù)或元數(shù)據(jù)服務(wù)器端對目標緩存塊進行緩存命中查詢,確定所述通用塊層讀寫請求的相應(yīng)物理磁盤。具體的,緩存客戶端通過本地緩存磁盤的元數(shù)據(jù)對目標緩存塊進行命中查詢,以確定通用塊層讀寫請求的相應(yīng)物理磁盤是否為本地緩存磁盤;緩存客戶端通過元數(shù)據(jù)服務(wù)器端對目標緩存塊進行緩存命中查詢,以確定通用塊層讀寫請求的相應(yīng)物理磁盤是否為其他緩存客戶端或源存儲磁盤。使用緩存塊元數(shù)據(jù)structcacheblock進行查找,搜索緩存塊編號index至index+assoc的元數(shù)據(jù)cacheblock項。查找所有cacheblock中,緩存塊狀態(tài)為VALID、DIRTY、RESERVED或WRITEBACK(狀態(tài)為保留或?qū)懟貏t說明此緩存塊正在進行緩存寫入或緩存寫回操作,當前的bio請求將被放入cacheblock的bios列表中延遲處理)且緩存塊對應(yīng)數(shù)據(jù)塊的扇區(qū)起始位置block與request_block相等。若找到cacheblock項,則緩存命中;若未找到,則緩存未命中。C、將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理。示例性的,該緩存客戶端通過元數(shù)據(jù)服務(wù)器端對目標緩存塊進行緩存命中查詢,確定所述通用塊層讀寫請求的相應(yīng)物理磁盤,包括:該緩存客戶端向元數(shù)據(jù)服務(wù)器端發(fā)送包含目標緩存塊的緩存命中查詢請求;元數(shù)據(jù)服務(wù)器端確定并向該緩存客戶端返回目標緩存塊所在緩存客戶端編號和目標緩存塊的狀態(tài)信息;該緩存塊客戶端依據(jù)元數(shù)據(jù)服務(wù)器端返回的目標緩存塊所在的緩存客戶端編號和目標緩存塊的狀態(tài)信息,確定所述通用塊層讀寫請求的相應(yīng)物理磁盤。示例性的,元數(shù)據(jù)服務(wù)器端確定并向該緩存客戶端返回目標緩存塊所在的緩存客戶端編號和目標緩存塊的狀態(tài)信息,包括:元數(shù)據(jù)服務(wù)器端依據(jù)預(yù)先同步的元數(shù)據(jù)確定目標緩存塊的狀態(tài)信息;元數(shù)據(jù)服務(wù)器端依據(jù)初始化配置信息確定目標緩存塊所在的緩存客戶端編號;元數(shù)據(jù)服務(wù)器端將目標緩存塊的狀態(tài)信息和目標緩存塊所在的緩存客戶端編號返回給該緩存客戶端。示例性的,上述方法還可以包括:在任一緩存客戶端的本地緩存元數(shù)據(jù)更新時,向元數(shù)據(jù)服務(wù)端發(fā)送元數(shù)據(jù)同步請求,以將更新內(nèi)容同步到元數(shù)據(jù)服務(wù)端中。具體的,各緩存客戶端將各自的本地緩存元數(shù)據(jù)信息放入內(nèi)核內(nèi)存中,并將緩存命中查詢相關(guān)的部分元數(shù)據(jù)同步至元數(shù)據(jù)服務(wù)器端。緩存客戶端在本地緩存元數(shù)據(jù)發(fā)生變更后,立即向元數(shù)據(jù)服務(wù)器端發(fā)送元數(shù)據(jù)同步信息。示例性的,上述方法還可以包括:在任一緩存客戶端檢測到緩存塊替換指令,且沒有處于無效狀態(tài)的緩存塊時,則采用LRU(LeastRecentlyUsed,近期最少使用)算法策略選擇待替換的緩存塊。具體的,在緩存塊的替換策略方面,使用LRU策略。保存每個緩存塊的訪問時間戳,以及整個本地緩存最新時間戳。其中各緩存塊的訪問時間戳存放于對應(yīng)元數(shù)據(jù)structcacheblock結(jié)構(gòu)中的counter項,而整個本地緩存最新時間戳存放于緩存信息structcache_c結(jié)構(gòu)中的counter項。當緩存塊被訪問時,將整個本地緩存最新時間戳值加1并賦值于緩存塊的訪問時間戳,當整個本地緩存最新時間戳超過counter變量最大限制時將所有counter置0。緩存塊發(fā)生替換時,優(yōu)先選擇狀態(tài)為無效的緩存塊,若緩存已滿則通過比較各緩存塊的訪問時間戳選擇最久未使用的緩存塊進行替換。本發(fā)明實施例針對網(wǎng)絡(luò)帶寬對分布式云存儲產(chǎn)生的數(shù)據(jù)讀寫這一瓶頸問題,提出在局域網(wǎng)模式上,采用多節(jié)點混合塊緩沖數(shù)據(jù)讀寫的方法,實現(xiàn)對塊級別云存儲的讀寫性能的改進,最終實現(xiàn)云存儲I/O性能的總體提升,保證整個云存儲系統(tǒng)的穩(wěn)定、安全運行。具體的,針對企事業(yè)園區(qū)中的云計算系統(tǒng)中多虛擬機實例共享使用同一塊級別網(wǎng)絡(luò)存儲卷,且虛擬機實例與塊級別云存儲子系統(tǒng)處于不同數(shù)據(jù)中心而導(dǎo)致網(wǎng)絡(luò)存儲卷I/O性能較差的情況,設(shè)計一種基于LinuxDeviceMapper機進行物理磁盤設(shè)備映射的多節(jié)點的塊級別網(wǎng)絡(luò)緩存系統(tǒng),利用本地局域網(wǎng)相對于外部網(wǎng)絡(luò)的帶寬優(yōu)勢,通過局域網(wǎng)內(nèi)的緩存數(shù)據(jù)共享實現(xiàn)外部網(wǎng)絡(luò)存儲的性能提升。本發(fā)明實施例還提供了一種基于云存儲的多節(jié)點混合塊緩存數(shù)據(jù)讀寫系統(tǒng)。該系統(tǒng)包括元數(shù)據(jù)服務(wù)器端和多個位于同一局域網(wǎng)內(nèi)的緩存客戶端;緩存客戶端用于接收虛擬磁盤設(shè)備發(fā)出的通用塊層讀寫請求,并采用預(yù)定義的緩存策略將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置;其中虛擬磁盤設(shè)備由該緩存客戶端的本地緩存磁盤、與該緩存客戶端位于同一局域網(wǎng)內(nèi)的其它緩存客戶端和元數(shù)據(jù)服務(wù)器端的源存儲磁盤映射得到,所述通用層讀寫請求中包含讀寫磁盤起始扇區(qū)位置。示例性的,緩存客戶端具體用于:依據(jù)讀寫磁盤起始扇區(qū)位置bi_sector、預(yù)設(shè)的緩存塊掩碼block_mask以及緩存相聯(lián)度accoc,確定目標緩存塊;通過本地緩存磁盤的元數(shù)據(jù)或元數(shù)據(jù)服務(wù)器端對目標緩存塊進行緩存命中查詢,確定所述通用塊層讀寫請求的相應(yīng)物理磁盤;將所述通用塊層讀寫請求轉(zhuǎn)發(fā)到相應(yīng)物理磁盤設(shè)備進行處理。示例性的,緩存客戶端具體用于:依據(jù)讀寫磁盤起始扇區(qū)位置bi_sector和預(yù)設(shè)的緩存塊掩碼block_mask,得到讀寫請求數(shù)據(jù)對應(yīng)數(shù)據(jù)塊在源存儲磁盤中的起始扇區(qū)位置request_block;依據(jù)所述數(shù)據(jù)塊在源存儲磁盤中的起始扇區(qū)位置request_block,計算所述數(shù)據(jù)塊對應(yīng)緩存組號set_number;依據(jù)所述數(shù)據(jù)塊對應(yīng)緩存組號set_number以及緩存相聯(lián)度accoc,確定所述緩存組的起始緩存塊編號index;依據(jù)所述起始緩存塊編號index和所述緩存相聯(lián)度accoc確定目標緩存塊。示例性的,緩存客戶端用于向元數(shù)據(jù)服務(wù)器端發(fā)送包含目標緩存塊的緩存命中查詢請求;元數(shù)據(jù)服務(wù)器端用于確定并向該緩存客戶端返回目標緩存塊所在緩存客戶端編號和目標緩存塊的狀態(tài)信息;該緩存塊客戶端用于依據(jù)元數(shù)據(jù)服務(wù)器端返回的目標緩存塊所在的緩存客戶端編號和目標緩存塊的狀態(tài)信息,確定所述通用塊層讀寫請求的相應(yīng)物理磁盤。示例性的,元數(shù)據(jù)服務(wù)器端具體用于:依據(jù)預(yù)先同步的元數(shù)據(jù)確定目標緩存塊的狀態(tài)信息;依據(jù)初始化配置信息確定目標緩存塊所在的緩存客戶端編號;將目標緩存塊的狀態(tài)信息和目標緩存塊所在的緩存客戶端編號返回給該緩存客戶端。示例性的,所述緩存客戶端還用于:在本地緩存元數(shù)據(jù)更新時,向元數(shù)據(jù)服務(wù)端發(fā)送元數(shù)據(jù)同步請求,以將更新內(nèi)容同步到元數(shù)據(jù)服務(wù)端中。示例性的,所述緩存客戶端還用于:在檢測到緩存塊替換指令,且沒有處于無效狀態(tài)的緩存塊時,則采用LRU策略選擇待替換的緩存塊。為了驗證本專利所提出的特征模型,我們做了大量的實驗,這些實驗主要是在局域網(wǎng)模式下云存儲服務(wù)器上進行了較長時間的網(wǎng)絡(luò)數(shù)據(jù)操作與傳輸。通過對實驗結(jié)果分析,證明了該模型的有效性及穩(wěn)定性。實驗相關(guān)信息如下:1)硬件環(huán)境本發(fā)明云存儲測試平臺如下:普通存儲服務(wù)器測試平臺如下:2)軟件環(huán)境名稱操作系統(tǒng)軟件功能存儲服務(wù)器CentOS6.2X86_64存儲服務(wù)器模塊數(shù)據(jù)存儲數(shù)據(jù)服務(wù)器CentOS6.2X86_64元數(shù)據(jù)模塊數(shù)據(jù)管理應(yīng)用服務(wù)器Windows7應(yīng)用服務(wù)器模塊測試方法:圖6為本發(fā)明實施例中提供的測試環(huán)境拓撲圖。參考圖6,在所有應(yīng)用服務(wù)器上運行預(yù)置的iozone腳本,iozone測試命令行參數(shù)舉例(腳本為:iozone1.bat):iozone.exe-s30g-t12-Ff:\f1f:\f2f:\f3f:\f4f:\f5f:\f6f:\f7f:\f8f:\f9f:\f10-c-C-w-e-r1m-+n-+k-i0-i1>>iozone_1_64k.log測試分為2個過程:1)采用普通存儲服務(wù)器進行數(shù)據(jù)讀寫,通過IOZONE進行持續(xù)數(shù)據(jù)寫入,寫入節(jié)點為10個客戶端,每個客戶端同時寫入10個文件,每個文件10G(每個客戶端寫入100G文件),查看寫入數(shù)據(jù)花費的時間。2)采用本發(fā)明數(shù)據(jù)云存儲架構(gòu)進行數(shù)據(jù)讀寫,通過IOZONE進行持續(xù)數(shù)據(jù)寫入,寫入節(jié)點為10個客戶端,每個客戶端同時寫入10個文件,每個文件10G(每個客戶端寫入100G文件),查看寫入數(shù)據(jù)花費的時間。經(jīng)測試發(fā)現(xiàn),采用普通存儲服務(wù)器進行數(shù)據(jù)讀寫時,10個客戶端的網(wǎng)絡(luò)帶寬分別是17379KB/s、19190KB/s、17270KB/s、21826KB/s、17028KB/s、25977KB/s、22274KB/s、16661KB/s、16818KB/s和16818KB/s。普通緩存系統(tǒng)中每一個客戶端存儲數(shù)據(jù)的平均網(wǎng)絡(luò)傳輸速度為1974KB/S。采用本發(fā)明緩存系統(tǒng)進行數(shù)據(jù)讀寫時,10個客戶端的網(wǎng)絡(luò)帶寬分別是74729KB/s、75146KB/s、74663KB/s、74286KB/s、74364KB/s、74637KB/s、74947KB/s、74558KB/s、75325KB/s和75325KB/s。因此,本發(fā)明緩存系統(tǒng)內(nèi)每一個客戶端到云存儲的平均網(wǎng)絡(luò)傳輸速度為7671KB/S,4個節(jié)點云存儲最大可提供767MB/s的網(wǎng)絡(luò)聚合帶寬。因此,該方法在局域網(wǎng)內(nèi)對云存儲的數(shù)據(jù)讀寫確實有較大的改進,達到了預(yù)期的目的。注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。當前第1頁1 2 3 
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1