一種分布式存儲空間的管理方法和分布式存儲系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種分布式存儲空間的管理方法和分布式存儲系統(tǒng),該方案中當(dāng)?shù)谝豢刂乒?jié)點確定出第一分配隊列的當(dāng)前容量小于預(yù)先設(shè)置的容量閾值時,獲取未分配的存儲空間的存儲空間標(biāo)識信息,并將獲取的存儲空間標(biāo)識信息存儲到第一分配隊列中,以便第二控制節(jié)點能夠從第一分配隊列中獲取存儲的存儲空間標(biāo)識信息,該方案通過使用隊列完成存儲空間的管理,使第一控制節(jié)點和第二控制節(jié)點在操作存儲空間信息時是兩個完全獨立的過程,不會相互影響,因此相對于改變現(xiàn)有的事務(wù)機制而言,本方案實現(xiàn)簡單,易于維護和擴展,存儲空間的分配效率也相應(yīng)提高。
【專利說明】一種分布式存儲空間的管理方法和分布式存儲系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及磁盤存儲【技術(shù)領(lǐng)域】,尤其是涉及一種分布式存儲空間的管理方法和分布式存儲系統(tǒng)。
【背景技術(shù)】
[0002]隨著全球進入大數(shù)據(jù)時代,存儲技術(shù)和存儲業(yè)務(wù)不斷革新,存儲系統(tǒng)的形式得到了極大延伸。隨著快照技術(shù)和數(shù)據(jù)保護技術(shù)被相繼提出,包括最近非常熱門的“虛擬機”和“云計算”技術(shù),都極大的促進了存儲技術(shù)的發(fā)展。
[0003]在存儲技術(shù)中,存儲空間的分配是最基本也是最重要的技術(shù)之一。目前有一種利用堆棧和事務(wù)機制實現(xiàn)的存儲空間的分配方案:將包含有存儲設(shè)備服務(wù)器的存儲系統(tǒng)的容量合并成統(tǒng)一的存儲池Pool,當(dāng)終端側(cè)向存儲設(shè)備服務(wù)器發(fā)送存儲空間分配請求時,存儲設(shè)備服務(wù)器中的控制器作為邏輯卷Volume和Pool的工作控制器,控制Volume從堆棧中獲取已分配的存儲空間的信息,比如存儲空間的標(biāo)識(Identity,ID),這一操作屬于前臺事務(wù);而堆棧中已分配的存儲空間的ID是控制器控制Pool分配存儲空間,再將分配的存儲空間的存儲空間的ID向堆棧中添加的,這一操作屬于后臺事務(wù)。
[0004]目前為了提高存儲設(shè)備服務(wù)器存儲數(shù)據(jù)時的安全性,通常一個存儲設(shè)備服務(wù)器中都設(shè)置有兩個控制器,包括一個主控制器和一個備用控制器。那么當(dāng)Volume和Pool的工作控制器不在同一節(jié)點時,如圖1所示,為Volume和Pool的工作控制器不在同一節(jié)點時的存儲空間分配示意圖,其中,A控制器作為Volume的工作控制器,B控制器作為Pool的工作控制器。參考圖1,后臺事務(wù)的兩個階段“控制Pool分配存儲空間”和“向堆棧中添加分配的存儲空間的ID”需要由A控制器和B控制器分別完成,而傳統(tǒng)的事務(wù)機制只支持在一個控制器上執(zhí)行一系列操作,無法支持這種跨控制器的操作。因此,必須對傳統(tǒng)的事務(wù)機制進行改進,需要完成雙端鏡像、數(shù)據(jù)轉(zhuǎn)發(fā)、雙端互斥、狀態(tài)遷移等一系列操作,這樣做過于復(fù)雜繁瑣,可擴展性和可維護性也比較差,還會影響存儲空間的分配效率。
[0005]另外,A控制器既要從堆棧中獲取存儲空間的ID,又要在B控制器的控制下向堆棧添加存儲空間的ID,即前臺事務(wù)和后臺事務(wù)需要對同一個堆棧進行修改,該修改過程包括內(nèi)存準(zhǔn)備階段和提交硬盤階段。那么當(dāng)前臺事務(wù)和后臺事務(wù)同時對同一個堆棧進行修改時,為了避免兩個事務(wù)相互影響而無法滿足事務(wù)的數(shù)據(jù)一致性的特點,可以在內(nèi)存準(zhǔn)備階段加鎖保護,使這兩個事務(wù)可以分先后順序執(zhí)行,不會相互影響,但是在提交硬盤階段卻無法加鎖保護,所以仍然可能導(dǎo)致事務(wù)的數(shù)據(jù)不一致,因此同樣要對傳統(tǒng)的事務(wù)機制進行改進,仍然存在上述的復(fù)雜繁瑣、可擴展性和可維護性比較差和存儲空間的分配效率較低的問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供一種分布式存儲空間的管理方法和分布式存儲系統(tǒng),用以解決現(xiàn)有技術(shù)中當(dāng)邏輯卷和存儲池的工作控制器不在同一節(jié)點時存在的分配過程復(fù)雜繁瑣、可擴展性和可維護性比較差和存儲空間的分配效率較低的問題。
[0007]第一方面,提供一種分布式存儲空間的管理方法,應(yīng)用于分布式存儲系統(tǒng)中,所述分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,在創(chuàng)建邏輯卷時,所述邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點,所述邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點,所述方法包括:
[0008]第一控制節(jié)點確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;所述第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲取;
[0009]當(dāng)所述容量小于預(yù)先設(shè)置的容量閾值時,獲取所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息,和/或第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;其中,所述第二分配隊列中存儲的存儲空間標(biāo)識信息是除所述第一控制節(jié)點和所述第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的;
[0010]將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到所述第一分配隊列中;
[0011]其中,每個存儲空間標(biāo)識信息所指示的存儲空間均是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元CK,再對由來自不同硬盤的CK組成的存儲集合CKG進行劃分得到的。
[0012]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述方法還包括:
[0013]所述第二控制節(jié)點接收到存儲空間分配請求消息后,從所述第一分配隊列中獲取與所述存儲空間分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息;
[0014]將獲取到的存儲空間標(biāo)識信息反饋給所述存儲空間分配請求消息的發(fā)送方,使所述發(fā)送方能夠?qū)?shù)據(jù)存儲到由獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中。
[0015]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,每個存儲空間標(biāo)識信息所指示的存儲空間的大小均相同;則
[0016]第一控制節(jié)點確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量,具體包括:
[0017]根據(jù)所述第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲空間的大小,確定所述第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;
[0018]其中,所述頭指針指向所述第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,所述尾指針指向所述第一分配隊列中未存儲存儲空間標(biāo)識信息的起始位置。
[0019]結(jié)合第一方面、第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,還包括:
[0020]第一控制節(jié)點從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息;
[0021]釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
[0022]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間,具體包括:
[0023]判斷所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器;[0024]當(dāng)判斷結(jié)果為是時,將所述待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從所述第二釋放隊列中獲取所述待釋放的存儲空間標(biāo)識信息,并將所述其它控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間;
[0025]當(dāng)判斷結(jié)果為否時,將所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
[0026]第二方面,提供一種分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,在創(chuàng)建邏輯卷時,所述邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點,所述邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點,其中:
[0027]所述第一控制節(jié)點,用于確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;當(dāng)所述容量小于預(yù)先設(shè)置的容量閾值時,獲取所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息,和/或第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到所述第一分配隊列中;
[0028]其中,所述第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲??;所述第二分配隊列中存儲的存儲空間標(biāo)識信息是除所述第一控制節(jié)點和所述第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的;以及每個存儲空間標(biāo)識信息所指示的存儲空間均是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元CK,再對由來自不同硬盤的CK組成的存儲集合CKG進行劃分得到的。
[0029]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述系統(tǒng)還包括:
[0030]所述第二控制節(jié)點,用于接收到存儲空間分配請求消息后,從所述第一分配隊列中獲取與所述存儲空間分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息;將獲取到的存儲空間標(biāo)識信息反饋給所述存儲空間分配請求消息的發(fā)送方,使所述發(fā)送方能夠?qū)?shù)據(jù)存儲到由獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中
[0031]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,每個存儲空間標(biāo)識信息所指示的存儲空間的大小均相同;則
[0032]所述第一控制節(jié)點,具體用于:
[0033]根據(jù)所述第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲空間的大小,確定所述第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;其中,所述頭指針指向所述第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,所述尾指針指向所述第一分配隊列中未存儲存儲空間標(biāo)識信息的起始位置。
[0034]結(jié)合第二方面、第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述第一控制節(jié)點,還用于:
[0035]從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息,并釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
[0036]結(jié)合第二方面的第三種可能的實現(xiàn)方式中,在第四種可能的實現(xiàn)方式中,所述第一控制節(jié)點,具體用于:
[0037]判斷所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器;當(dāng)判斷結(jié)果為是時,將所述待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從所述第二釋放隊列中獲取所述待釋放的存儲空間標(biāo)識信息,并將所述其它控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間;當(dāng)判斷結(jié)果為否時,將所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
[0038]本發(fā)明實施例中,當(dāng)?shù)谝豢刂乒?jié)點確定出第一分配隊列的當(dāng)前容量小于預(yù)先設(shè)置的容量閾值時,獲取未分配的存儲空間的存儲空間標(biāo)識信息,并將獲取的存儲空間標(biāo)識信息存儲到第一分配隊列中,以便第二控制節(jié)點能夠從第一分配隊列中獲取存儲的存儲空間標(biāo)識信息,該方案通過使用隊列完成存儲空間的管理,使第一控制節(jié)點和第二控制節(jié)點在操作存儲空間信息時是兩個完全獨立的過程,不會相互影響,因此相對于改變現(xiàn)有的事務(wù)機制而言,本方案實現(xiàn)簡單,易于維護和擴展,存儲空間的分配效率也相應(yīng)提高。
【專利附圖】
【附圖說明】
[0039]圖1為現(xiàn)有技術(shù)中Volume和Pool的工作控制器不在同一節(jié)點時的存儲空間分配示意圖;
[0040]圖2為本發(fā)明實施例一提供的一種分布式存儲空間的管理方法的原理流程圖;
[0041]圖3為本發(fā)明實施例二提供的一種隊列的結(jié)構(gòu)示意圖;
[0042]圖4為本發(fā)明實施例二提供的一種分布式存儲空間的分配方法的示意圖;
[0043]圖5為本發(fā)明實施例二提供的基于上述原理實現(xiàn)的Pool控制器和Volume控制器之間同步的不意圖;
[0044]圖6為本發(fā)明實施例三提供的一種分布式存儲空間的分配方法在實際應(yīng)用中的實現(xiàn)流程圖;
[0045]圖7為本發(fā)明實施例四提供的一種分布式存儲系統(tǒng)的結(jié)構(gòu)示意圖;
[0046]圖8為本發(fā)明實施例五提供的一種第一控制節(jié)點的硬件結(jié)構(gòu)示意圖。
【具體實施方式】
[0047]為了解決現(xiàn)有技術(shù)中當(dāng)邏輯卷和存儲池的工作控制器不在同一節(jié)點時存在的分配過程復(fù)雜繁瑣、可擴展性和可維護性比較差和存儲空間的分配效率較低的問題,本發(fā)明實施例提出了一種分布式存儲空間的管理方法和分布式存儲系統(tǒng)。該方案中當(dāng)?shù)谝豢刂乒?jié)點確定出第一分配隊列的當(dāng)前容量小于預(yù)先設(shè)置的容量閾值時,獲取未分配的存儲空間的存儲空間標(biāo)識信息,并將獲取的存儲空間標(biāo)識信息存儲到第一分配隊列中,以便第二控制節(jié)點能夠從第一分配隊列中獲取存儲的存儲空間標(biāo)識信息,該方案通過使用隊列完成存儲空間的管理,使第一控制節(jié)點和第二控制節(jié)點在操作存儲空間信息時是兩個完全獨立的過程,不會相互影響,因此相對于改變現(xiàn)有的事務(wù)機制而言,本方案實現(xiàn)簡單,易于維護和擴展,存儲空間的分配效率也相應(yīng)提高。
[0048]下面將結(jié)合各個附圖對本發(fā)明實施例技術(shù)方案的主要實現(xiàn)原理、【具體實施方式】及其對應(yīng)能夠達到的有益效果進行詳細(xì)地闡述。
[0049]實施例一[0050]本發(fā)明實施例一提出一種分布式存儲空間的管理方法,該方法應(yīng)用于分布式存儲系統(tǒng)中,該分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,在創(chuàng)建邏輯卷時,邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點,邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點,如圖2所示,其處理流程具體包括:
[0051]步驟21,第一控制節(jié)點確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;其中,該第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲??;
[0052]當(dāng)分布式存儲系統(tǒng)中有多個存儲空間服務(wù)器時,此時存儲池Pool由多個存儲空間服務(wù)器中的存儲空間共同構(gòu)成,在每個存儲空間服務(wù)器上均會存在一個Pool的工作控制器。當(dāng)創(chuàng)建邏輯卷時,會指定一個存儲空間服務(wù)器為該邏輯卷的籍貫存儲空間服務(wù)器,即在籍貫存儲空間服務(wù)器上創(chuàng)建該邏輯卷(如果不指定的話,則默認(rèn)該邏輯卷的工作控制器所在的存儲空間服務(wù)器為籍貫存儲空間服務(wù)器),則邏輯卷對應(yīng)的存儲池的工作控制器就是:邏輯卷所在的籍貫存儲空間服務(wù)器上該邏輯卷所屬的存儲池的工作控制器。
[0053]本發(fā)明實施例中,每個存儲空間標(biāo)識信息所指示的存儲空間可以是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元(Chunk,CK),再對由來自不同硬盤的CK組成的存儲集合(Chunk Group, CKG)進行劃分得到的,具體的,首先將Pool中每個硬盤的存儲空間劃分成許多較小的CK,而來自不同硬盤的若干個CK共同組成一個CKG,再將每個CKG劃分成許多更小的存儲單元,可以稱為Extent,而Extent的ID (稱為ExtentID)即為存儲空間標(biāo)識信息。這種存儲空間的劃分方法能夠使Pool中每個硬盤的讀寫10負(fù)載均衡,從而消除單盤熱點。
[0054]進一步的,當(dāng)每個存儲空間標(biāo)識信息所指示的存儲空間大小均相同時,則可以按照下述方式來確定第一分配隊列的當(dāng)前容量:根據(jù)該第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲的大小,來確定該第一分配隊列的當(dāng)前容量,其中頭指針指向第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,尾指針則指向第一分配隊列中未分配存儲空間標(biāo)識信息的起始位置。
[0055]步驟22,當(dāng)?shù)谝环峙潢犃兄写鎯Φ拇鎯臻g標(biāo)識信息所指示的存儲空間的容量小于預(yù)先設(shè)置的容量閾值時,獲取未分配的存儲空間的存儲空間標(biāo)識信息;
[0056]其中,在獲取未分配的存儲空間的存儲空間標(biāo)識信息時,可以獲取第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;
[0057]由于第一控制節(jié)點所在的存儲設(shè)備服務(wù)器能容納的硬盤數(shù)量有限,存儲空間也有限,因此不能夠滿足目前大數(shù)據(jù)大業(yè)務(wù)的分布式存儲。為了使可用的存儲空間更多,可以利用多個存儲設(shè)備服務(wù)器共同實現(xiàn)存儲空間的共享和分配,因此還可以采用下述方式來獲取未分配的存儲空間的存儲空間標(biāo)識信息:
[0058]獲取第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;其中,第二分配隊列中存儲的存儲空間標(biāo)識信息是除第一控制節(jié)點和第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的。
[0059]步驟23,將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到上述第一分配隊列中,以便第二控制節(jié)點能夠從上述第一分配隊列中獲取存儲的存儲空間標(biāo)識信息。
[0060]其中,當(dāng)?shù)诙刂乒?jié)點接收到存儲空間分配請求消息后,從該第一分配隊列中獲取與存儲空間分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息,然后將獲取到的存儲空間標(biāo)識信息反饋給存儲空間分配請求消息的發(fā)送方,使該發(fā)送方能夠?qū)?shù)據(jù)存儲至岫獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中。
[0061]在某些情況下,例如當(dāng)?shù)诙刂乒?jié)點從第一分配隊列中獲取的存儲空間標(biāo)識信息所指示的存儲空間不再被使用或者終止使用時,可以執(zhí)行下述步驟24和步驟25以釋放存儲空間:
[0062]步驟24,從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息;其中,第一釋放隊列中的存儲空間標(biāo)識信息是第二控制節(jié)點存儲的。
[0063]步驟25,釋放與該待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
[0064]其中,該步驟可以具體包括:
[0065]判斷該待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器;
[0066]當(dāng)判斷結(jié)果為是時,將該待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從該第二釋放隊列中獲取該待釋放的存儲空間標(biāo)識信息,并將自身所在的存儲設(shè)備服務(wù)器中與該待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間;
[0067]當(dāng)判斷結(jié)果為否時,說明該待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間來自于第一控制節(jié)點所在的存儲設(shè)備服務(wù)器,則直接將第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
[0068]本發(fā)明實施例中,通過使用隊列完成存儲空間的分配,使第一控制節(jié)點和第二控制節(jié)點在操作存儲空間信息時是兩個完全獨立的過程,不會相互影響,因此與改變現(xiàn)有的事務(wù)機制的方法相比,本方案實現(xiàn)簡單,易于維護和擴展,存儲空間的分配效率也相應(yīng)提聞。
[0069]實施例二
[0070]本發(fā)明實施例二是在圖2所示方法基礎(chǔ)上對本發(fā)明的分布式存儲空間的分配方法的具體實現(xiàn)過程進行詳細(xì)說明。
[0071]如圖3所示,為本發(fā)明實施例二提供的一種隊列的結(jié)構(gòu)示意圖。其中,上述實施例一中涉及到的第一分配隊列、第二分配隊列、第一釋放隊列和第二釋放隊列均是基于本發(fā)明實施例二提供的該隊列的原理實現(xiàn)的。
[0072]參考圖3,本發(fā)明實施例中的第一控制節(jié)點為負(fù)責(zé)向隊列中存儲存儲空間標(biāo)識信息的控制節(jié)點,因此稱其為生產(chǎn)端,而第二控制節(jié)點為負(fù)責(zé)從隊列中獲取存儲空間標(biāo)識信息的控制節(jié)點,因此稱其為消費纟而。該隊列中包含:頭指針Head、尾指針Tail,以及Head與Tail之間的緩存區(qū)Buffer。以本發(fā)明實施例中的第一分配隊列為例,Head指向第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,而Tail則指向第一分配隊列中未分配存儲空間標(biāo)識信息的起始位置,Buffer為Head和Tail之間的區(qū)域。生產(chǎn)端和消費端在內(nèi)存空間中共同維護該隊列,而在硬盤空間中,消費端負(fù)責(zé)維護隊列的Head,生產(chǎn)端負(fù)責(zé)維護隊列的 Tail 和 Buffer0
[0073]較佳的,本發(fā)明實施例中的隊列可以采用循環(huán)隊列。
[0074]如圖4所示,為本發(fā)明實施例二提供的基于上述隊列的一種分布式存儲空間的管理方法的示意圖。其中,針對消費端而言,只需根據(jù)隊列中的Head從隊列獲取Extent ID;而針對生產(chǎn)端而言,確定出隊列的當(dāng)前容量小于預(yù)先設(shè)置的容量閾值時,啟動后臺分配,獲取未分配的存儲空間的Extent ID,并根據(jù)隊列中的Tail,將獲取的Extent ID存儲到隊列中。
[0075]較佳的,消費端在從隊列獲取Extent ID后,可以將隊列中Head當(dāng)前的位置信息同步給生產(chǎn)端,同理,生產(chǎn)端也可以在將獲取的Extent ID存儲到隊列中之后,再將隊列中Tail以及Buffer當(dāng)前的位置信息同步給消費端。
[0076]如圖5所示,為本發(fā)明實施例二提供的基于上述原理實現(xiàn)的Pool工作控制器和Volume工作控制器之間同步的示意圖。其中,Pool工作控制器為本發(fā)明實施例中的第一控制節(jié)點,該Pool上的Volume的Volume工作控制器為本發(fā)明實施例中的第二控制節(jié)點。
[0077]參考圖5,Pool工作控制器和Volume工作控制器可以分布在同一個存儲設(shè)備服務(wù)器上的不同控制節(jié)點上,也可以分布在不同存儲設(shè)備服務(wù)器上的不同控制節(jié)點上。這樣Pool工作控制器分配的Extent ID就要通過隊列跨控制器傳送到Volume工作控制器,同樣Volume工作控制器釋放的Extent ID就要通過隊列跨控制器傳送到Pool工作控制器,而且隊列中的Head、Tail以及的位置信息必須保存在硬盤空間上,以便系統(tǒng)故障后可以上電恢復(fù)。
[0078]實施例三
[0079]下面以存儲空間的分配過程為例,詳細(xì)介紹本發(fā)明實施例提供的一種分布式存儲空間的分配方法在實際應(yīng)用中的實現(xiàn)過程。如圖6所示,為本發(fā)明實施例三提供的一種分布式存儲空間的分配方法在實際應(yīng)用中的實現(xiàn)流程圖。Volume Queue相當(dāng)于本發(fā)明實施例中的第一分配隊列,用于實現(xiàn)跨控制節(jié)點的存儲空間的分配,Pool Queue相當(dāng)于本發(fā)明實施例中的第二分配隊列,用于實現(xiàn)跨存儲設(shè)備服務(wù)器的存儲空間的分配;本實施例中的第一分配隊列和第二分配隊列均為循環(huán)隊列。
[0080]本發(fā)明實施例的Pool由多個存儲設(shè)備服務(wù)器(本發(fā)明實施例中可以稱存儲設(shè)備服務(wù)器為引擎)包含的存儲空間組成,在每個存儲設(shè)備服務(wù)器上都存在一個該Pool的控制器,本發(fā)明實施例中將除第一控制節(jié)點外的其它控制器所在節(jié)點稱為其它控制節(jié)點。
[0081]1> Volume Queue:Volume 工作控制器為 Extent ID 的消費端,控制 Volume QueueHead, Volume 的 Home Pair Pool 工作控制器為 Extent ID 的生產(chǎn)端,控制 Volume QueueTail。
[0082]其中,每個Volume在創(chuàng)建時,都會被指定一個引擎作為該Volume的籍貫引擎,即Home Pair (如果不指定的話,則默認(rèn)為該Volume的Volume工作控制器所在引擎),所以Volume的Home Pair Pool工作控制器就是:Volume所在的籍貫引擎上該Volume所屬Pool的Pool工作控制器。
[0083]2、Pool Queue:Volume 的 Home Pair Pool 工作控制器為 Extent ID 的消費端,控制Pool Queue Head, Extent所屬Pool工作控制器為Extent ID的生產(chǎn)端,控制Pool QueueTail。
[0084]而消費端和生產(chǎn)端的具體操作過程在上述實施例二中已詳細(xì)介紹,在此不再贅述。
[0085]本發(fā)明實施例中,通過隊列來完成存儲空間的分配,不僅可以實現(xiàn)跨控制節(jié)點的存儲空間管理,還能實現(xiàn)跨引擎的存儲空間管理,充分滿足了目前大數(shù)據(jù)大業(yè)務(wù)的分布式存儲需求;同時,由于不同控制節(jié)點之間在操作存儲空間信息時是兩個完全獨立的過程,不會相互影響,因此與改變現(xiàn)有的事務(wù)機制相比,本方案實現(xiàn)簡單,易于維護和擴展,存儲空間的分配效率也相應(yīng)提高,使得存儲空間的管理系統(tǒng)的整體性能大大提高。
[0086]基于上述發(fā)明構(gòu)思,本發(fā)明實施例還提供了一種分布式存儲系統(tǒng),如圖7所示,為該分布式存儲系統(tǒng)的結(jié)構(gòu)示意圖,該分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,在創(chuàng)建邏輯卷時,所述邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點72,所述邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點71,其中:
[0087]所述第一控制節(jié)點71,用于確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;當(dāng)所述容量小于預(yù)先設(shè)置的容量閾值時,獲取所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息,和/或第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到所述第一分配隊列中;
[0088]其中,所述第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲取;所述第二分配隊列中存儲的存儲空間標(biāo)識信息是除所述第一控制節(jié)點和所述第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的;以及每個存儲空間標(biāo)識信息所指示的存儲空間均是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元CK,再對由來自不同硬盤的CK組成的存儲集合CKG進行劃分得到的。
[0089]所述系統(tǒng)還包括:
[0090]所述第二控制節(jié)點72,用于接收到存儲空間分配請求消息后,從所述第一分配隊列中獲取與所述存儲空間分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息;將獲取到的存儲空間標(biāo)識信息反饋給所述存儲空間分配請求消息的發(fā)送方,使所述發(fā)送方能夠?qū)?shù)據(jù)存儲到由獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中。
[0091]當(dāng)每個存儲空間標(biāo)識信息所指示的存儲空間的大小均相同時,所述第一控制節(jié)點71,可以具體用于:
[0092]根據(jù)所述第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲空間的大小,確定所述第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;其中,所述頭指針指向所述第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,所述尾指針指向所述第一分配隊列中未存儲存儲空間標(biāo)識信息的起始位置。
[0093]可選的,所述第一控制節(jié)點71,還可以用于:
[0094]從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息,并釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
[0095]其中,所述第一控制節(jié)點71,可以具體用于:
[0096]判斷所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器;當(dāng)判斷結(jié)果為是時,將所述待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從所述第二釋放隊列中獲取所述待釋放的存儲空間標(biāo)識信息,并將所述其它控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間;當(dāng)判斷結(jié)果為否時,將所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
[0097]相應(yīng)的,本發(fā)明實施例還提供了一種第一控制節(jié)點,如圖8所示,為該第一控制節(jié)點的硬件結(jié)構(gòu)示意圖,包括:處理器81、存儲器82、通信接口 83和總線84,其中:
[0098]處理器81、存儲器82、通信接口 83通過總線84相互連接;總線84可以是外設(shè)部件互連標(biāo)準(zhǔn)(peripheral component interconnect,簡稱PCI)總線或擴展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(extended industry standard architecture,簡稱 EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖8中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0099]存儲器82,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機操作指令。存儲器82可能包含高速隨機存取存儲器(random access memory,簡稱RAM)存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。[0100]處理器81執(zhí)行存儲器82所存放的程序,用于執(zhí)行本發(fā)明實施例提供的上述分布式存儲空間的管理方法。
[0101]本領(lǐng)域的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、裝置(設(shè)備)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0102]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、裝置(設(shè)備)和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的
>J-U ρ?α裝直。
[0103]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0104]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0105]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0106]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種分布式存儲空間的管理方法,應(yīng)用于分布式存儲系統(tǒng)中,所述分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,其特征在于,在創(chuàng)建邏輯卷時,所述邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點,所述邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點,所述方法包括: 第一控制節(jié)點確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;所述第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲??; 當(dāng)所述容量小于預(yù)先設(shè)置的容量閾值時,獲取所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息,和/或第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;其中,所述第二分配隊列中存儲的存儲空間標(biāo)識信息是除所述第一控制節(jié)點和所述第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的; 將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到所述第一分配隊列中; 其中,每個存儲空間標(biāo)識信息所指示的存儲空間均是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元CK,再對由來自不同硬盤的CK組成的存儲集合CKG進行劃分得到的。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 所述第二控制節(jié)點接收到存儲空間分配請求消息后,從所述第一分配隊列中獲取與所述存儲空間分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息; 將獲取到的存儲空間標(biāo)識信息反饋給所述存儲空間分配請求消息的發(fā)送方,使所述發(fā)送方能夠?qū)?shù)據(jù)存儲到由獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中。
3.如權(quán)利要求1或2所述的方法,其特征在于,每個存儲空間標(biāo)識信息所指示的存儲空間的大小均相同;則` 第一控制節(jié)點確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量,具體包括: 根據(jù)所述第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲空間的大小,確定所述第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量; 其中,所述頭指針指向所述第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,所述尾指針指向所述第一分配隊列中未存儲存儲空間標(biāo)識信息的起始位置。
4.如權(quán)利要求1~3任一所述的方法,其特征在于,還包括: 第一控制節(jié)點從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息; 釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
5.如權(quán)利要求4所述的方法,其特征在于,釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間,具體包括: 判斷所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器; 當(dāng)判斷結(jié)果為是時,將所述待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從所述第二釋放隊列中獲取所述待釋放的存儲空間標(biāo)識信息,并將所述其它控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間; 當(dāng)判斷結(jié)果為否時,將所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
6.—種分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)中包含至少一個存儲空間服務(wù)器,其特征在于,在創(chuàng)建邏輯卷時,所述邏輯卷的工作控制器所在節(jié)點為第二控制節(jié)點,所述邏輯卷對應(yīng)的存儲池的工作控制器所在節(jié)點為第一控制節(jié)點,其中: 所述第一控制節(jié)點,用于確定第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;當(dāng)所述容量小于預(yù)先設(shè)置的容量閾值時,獲取所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中存儲的未分配的存儲空間的存儲空間標(biāo)識信息,和/或第二分配隊列中存儲的未分配的存儲空間的存儲空間標(biāo)識信息;將獲取的未分配的存儲空間的存儲空間標(biāo)識信息存儲到所述第一分配隊列中; 其中,所述第一分配隊列中存儲的存儲空間標(biāo)識信息能夠被第二控制節(jié)點獲??;所述第二分配隊列中存儲的存儲空間標(biāo)識信息是除所述第一控制節(jié)點和所述第二控制節(jié)點之外的其它控制節(jié)點對自身所在的存儲設(shè)備服務(wù)器中未分配的存儲空間進行分配得到的;以及每個存儲空間標(biāo)識信息所指示的存儲空間均是根據(jù)對存儲空間服務(wù)器中的每個硬盤的空間進行切分得到硬盤切分單元CK,再對由來自不同硬盤的CK組成的存儲集合CKG進行劃分得到的。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 所述第二控制節(jié)點,用于接收到存儲空間分配請求消息后,從所述第一分配隊列中獲取與所述存儲空間 分配請求消息請求的存儲空間大小對應(yīng)的存儲空間標(biāo)識信息;將獲取到的存儲空間標(biāo)識信息反饋給所述存儲空間分配請求消息的發(fā)送方,使所述發(fā)送方能夠?qū)?shù)據(jù)存儲到由獲取到的存儲空間標(biāo)識信息所指示的存儲空間組成的邏輯卷中。
8.如權(quán)利要求6或7所述的系統(tǒng),其特征在于,每個存儲空間標(biāo)識信息所指示的存儲空間的大小均相同;則 所述第一控制節(jié)點,具體用于: 根據(jù)所述第一分配隊列中的頭指針、尾指針的位置信息以及每個存儲空間標(biāo)識信息所指示的存儲空間的大小,確定所述第一分配隊列中存儲的存儲空間標(biāo)識信息所指示的存儲空間的容量;其中,所述頭指針指向所述第一分配隊列中已存儲存儲空間標(biāo)識信息的起始位置,所述尾指針指向所述第一分配隊列中未存儲存儲空間標(biāo)識信息的起始位置。
9.如權(quán)利要求6~8任一項所述的系統(tǒng),其特征在于, 所述第一控制節(jié)點,還用于: 從第一釋放隊列中獲取待釋放的存儲空間標(biāo)識信息,并釋放與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述第一控制節(jié)點,具體用于: 判斷所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間是否來自除第一控制節(jié)點之外的其它控制節(jié)點所在的存儲設(shè)備服務(wù)器;當(dāng)判斷結(jié)果為是時,將所述待釋放的存儲空間標(biāo)識信息存儲到能被所述其它控制節(jié)點訪問的第二釋放隊列中,使所述其它控制節(jié)點能夠從所述第二釋放隊列中獲取所述待釋放的存儲空間標(biāo)識信息,并將所述其它控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間;當(dāng)判斷結(jié)果為否時, 將所述第一控制節(jié)點所在的存儲設(shè)備服務(wù)器中與所述待釋放的存儲空間標(biāo)識信息對應(yīng)的存儲空間標(biāo)記為未分配的存儲空間。
【文檔編號】H04L29/08GK103634379SQ201310568042
【公開日】2014年3月12日 申請日期:2013年11月13日 優(yōu)先權(quán)日:2013年11月13日
【發(fā)明者】肖祖仁 申請人:華為技術(shù)有限公司