本發(fā)明涉及一種ssd的緩存方法,尤其是涉及一種基于固態(tài)硬盤的彈性高可用緩存方法。
背景技術(shù):
ssd(固態(tài)硬盤)是一種相對于傳統(tǒng)磁盤來說,價格昂貴,容量小,但性能優(yōu)異的存儲介質(zhì)。目前在企業(yè)級的存儲市場上ssd被用來作為高性能存儲系統(tǒng)的組件。但是由于其價格昂貴,存儲系統(tǒng)中無法全部使用ssd來作為存儲介質(zhì),所以目前一般使用ssd和磁盤的混合存儲方式。該方式既可提高系統(tǒng)性能,又不至于價格過分昂貴。
混合存儲方式包含多種使用機制,其中最通用的就是緩存機制,使用ssd來作為磁盤的緩存。這樣既可以發(fā)揮出ssd的高性能,又能利用磁盤容量大、價格便宜的優(yōu)勢。
當(dāng)前基于ssd的緩存主要是以一個ssd和一個磁盤綁定的方式進行使用,該種使用方式會帶來以下缺點:
1.存儲系統(tǒng)中會存在熱點區(qū)域,一對一綁定很難發(fā)揮出多個ssd的總體性能。
2.每個ssd盤被限定給特定磁盤使用,無法在系統(tǒng)中共享所有緩存資源。
3.在系統(tǒng)維護階段,很難改變緩存的容量,需要放棄原有緩存數(shù)據(jù),重新配置緩存,運維需要大量人力物力的投入。
4.在任意一塊ssd損壞的情況下,都會導(dǎo)致緩存數(shù)據(jù)丟失。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于固態(tài)硬盤的彈性高可用緩存方法,可以最大化的發(fā)揮系統(tǒng)性能、減少系統(tǒng)運維成本并提高存儲系統(tǒng)可用性。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
一種基于固態(tài)硬盤的彈性高可用緩存方法,包括:
1)基于分布式哈希建立一具有dht環(huán)的緩存池,所述dht環(huán)上映射有多個ssd的存儲資源;
2)將磁盤地址空間映射于所述緩存池中;
3)為每個磁盤創(chuàng)建一對應(yīng)的邏輯設(shè)備,通過該邏輯設(shè)備實現(xiàn)ssd與磁盤間的數(shù)據(jù)分發(fā)。
所述步驟1)中,所述dht環(huán)通過以下方式獲得:
101)為各ssd分配一唯一的標(biāo)識id;
102)根據(jù)所述標(biāo)識id,采用分布式哈希算法將各ssd的存儲資源放置于dht環(huán)中。
所述步驟2)具體為:
201)為各磁盤分配一唯一的標(biāo)識id;
202)根據(jù)所述標(biāo)識id,對各磁盤的空間地址進行編碼;
203)將編碼后的空間地址映射到所述dht環(huán)上。
所述步驟202)中,采用的編碼方式為64位地址編碼,其中0-47位是磁盤內(nèi)部地址偏移,48-59位是磁盤的標(biāo)識iid,60-63位是保留擴展區(qū)。
所述步驟3)中,通過邏輯設(shè)備實現(xiàn)ssd與磁盤間的數(shù)據(jù)分發(fā)具體為:
邏輯設(shè)備截獲發(fā)給對應(yīng)磁盤的數(shù)據(jù),根據(jù)該磁盤的空間地址在dht環(huán)上獲得該數(shù)據(jù)對應(yīng)的ssd,實現(xiàn)緩存。
所述根據(jù)該磁盤的空間地址在dht環(huán)上獲得該數(shù)據(jù)對應(yīng)的ssd具體為:
邏輯設(shè)備根據(jù)ssd中數(shù)據(jù)塊的大小將截獲的數(shù)據(jù)切割成若干數(shù)據(jù)塊,根據(jù)各數(shù)據(jù)塊地址進行一次分布式哈希計算,獲得緩存池中對應(yīng)的ssd,再通過第二次分布式哈希計算獲得ssd內(nèi)部的數(shù)據(jù)區(qū)域。
該方法在動態(tài)調(diào)整緩存池中ssd的個數(shù)時,緩存池進行數(shù)據(jù)重新映射調(diào)整,創(chuàng)建一新dht環(huán),將原dht環(huán)上的數(shù)據(jù)遷移至所述新dht環(huán)上,不再對原dht環(huán)進行資源分配。
進行數(shù)據(jù)訪問時,首先查詢新dht環(huán)是否存在緩存,若是,則進行數(shù)據(jù)響應(yīng),若否,則對原dht環(huán)進行查詢。
該方法對臟數(shù)據(jù)進行多副本配置,將磁盤的同一個編碼地址映射到兩個不同的ssd上,在獲對應(yīng)的ssd后,按順時針方向以第一個ssd為第一副本,以第二個ssd為第二副本,以此類推,實現(xiàn)多副本緩存。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
(1)本發(fā)明根據(jù)分布式哈希(dht)算法進行數(shù)據(jù)分布,建立具有dht環(huán)的緩存池,使得緩存在使用過程中能夠把熱點磁盤或者熱點區(qū)域的數(shù)據(jù)分散到不同的ssd上,提高了數(shù)據(jù)的并行度,從而提高了系統(tǒng)性能。
(2)本發(fā)明增加、減少池中ssd盤,無需停止前臺數(shù)據(jù)訪問,緩存自身進行數(shù)據(jù)重新映射調(diào)整,根據(jù)分布式哈希算法使得數(shù)據(jù)重新均衡分布,能夠在讀、寫數(shù)據(jù)不間斷的情況下進行緩存池的擴張和收縮。
(3)本發(fā)明為緩存池提供臟數(shù)據(jù)副本機制,既可以提高系統(tǒng)的可用性,又不至于浪費過多的ssd空間。
附圖說明
圖1為本發(fā)明的ssd緩存池示意圖;
圖2為本發(fā)明的分布式哈希算法原理示意圖;
圖3為本發(fā)明中磁盤地址編碼示意圖;
圖4為ssd內(nèi)部數(shù)據(jù)區(qū)域劃分示意圖;
圖5為緩存數(shù)據(jù)分發(fā)示意圖;
圖6為數(shù)據(jù)遷移示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術(shù)方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
本實施例提供一種基于固態(tài)硬盤的彈性高可用緩存方法,包括:1)基于分布式哈希建立一具有dht環(huán)的緩存池,所述dht環(huán)上映射有多個ssd的存儲資源;2)將磁盤地址空間映射于所述緩存池中;3)為每個磁盤創(chuàng)建一對應(yīng)的邏輯設(shè)備,通過該邏輯設(shè)備實現(xiàn)ssd與磁盤間的數(shù)據(jù)分發(fā)。
1、緩存池創(chuàng)建
為各ssd分配一唯一的標(biāo)識id,根據(jù)所述標(biāo)識id,采用分布式哈希算法將各ssd的存儲資源放置于dht環(huán)中,創(chuàng)建基于分布式哈希的緩存池,其結(jié)構(gòu)如圖1所示,格式化ssd并加入到池中,加入原理示意圖如圖2所示。
ssd存儲空間被劃分成元數(shù)據(jù)區(qū)和數(shù)據(jù)區(qū),如圖4所示。元數(shù)據(jù)區(qū)用于存儲該ssd相關(guān)信息和數(shù)據(jù)映射信息。數(shù)據(jù)區(qū)劃分為同等大小的數(shù)據(jù)區(qū)域(extent),這些extent作為dht算法的基本單元,也是數(shù)據(jù)遷移的基本單元。在extent中把存儲資源劃分為同等大小數(shù)據(jù)塊(sippet),并創(chuàng)建資源分配器,用緩存資源的申請和訪問。該資源分配器可以為傳統(tǒng)jhash或者b-tree算法。
2、格式化磁盤并創(chuàng)建與磁盤相關(guān)的邏輯設(shè)備
為各磁盤分配一唯一的標(biāo)識id,根據(jù)所述標(biāo)識id,對各磁盤的空間地址進行編碼,將編碼后的空間地址映射到所述dht環(huán)上。磁盤的邏輯設(shè)備與緩存池中的ssd相關(guān)聯(lián)。
磁盤存儲空間劃分為元數(shù)據(jù)區(qū)和數(shù)據(jù)區(qū)。元數(shù)據(jù)區(qū)功能同ssd,數(shù)據(jù)區(qū)使用統(tǒng)一的線性空間訪問方式。
磁盤中的數(shù)據(jù)按照圖3所示,進行地址空間重新編碼,其中0-47位是磁盤內(nèi)部地址偏移,48-59位是磁盤id,60-63位是保留擴展區(qū)。
3、數(shù)據(jù)分發(fā)
數(shù)據(jù)首先發(fā)送到邏輯設(shè)備上,然后根據(jù)sippet的大小,數(shù)據(jù)被切割成若干對齊的數(shù)據(jù)塊,再把這些數(shù)據(jù)塊的地址按照如圖3所示方法進行編碼,用該編碼通過dht算法,計算出ssd池中與其對應(yīng)的ssd盤,再通過第二次dht算法在ssd內(nèi)部計算出與其對應(yīng)的extent。然后通過extent上的分配器查詢該地址是否在緩存中,如圖5所示。如果命中,則在ssd上進行數(shù)據(jù)響應(yīng);如果沒命中,則需要分配器從extent中分配相應(yīng)的sippet資源,然后根據(jù)寫回或者寫穿策略進行數(shù)據(jù)響應(yīng)。
如果配置臟數(shù)據(jù)多副本機制,并且數(shù)據(jù)操作為寫入操作的時候,則在第一次dht計算ssd時,計算出額外的ssd副本。讀取操作,只計算第一副本進行操作。
4、數(shù)據(jù)遷移
如圖6所示,在需要增加或者減少池中ssd的時候,無需停止前臺數(shù)據(jù)訪問,緩存自身進行數(shù)據(jù)重新映射調(diào)整,根據(jù)分布式哈希算法使得數(shù)據(jù)重新均衡分布??梢詣?chuàng)建一個新的dht環(huán)(dht2,原dht環(huán)為dht1),數(shù)據(jù)訪問的時候,需要先查詢dht2,如果沒有命中,還需要查詢dht1,如果都沒有命中,則認為緩存沒有命中,如果任何一個命中,則認為命中。
在dht1中不再進行資源分配,只進行緩存查詢。如果遷移過程中數(shù)據(jù)訪問沒有命中,則在dht2中分配緩存資源。
5、數(shù)據(jù)恢復(fù)
該方法可對臟數(shù)據(jù)進行多副本配置,將磁盤的同一個編碼地址映射到兩個不同的ssd上,在獲對應(yīng)的ssd后,按順時針方向以第一個ssd為第一副本,以第二個ssd為第二副本,以此類推,實現(xiàn)多副本緩存。
在臟數(shù)據(jù)多副本的配置下,如果一個ssd丟失,對于其上存儲的數(shù)據(jù),可以把臟數(shù)據(jù)從另一個ssd盤上的數(shù)據(jù)副本上進行數(shù)據(jù)恢復(fù),對于干凈的數(shù)據(jù),則可以直接從磁盤上進行數(shù)據(jù)恢復(fù)。根據(jù)用戶需要加入新的ssd替換原有ssd,或者直接刪除丟失的ssd,然后進行上述數(shù)據(jù)遷移即可恢復(fù)所有數(shù)據(jù)。
以上詳細描述了本發(fā)明的較佳具體實施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無需創(chuàng)造性勞動就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實驗可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護范圍內(nèi)。