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