專利名稱:一種桌面虛擬化環境下的鏡像分布式存儲方法
技術領域:
本發明屬于桌面虛擬應用領域,具體涉及桌面虛擬化環境下,虛擬機磁盤鏡像文件分布式存儲方法。
背景技術:
桌面虛擬化是指計算機的桌面進行虛擬化,使用戶桌面集中運行于數據中心虛擬機中,已達到桌面使用的安全性和靈活。用戶可以通過任何設備,在任何地點訪問到個性化的桌面系統。隨著桌面虛擬化技術的普及,越來越多的企業都開始部署桌面虛擬化系統。目前虛擬桌面鏡像存儲系統大部分采用SAN,NAS等集中式存儲。如Citrix桌面虛擬化產品一般采用NAS存儲。VMware的桌面虛擬化產品采用SAN存儲,使用VMFS集群文件系統管理SAN存儲設備。而SAN,NAS等系統存在著價格昂貴,存儲的吞吐量率有限,難以動態的擴展系統。因此并不能滿足中大型企業,廉價大規模部署桌面虛擬化的需求。
發明內容
為了克服目前桌面虛擬化環境中SAN, NAS等存儲系統的價格昂貴,可擴展性不佳的情況。本發明提供了一種廉價的,高I0PS,高可擴展性的分布式虛擬機磁盤鏡像組織,存儲方案。一種桌面虛擬化環境下的虛擬機磁盤鏡像分布式存儲方法,其特征在于,該方法包括以下步驟(1)接收用戶的虛擬機存儲請求;(2)從所述讀請求中提取訪問地址;(3)若存儲請求為讀請求,則進入步驟(4);若存儲請求為寫請求,則進入步驟 (7);(4)在本地緩存中查詢是否存在所述訪問地址對應的數據塊,若存在,則從本地緩存中讀取所述數據塊,結束,否則進入步驟(5);(5)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的地址索引找到對應的存儲節點;(6)在所述存儲節點上以所述訪問地址的后31位作為地址索引查找數據塊,讀取所述數據塊并保存到本地緩存中,在本地緩存中使用所述訪問地址建立所述數據塊的地址索引,結束;(7)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的地址索引找到對應的存儲節點;(8)在所述存儲節點內,將數據寫入所述存儲節點,并使用所述訪問地址的后31 位建立寫入數據的地址索引。進一步地,在所述本地緩存中采用基數樹或哈希算法或B+樹建立數據塊的地址索引。
進一步地,在所述存儲節點中采用B+樹建立寫入數據的地址索引。進一步地,若所述本地緩存的存儲量達到緩存閾值,則淘汰訪問次數最少的數據塊。進一步地,所述步驟(8)具體為首先將數據記錄到日志中,使用所述訪問地址的后31位建立寫入數據的地址索引;然后將數據寫入內存,等到內存數據達到存儲閾值時, 集中寫入磁盤。本發明的有益效果如下1.存儲系統成本低,本發明中存儲系統所使用的設備,均為普通廉價的PC設備, 不涉及到昂貴的SAN,磁盤陣列等設備,從而減少了系統的硬件投入成本。2.可擴展性高,不存在單點性能瓶頸。本發明采用去中心化存儲,采用一致性哈希算法在存儲節點中尋址,沒有單點性能瓶頸,可擴展性高。3.性能高符合桌面虛擬化存儲的應用場合。本發明針對存儲節點的數據存儲格式上采用B+樹存儲,計算節點上緩存根鏡像等方式提供系統的讀寫性能。
圖1為本發明的系統總體流程圖;圖2為磁盤鏡像緩存策略流程圖;圖3為數據分布式訪問策略流程圖;圖4為存儲策略流程圖。
具體實施例方式下面結合附圖和實例對本發明進行詳細說明。本發明主要在分布式環境下針對桌面虛擬化的小塊10,高IOPS高可擴展性需求設計。如圖1所示,本發明整體流程如下(1)接收用戶的虛擬機存儲請求;(2)從所述讀請求中提取訪問地址;(3)若存儲請求為讀請求,則進入步驟(4);若存儲請求為寫請求,則進入步驟 (7);(4)在本地緩存中查詢是否存在所述訪問地址對應的數據塊,若存在,則從本地緩存中讀取所述數據塊,結束,否則進入步驟(5);(5)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的哈希值找到對應的存儲節點;(6)在所述數據存儲節點上以所述訪問地址的后31位作為索引查找數據塊,讀取所述數據塊并保存到本地緩存中,在本地緩存中使用所述訪問地址建立所述數據塊的地址索引,結束;(7)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的哈希值找到對應的存儲節點;(8)在所述存儲節點內,將數據寫入所述存儲節點,并使用所述訪問地址的后31 位建立寫入數據的地址索引。
本發明方法體現了三個核心策略一、磁盤鏡像緩存策略在桌面虛擬化環境下,一臺物理機上多個虛擬機,會同時使用到同一個根鏡像的數據塊。通過緩存這些數據塊到物理機本地磁盤,可以減少整個分布式系統的壓力。在所述本地緩存中采用基數樹(radix tree)或哈希算法或B+樹建立數據塊的地址索引。參見圖2,下面以基數樹算法示例說明(1)從虛擬機的存儲請求獲取訪問地址a ;(2)在緩存索引基數樹上查找訪問地址a ;(3)如果地址a在緩存索引中,從本地緩存中讀取數據塊,并增加數據塊命中次數,結束,否則,跳轉到步驟(4)。(4)根據訪問地址a,采用數據分布式訪問策略讀取數據塊。(5)判斷緩存是否已經滿,如果沒有滿則把數據寫入到緩存,否則淘汰命中次數最少的數據塊。二、數據分布式訪問策略存儲系統中采用去中心化的存儲結構,系統中不存在單點性能瓶頸。整個系統的尋址策略采用兩級尋址模型。第一級,是存儲節點之間的路由尋址。第二級是存儲節點內文件之間的尋址。虛擬機中每次訪問數據塊的地址長度為64位,在系統中對64位地址進行映射使之能夠使虛擬機磁盤鏡像能夠均勻分布在存儲系統中。64位地址分為兩部分前 33位用于尋址存儲節點,后31位用于在存儲節點文件中尋址數據塊。前33位尋址虛擬機的方式采用一致性哈希算法,后31位采用B+樹尋址。參見圖3,具體步驟如下(1)計算虛擬機訪問地址的前33位的MD5值;(2)依據MD5值利用一致性哈希算法查找出存儲數據的存儲節點;(3)在存儲節點中,找到以訪問地址的前33位命名的存儲文件;(4)以訪問地址的后31位為地址,在存儲文件中訪問數據塊;(5)把數據塊訪問的結果返回給虛擬機。三、存儲策略首先將數據記錄到日志中,使用所述訪問地址的后31位建立寫入數據的地址索引;然后再將數據寫入內存,等到內存數據達到存儲閾值時,集中寫入磁盤。作為優選,存儲節點采用B+樹建立寫入數據的地址索引。數據的訪問方式大致如下讀數據(1)根據地址,在內存中的B+樹中讀取出在數據文件中的地址(2)在數據文件中讀取出數據塊。寫數據塊(1)在日志中記錄寫數據地址及數據塊內容(2)修改B+樹索引更具體的實現方式為寫數據先把數據寫在日志中,然后在內存中存儲一份,當內存緩沖區中數據達到存儲閾值的時候,啟動Dump線程,把數據順序寫到磁盤中,通過采用這種方式把隨機的寫轉化為順序寫,提高存儲系統的寫性能。存儲閾值根據存儲節點內存大小設置,一般設置為400 600M。參見圖4,具體步驟如下(1)在日志中記錄寫數據塊的地址和數據塊的內容;(2)在B+樹索引中加入數據塊的地址索引;(3)在內存緩沖區中存儲數據塊;(4)如果內存緩沖區超過閾值,啟動Dump線程。Dump線程順序的把數據塊寫入到緩沖區中;(5)返回結果給客戶端。本發明不僅局限于上述具體實施方式
,本領域一般技術人員根據本發明公開的內容,可以采用其它多種具體實施方式
實施本發明,因此,凡是采用本發明的設計結構和思路,做一些簡單的變化或更改的設計,都落入本發明保護的范圍。
權利要求
1.一種桌面虛擬化環境下的虛擬機磁盤鏡像分布式存儲方法,其特征在于,該方法包括以下步驟(1)接收用戶的虛擬機存儲請求;(2)從所述讀請求中提取訪問地址;(3)若存儲請求為讀請求,則進入步驟(4);若存儲請求為寫請求,則進入步驟(7);(4)在本地緩存中查詢是否存在所述訪問地址對應的數據塊,若存在,則從本地緩存中讀取所述數據塊,結束,否則進入步驟(5);(5)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的地址索引找到對應的存儲節點;(6)在所述存儲節點上以所述訪問地址的后31位作為地址索引查找數據塊,讀取所述數據塊并保存到本地緩存中,在本地緩存中使用所述訪問地址建立所述數據塊的地址索引,結束;(7)采用一致性哈希算法對所述訪問地址的前33位作哈希計算,依據計算得到的地址索引找到對應的存儲節點;(8)在所述存儲節點內,將數據寫入所述存儲節點,并使用所述訪問地址的后31位建立寫入數據的地址索引。
2.根據權利要求1所述的虛擬機磁盤鏡像分布式存儲方法,其特征在于,在所述本地緩存中采用基數樹或哈希算法或B+樹建立數據塊的地址索引。
3.根據權利要求1所述的虛擬機磁盤鏡像分布式存儲方法,其特征在于,在所述存儲節點中采用B+樹建立寫入數據的地址索引。
4.根據權利要求1所述的虛擬機磁盤鏡像分布式存儲方法,其特征在于,若所述本地緩存的存儲量達到緩存閾值,則淘汰訪問次數最少的數據塊。
5.根據權利要求1所述的虛擬機磁盤鏡像分布式存儲方法,其特征在于,所述步驟(8) 具體為首先將數據記錄到日志中,使用所述訪問地址的后31位建立寫入數據的地址索引;然后將數據寫入內存,等到內存數據達到存儲閾值時,集中寫入磁盤。
全文摘要
本發明提供了一種桌面虛擬化環境下的虛擬機磁盤鏡像分布式存儲方法,具體為讀數據,首選本地緩存,若本地緩存中不存在對應數據,則訪問存儲節點;依據訪問地址的前33位索引到存儲節點,在存儲節點中依據訪問地址的后31位索引到數據,將讀取的數據寫入本地緩存;寫數據,依據訪問地址的前33位索引到存儲節點,將數據寫入存儲節點,并使用訪問地址的后31位建立數據的地址索引。本發明不涉及昂貴的SAN、磁盤陣列等設備從而減少了系統的硬件投入成本,采用去中心化存儲提高了擴展性,符合桌面虛擬化存儲的應用場合。
文檔編號G06F17/30GK102521330SQ20111040202
公開日2012年6月27日 申請日期2011年12月7日 優先權日2011年12月7日
發明者姜躍, 廖小飛, 李鶴, 金海 申請人:華中科技大學