專利名稱:構(gòu)建高可用分布式存儲系統(tǒng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,是一種可提高計算機分布式存儲系統(tǒng)高可用率的機制,特別的是建立在并行文件系統(tǒng)和分布式文件系統(tǒng)之上的計算機分布式存儲系統(tǒng)的高可用機制。
2、技術(shù)背景一個高可用系統(tǒng)是指在當(dāng)系統(tǒng)中出現(xiàn)軟件或硬件故障時還能讓計算機持續(xù)工作的可用系統(tǒng),現(xiàn)有技術(shù)是通過系統(tǒng)文件的復(fù)制來實現(xiàn)。如果一些文件不可用,其備份文件會代替其繼續(xù)工作。高可用系統(tǒng)通常由兩個或多個節(jié)點組成,這些節(jié)點通過互聯(lián)網(wǎng)絡(luò)直接或間接與客戶端相連,而每個節(jié)點有自己的本地存儲或共享相同的存儲單元。
高可用系統(tǒng)通常通過共享存儲方式或分布式存儲方式來實現(xiàn)。在共享存儲系統(tǒng)中,系統(tǒng)內(nèi)的節(jié)點共享相同的數(shù)據(jù)存儲單元,數(shù)據(jù)的同步由文件系統(tǒng)提供的鎖機制來實現(xiàn)。最常見的設(shè)計方式為主從式設(shè)計,在這種設(shè)計方式中,系統(tǒng)通常包括一個主節(jié)點和一個備份節(jié)點,主從節(jié)點有相似的硬件部件,相同的軟件和配置,通過網(wǎng)絡(luò)彼此與客戶端通信,共享相同的數(shù)據(jù)存儲單元。備份節(jié)點通過心跳機制監(jiān)視主節(jié)點,如發(fā)現(xiàn)主節(jié)點由于軟硬件故障不能保證應(yīng)用的運行,備份會自動接管其資源并接替其工作,從而保證應(yīng)用的持續(xù)運行。
在分布式存儲系統(tǒng)中,系統(tǒng)內(nèi)節(jié)點不共享相同的數(shù)據(jù)存儲單元,其數(shù)據(jù)的高可用性是通過添加額外的存儲單元和建立新的數(shù)據(jù)備份方式來實現(xiàn)。所以在分布式存儲系統(tǒng)中,建立高效的科學(xué)的數(shù)據(jù)備份方式顯得尤為重要。
3、發(fā)明內(nèi)容本發(fā)明旨在向分布式存儲系統(tǒng)之上的并行文件系統(tǒng)和分布式文件系統(tǒng)提供高可用保證。該分布式存儲系統(tǒng)由兩個或兩個以上的數(shù)據(jù)存儲節(jié)點組成,每個節(jié)點具有本地的存儲單元。數(shù)據(jù)存儲節(jié)點通過直接或間接的物理通路與客戶端相連,而存儲節(jié)點間可以有也可以沒有物理通路。
首先按照規(guī)定的順序?qū)⒋鎯ο到y(tǒng)內(nèi)數(shù)據(jù)存儲節(jié)點組成一個鏡像矢量環(huán),并確定該鏡像矢量環(huán)內(nèi)各個存儲節(jié)點的網(wǎng)絡(luò)標(biāo)識。數(shù)據(jù)的讀寫及復(fù)制規(guī)則根據(jù)文件系統(tǒng)的不同而不同,并由相應(yīng)的客戶端存取機制來完成。如果系統(tǒng)上運行并行文件系統(tǒng),一個文件的數(shù)據(jù)可以被分為多個順序連接的條塊,并且按照回路中的網(wǎng)絡(luò)標(biāo)識所規(guī)定的順序依次存放。而在運行分布式文件系統(tǒng)中,可通過虛擬邏輯矢量環(huán)來確定鄰接復(fù)制技術(shù)中數(shù)據(jù)復(fù)制的目標(biāo)節(jié)點。
系統(tǒng)的高可用程度是由可用級別來決定,我們假設(shè)存儲系統(tǒng)中,各個節(jié)點在一定時間T內(nèi)平均失效概率為P,存儲系統(tǒng)內(nèi)節(jié)點個數(shù)為N,鄰接復(fù)制的鄰接距離為m,當(dāng)且僅當(dāng)系統(tǒng)中相鄰的大于,等于m+1個節(jié)點同時失效,我們才判斷該系統(tǒng)失效。這樣我們規(guī)定可用級別為該系統(tǒng)在T時間內(nèi)一直可訪問的概率,其計算的公式為P=1-C1NPm+1(1-P)n-m-1-C1nC1n-m-1Pm+2(1-P)n-m-2-Λ-C1nCn-mn-m-1Pn-1(1-P)-Pn假設(shè)分布式存儲系統(tǒng)中可用級別的等級至少為p1,可通過以下不等式確定滿足條件最小鄰接復(fù)制的鄰接距離m值P1≤1-C1NPm+1(1-P)n-m-1-C1nC1n-m-1Pm+2(1-P)n-m-2-Λ-C1nCn-mn-m-1Pn-1(1-P)-Pn系統(tǒng)的運行管理與維護是通過文件系統(tǒng)的管理節(jié)點來實現(xiàn)的,管理節(jié)點主要負(fù)責(zé)系統(tǒng)中故障節(jié)點的恢復(fù)、向系統(tǒng)增加或減少節(jié)點,改變系統(tǒng)可用級別等管理與維護工作,但本身不提供文件訪問服務(wù)。此外,管理節(jié)點的高可用性可通過雙機熱備的形式來實現(xiàn),當(dāng)主管理節(jié)點出現(xiàn)故障時,從管理節(jié)點會接替其工作。由于管理節(jié)點所做的工作主要是與其他節(jié)點進行通信,工作負(fù)載不是很大,所以雙機熱備的管理節(jié)點本身的高可用性并不會對整個系統(tǒng)的高可用性產(chǎn)生很大影響。
在系統(tǒng)正常運行過程中,數(shù)據(jù)的一致性由客戶端的讀寫機制來完成,客戶端的讀寫機制根據(jù)文件系統(tǒng)的不同而不同。在并行文件系統(tǒng)中,客戶端對一個文件數(shù)據(jù)條塊的讀請求直接發(fā)往原始的存儲節(jié)點,并正常操作。而寫請求,則根據(jù)鄰接復(fù)制的鄰接距離m,將數(shù)據(jù)發(fā)往文件條塊所在節(jié)點和與之距離小于等于m的正向鄰接節(jié)點上,并等待所有節(jié)點的寫操作正常返回,才標(biāo)志這個寫操作成功,在分布式文件系統(tǒng)中,客戶端的讀寫機制與并行文件系統(tǒng)相同。
當(dāng)系統(tǒng)中節(jié)點出現(xiàn)故障時,首先要進行失效節(jié)點的判斷,當(dāng)客戶端對某個文件在某個節(jié)點上的數(shù)據(jù)進行訪問時,其訪問在規(guī)定的失效時間內(nèi)得不到響應(yīng),可以懷疑其失效、再重發(fā)一次讀寫請求,如果仍然在失效時間內(nèi)得不到響應(yīng),就認(rèn)為該節(jié)點失效,并在客戶端進行標(biāo)示,某個客戶端獨立判斷存儲系統(tǒng)內(nèi)各個節(jié)點是否失效。確認(rèn)存儲系統(tǒng)內(nèi)某個節(jié)點失效后,對其的讀寫請求均不能正常響應(yīng),客戶端會將讀請求轉(zhuǎn)移到其鄰接距離為1的正向鄰接點,并等待鄰接點返回響應(yīng),如果鄰接距離為1的正向鄰接節(jié)點失效,則轉(zhuǎn)向鄰接距離為2的正向鄰接節(jié)點,依次直至鄰接距離為m的正向鄰接節(jié)點,如果鄰接距離為m的正向鄰接節(jié)點也失效,則系統(tǒng)失效;客戶端根據(jù)失效判斷機制判斷出某個節(jié)點失效后,會通知管理節(jié)點,并在客戶端設(shè)置失效的標(biāo)志,而且不會再向該節(jié)點發(fā)送寫請求,并只等待到其余相關(guān)節(jié)點的響應(yīng)即認(rèn)為操作成功。
當(dāng)故障節(jié)點經(jīng)修復(fù)重新加入到存儲系統(tǒng)中時,此時的系統(tǒng)處于帶故障運行狀態(tài),首先要進行恢復(fù)此節(jié)點與其鄰接節(jié)點的數(shù)據(jù)的同步操作,數(shù)據(jù)同步的步驟為首先緩沖所有到達該節(jié)點的請求到請求緩沖區(qū)中,然后從其正向鄰接節(jié)點讀回自己原有的所有文件數(shù)據(jù),再從反向鄰接節(jié)點讀取數(shù)據(jù),建立反向鄰接節(jié)點的備份數(shù)據(jù)。對于反向鄰接節(jié)點數(shù)據(jù)的建立要與當(dāng)前鄰接復(fù)制的鄰接距離m有關(guān),要將反向鄰接距離小于和等于m的所有反向鄰接節(jié)點上的原始數(shù)據(jù)拷貝至該節(jié)點,完成后處理緩沖區(qū)中的訪問請求,直至與所有數(shù)據(jù)同步。系統(tǒng)恢復(fù)到正常運行狀態(tài)。
當(dāng)向系統(tǒng)中增加一個數(shù)據(jù)存儲節(jié)點時,系統(tǒng)的運行要由相應(yīng)的客戶端讀寫機制來完成。在并行文件系統(tǒng)下,首先數(shù)據(jù)需要重新分布,此時原有的鏡像矢量環(huán)和新的節(jié)點數(shù)目下的鏡像矢量環(huán)同時存在,原有數(shù)據(jù)以原來的鏡像矢量環(huán)分布,文件系統(tǒng)的管理節(jié)點需要讀出所有原有數(shù)據(jù)以新的鏡像矢量環(huán)來分布。數(shù)據(jù)的重新分布以文件的重新分布來實現(xiàn),每個文件有其自己的鏡像矢量環(huán),文件系統(tǒng)的管理節(jié)點需要讀出該文件原有鏡像矢量環(huán)下的所有數(shù)據(jù)并以新的鏡像矢量環(huán)來分布。數(shù)據(jù)分布過程中,客戶端發(fā)起對一個文件訪問,通過訪問元數(shù)據(jù)服務(wù)器得到該文件的元數(shù)據(jù)信息,元數(shù)據(jù)信息中會表明該文件應(yīng)用新的鏡像矢量環(huán)。數(shù)據(jù)重新分布后,需改寫并行文件系統(tǒng)的元數(shù)據(jù)服務(wù)器相關(guān)信息,之后客戶端對該文件的讀寫請求將被指向新的鏡像矢量環(huán)。此時撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)狀態(tài)。如果在數(shù)據(jù)重新分布過程中客戶端讀寫請求的文件當(dāng)前正在重新分布,將采取相應(yīng)的數(shù)據(jù)讀寫鎖機制來限制其對該文件的讀寫。而且在數(shù)據(jù)重新分布過程中,向系統(tǒng)內(nèi)繼續(xù)添加或減少一個節(jié)點的請求將被禁止。
在分布式文件系統(tǒng)下,數(shù)據(jù)不需要重新分布,新增節(jié)點需從其反向鄰接節(jié)點復(fù)制數(shù)據(jù),并把該節(jié)點數(shù)據(jù)復(fù)制到其正向鄰接節(jié)點,之后改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器相關(guān)信息。
當(dāng)向系統(tǒng)中減少一個數(shù)據(jù)存儲節(jié)點時,系統(tǒng)的運行要由相應(yīng)的客戶端讀寫機制來完成。在并行文件系統(tǒng)下,包括系統(tǒng)正常運行狀態(tài)下減少一個節(jié)點時的客戶端讀寫機制和系統(tǒng)內(nèi)某節(jié)點失效需要把其從系統(tǒng)刪除時的客戶端讀寫機制兩種情況。在系統(tǒng)正常運行狀態(tài)下減少一個節(jié)點時,首先數(shù)據(jù)需要重新分布,數(shù)據(jù)重新分布完成后,撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)狀態(tài),并從系統(tǒng)中刪除此節(jié)點。此過程的數(shù)據(jù)重新分布機制與增加一個節(jié)點時的數(shù)據(jù)重新分布機制相同。在系統(tǒng)內(nèi)某節(jié)點失效需要其從系統(tǒng)刪除時,首先數(shù)據(jù)需要重新分布,此時對故障節(jié)點原始數(shù)據(jù)的讀請求轉(zhuǎn)移到其正向鄰接距離為1的正向鄰接節(jié)點的備份數(shù)據(jù)。數(shù)據(jù)重新分布完成后,撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量狀態(tài),并從系統(tǒng)中刪除此節(jié)點。
在分布文件系統(tǒng)下,也包括系統(tǒng)正常運行狀態(tài)下減少一個節(jié)點時的客戶端讀寫機制和系統(tǒng)內(nèi)某節(jié)點失效需要把其從系統(tǒng)刪除時的客戶端讀寫機制兩種情況。在系統(tǒng)正常運行狀態(tài)下減少一個節(jié)時,管理節(jié)點首先根據(jù)鄰接復(fù)制的鄰接距離m,確保該節(jié)點的m個反向鄰接節(jié)點在該節(jié)點的m個正向鄰接節(jié)點上有正確的備份數(shù)據(jù),然后把該節(jié)點的原始數(shù)據(jù)在其正向鄰接距離為1的正向鄰接節(jié)點上的原始數(shù)據(jù)合并,并建立新的原始數(shù)據(jù)在其后m個正向鄰接節(jié)點上的備份數(shù)據(jù)。完成后,從系統(tǒng)中刪除該節(jié)點。在系統(tǒng)內(nèi)某節(jié)點失效需要把其從系統(tǒng)刪除時,管理節(jié)點首先根據(jù)鄰接復(fù)制的鄰接距離m,確保該故障節(jié)點的m個反向鄰接點在該故障節(jié)點的m個正向鄰接節(jié)點上有正確的備份數(shù)據(jù),然后把該故障節(jié)點在正向鄰接距離為1的鄰接節(jié)點上的備份數(shù)據(jù)與此節(jié)點上的原始數(shù)據(jù)合并,并建立新的原始數(shù)據(jù)在其后m個正向鄰接節(jié)點上的備份數(shù)據(jù)。完成后,從系統(tǒng)中刪除該節(jié)點。
當(dāng)向系統(tǒng)中增加或減少2個或2個以上節(jié)點時客戶端讀寫機制,其客戶端讀寫機制與增加或減少一個節(jié)點時的客戶端讀寫機制相同。此外,當(dāng)向系統(tǒng)中減少節(jié)點時,減少將限制到系統(tǒng)中出現(xiàn)具有兩個節(jié)點配置的最小鏡像矢量環(huán)為止。
當(dāng)改變系統(tǒng)的可用級別時,首先由可用級別確定鄰接復(fù)制的鄰接距離m,通過增大或減少m值時的客戶端讀寫機制,來保證分布式存儲系統(tǒng)的高可用性。當(dāng)增大可用級別時,如果鄰接復(fù)制的鄰接距離由m1增大到m2,管理節(jié)點將復(fù)制各個節(jié)點上的數(shù)據(jù)到其正向鄰接距離小于等于m2并大于m1的所有正向鄰接節(jié)點上,并改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息。當(dāng)減小可用級別時,如果鄰接復(fù)制的鄰接距離由m1減小到m2,管理節(jié)點將刪除與各個節(jié)點正向鄰接距離小于等于m1并大于m2的所有正向鄰接節(jié)點上的數(shù)據(jù),并改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息。在改變系統(tǒng)可用級別的過程中,客戶端對系統(tǒng)的讀寫請求將被禁止。當(dāng)系統(tǒng)可用級別更改結(jié)束時,重新開放服務(wù),允許客戶端對系統(tǒng)的讀寫請求。
附圖1為m=1,N=6鏡像矢量環(huán)數(shù)據(jù)分布示意圖。圖中每個存儲節(jié)點的數(shù)據(jù)備份在其鄰接距離為1正向鄰接節(jié)點。
附圖2為m=2,N=6鏡像矢量環(huán)數(shù)據(jù)分布示圖。圖中每個存儲節(jié)點的數(shù)據(jù)備份在其鄰接鄰距離為1的正向鄰接節(jié)點和鄰接距離為2的正向鄰接節(jié)點上。
附圖3為m=1,N=5擴展到N=6鏡像矢量環(huán)數(shù)據(jù)重新分布示意圖。三個圖分別表示節(jié)點加入前,節(jié)點加入中,節(jié)點加入后系統(tǒng)中的數(shù)據(jù)分布狀態(tài)。在節(jié)點加入過程中存在兩個鏡像矢量環(huán),其中淺色環(huán)為原有的鏡像矢量環(huán),深色環(huán)為新的鏡像矢量環(huán)。
附圖4為N=6,m=1改變到m=2鏡像矢量環(huán)數(shù)據(jù)分布示意圖。上下兩個圖分別表示m=1時和m=2時系統(tǒng)中的數(shù)據(jù)分布狀態(tài),其中深色環(huán)為在原鏡像矢量環(huán)分布數(shù)據(jù)基礎(chǔ)上新增的鏡像存儲數(shù)據(jù)。
具體實施方式
構(gòu)建高可用分布式存儲系統(tǒng)可以基于并行文件系統(tǒng)或分布文件系統(tǒng)來實現(xiàn),接下來我們以在并行文件系統(tǒng)上構(gòu)建高可用系統(tǒng)為例,闡述構(gòu)建此系統(tǒng)的詳細(xì)過程。包括m=1和m=2時的系統(tǒng)構(gòu)建機制、節(jié)點出現(xiàn)故障和故障恢復(fù)機制、節(jié)點擴展和改變系統(tǒng)可用級別時的相應(yīng)客戶端讀寫機制。
如圖1所示,鄰接復(fù)制的鄰接距離m為1時的系統(tǒng)狀態(tài)。該系統(tǒng)由6個節(jié)點組成,箭頭指示方向表示鏡像矢量環(huán)的正向,即鄰接復(fù)制的正方向。節(jié)點內(nèi)的實線圓表示該節(jié)點的本地存儲數(shù)據(jù),虛線圓表示其反向鄰接點在該節(jié)點的數(shù)據(jù)備份。節(jié)點通過網(wǎng)絡(luò)標(biāo)識(即節(jié)點號)構(gòu)成從1到6首尾相接的封閉的鏡像矢量環(huán)。系統(tǒng)運行過程中,客戶端對一個文件數(shù)據(jù)條塊的讀請求按規(guī)定的順序(1-2-3-4-5-6)直接發(fā)往原始的存儲節(jié)點,并正常操作。而寫請求則同時發(fā)往文件條塊所在節(jié)點和其正向鄰接節(jié)點上,即按實線圓標(biāo)識順序(1-2-3-4-5-6)和虛線圓標(biāo)識順序(1-2-3-4-5-6)分別寫一次,并等待所有節(jié)點的寫操作正常返回,才標(biāo)志這個寫操作成功。
當(dāng)系統(tǒng)內(nèi)某個節(jié)點發(fā)生故障時,例如節(jié)點3發(fā)生故障,客戶端的讀寫機制采取以下規(guī)則。首先判斷節(jié)點3為故障節(jié)點,當(dāng)訪問節(jié)點3時在規(guī)定的失效時間內(nèi)得不到響應(yīng),可以懷疑其失效,再重發(fā)一次讀寫請求,如果仍然在失效時間內(nèi)得不到到響應(yīng),就認(rèn)為該節(jié)點失效,并在客戶端進行標(biāo)記。在節(jié)點3失效狀態(tài)下,客戶端將發(fā)往節(jié)點3的讀寫請求轉(zhuǎn)移到其正向鄰接節(jié)點,即節(jié)點4,并等待節(jié)點4返回響應(yīng)。
當(dāng)節(jié)點3經(jīng)修復(fù)后加入到存儲系統(tǒng)中時,此時的系統(tǒng)處于帶故障運行狀態(tài),要進行恢復(fù)節(jié)點3與其鄰接節(jié)點的數(shù)據(jù)的同步操作,首先緩沖所有到達該節(jié)點3的請求到請求緩沖區(qū)中,然后從其正向鄰接節(jié)點4讀回自己原有的所有文件數(shù)據(jù),再從反向鄰接節(jié)點2讀取數(shù)據(jù),建立反向鄰接節(jié)點的備份數(shù)據(jù)。完成后,處理緩沖區(qū)中的訪問請求,直至與所有數(shù)據(jù)同步。系統(tǒng)恢復(fù)到正常狀態(tài)。
附圖2為鄰接復(fù)制的鄰接距離m為2時的系統(tǒng)狀態(tài)示意圖。該系統(tǒng)由6個節(jié)點組成,箭頭指示方向表示鏡像矢量環(huán)的正向,即鄰接復(fù)制的正方向。節(jié)點內(nèi)實線圓表示該節(jié)點的本地存儲數(shù)據(jù),虛線圓表示與其反向鄰接距離分別為1和2的反向鄰接節(jié)點在該節(jié)點上的數(shù)據(jù)備份。節(jié)點通過網(wǎng)絡(luò)標(biāo)識(即節(jié)點號)構(gòu)成從1到6首尾相接的封閉的鏡像矢量環(huán)。系統(tǒng)運行過程中,客戶端對一個文件數(shù)據(jù)條塊的讀請求按規(guī)定的順序(如1-2-3-4-5-6)直接發(fā)往原始的存儲節(jié)點,并正常操作。而寫請求則同時發(fā)往文件條塊所在節(jié)點和其鄰接距離為1的正向鄰接節(jié)點上,即按實線圓標(biāo)識順序(1-2-3-4-5-6)和兩個虛線圓標(biāo)識順序(1-2-3-4-5-6)分別寫一次,并等待所有節(jié)點的寫操作正常返回,才標(biāo)志這個寫操作成功。
當(dāng)系統(tǒng)內(nèi)某個節(jié)點發(fā)生故障或恢復(fù)后重新加入到系統(tǒng)時,客戶端的讀寫機制與m=1時的情況相同。如果相鄰兩個節(jié)點在規(guī)定恢復(fù)時間內(nèi)相繼失效,即認(rèn)為同時失效,此時客戶端的讀寫機制會采取以下規(guī)則。如節(jié)點3和節(jié)點4同時失效,首先判斷節(jié)點3和節(jié)點4為失效節(jié)點,判斷機制與m=1時相同。此時客戶端發(fā)往節(jié)點3和節(jié)點4的讀請求將轉(zhuǎn)移到其鄰接節(jié)點5,并等待節(jié)點5返回響應(yīng)。發(fā)往節(jié)點3的寫請求則發(fā)往節(jié)點5,并等待節(jié)點5返回響應(yīng),而發(fā)往節(jié)點4的寫請求則發(fā)往節(jié)點5和節(jié)點6,并等待節(jié)點5和節(jié)點6的響應(yīng)。
當(dāng)節(jié)點3經(jīng)修復(fù)后加入到存儲系統(tǒng)中時,首先緩沖所有到達該節(jié)點3的請求到請求緩沖區(qū)中,然后從其正向鄰接點5讀回自己原有的所有文件數(shù)據(jù),再從反向鄰接節(jié)點1和反向鄰接節(jié)點2讀取數(shù)據(jù),建立反向鄰接節(jié)點的備份數(shù)據(jù)。完成后,處理緩沖區(qū)中的訪問請求,直至與所有數(shù)據(jù)同步,系統(tǒng)恢復(fù)到正常狀態(tài)。
當(dāng)節(jié)點4經(jīng)修復(fù)后加入到存儲系統(tǒng)中時,首先緩沖所有到達該節(jié)點4的請求到請求緩沖區(qū)中,然后從其正向鄰接節(jié)點5讀回自己原有的所有文件數(shù)據(jù),再從反向鄰接節(jié)點2和反向鄰接節(jié)點3讀取數(shù)據(jù),建立反向鄰接節(jié)點的備份數(shù)據(jù)。如果此時反向鄰接節(jié)點3故障還沒有完成修復(fù),會標(biāo)識3為故障節(jié)點,此時客戶端的讀寫機制與m=1相同。完成后,處理緩沖區(qū)中的訪問請求,直至與所有數(shù)據(jù)同步,系統(tǒng)恢復(fù)到正常狀態(tài)。
圖3為m=1時系統(tǒng)從5個節(jié)點擴展到6個節(jié)點時的系統(tǒng)狀態(tài)示意圖。向系統(tǒng)中加入節(jié)點時,通常會把此節(jié)點加入到鏡像矢量環(huán)網(wǎng)絡(luò)標(biāo)識的尾部,如圖所示節(jié)點6加入系統(tǒng)時會加在節(jié)點5的尾部。節(jié)點加入過程分為以下幾個步驟節(jié)點加入前;節(jié)點加入中和節(jié)點加入后。節(jié)點6加入前,系統(tǒng)內(nèi)只存在一個鏡像矢量環(huán),數(shù)據(jù)條塊的讀取順序為1-2-3-4-5。當(dāng)節(jié)點6加入到系統(tǒng)中時,此時文件系統(tǒng)的管理節(jié)點將進行數(shù)據(jù)的重新分布工作,此過程中系統(tǒng)內(nèi)存在兩個鏡像矢量環(huán),即原有的鏡像矢量環(huán)和新建的鏡像矢量環(huán),在圖中分別用淺色和深色圓環(huán)來表示。數(shù)據(jù)的重新分布以文件的重新分布形式來實現(xiàn),文件系統(tǒng)的管理節(jié)點需要讀出該文件原有鏡像矢量環(huán)下的所有數(shù)據(jù)并以新的鏡像矢量環(huán)來分布。如管理節(jié)點從原鏡像矢量環(huán)讀出某文件的數(shù)據(jù)條塊(圖中實線圓所示1-2-3-4-5),重組文件并以新的鏡像矢量環(huán)來分布(圖中實線圓表示的1-2-3-4-5-6),同時復(fù)制新的數(shù)據(jù)條塊到其正向鄰接節(jié)點(圖中虛線圓表示的1-2-3-4-5-6)。數(shù)據(jù)分布過程中,客戶端將發(fā)起對某個文件的訪問,通過訪問元數(shù)據(jù)服務(wù)器得到該文件的元數(shù)據(jù)信息,元數(shù)據(jù)信息中會表明該文件應(yīng)用新的鏡像矢量環(huán)還是原有的鏡像矢量環(huán),客戶端其后的讀寫操作都會在元數(shù)據(jù)所指的鏡像矢量環(huán)中進行。數(shù)據(jù)重分布后,需改寫并行文件系統(tǒng)的元數(shù)據(jù)服務(wù)器相關(guān)信息,之后客戶端對該文件的讀寫請求將被指向新的鏡像矢量環(huán)。此時撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)狀態(tài)。如果在數(shù)據(jù)重新分布過程中客戶端讀寫請求的文件當(dāng)前正在重新分布,將采取相應(yīng)的數(shù)據(jù)讀寫鎖機制來限制其對該文件的讀寫。待數(shù)據(jù)全部重新分布完成后,文件系統(tǒng)的管理節(jié)點將撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)狀態(tài)。整個數(shù)據(jù)分布的過程可由運行在后臺的進程來完成,該進程的優(yōu)先級可設(shè)置為最低,以保證對外服務(wù)的質(zhì)量。
附圖4為N=6,m=1改變到m=2鏡像矢量環(huán)數(shù)據(jù)分布示意圖。其中上圖表示m=1時系統(tǒng)中的數(shù)據(jù)分布狀態(tài),下圖表示m=2時系統(tǒng)中的數(shù)據(jù)分布狀態(tài)。當(dāng)改變系統(tǒng)的可用級別時,首先由可用級別確定鄰接復(fù)制的鄰接距離m,如圖所示通過使m從1增加到2來提高系統(tǒng)的可用級別,即提高系統(tǒng)的高可用性。在改變系統(tǒng)可用級別的過程中,客戶端對系統(tǒng)的讀寫請求將被禁止。
當(dāng)m=1時,系統(tǒng)內(nèi)的數(shù)據(jù)分布狀態(tài)如上圖所示,每個節(jié)點的備份數(shù)據(jù)存在于其鄰接距離為1的正向鄰接節(jié)點上,即節(jié)點2有節(jié)點1數(shù)據(jù)備份,節(jié)點3有節(jié)點2的數(shù)據(jù)備份,等等。當(dāng)m=2時,系統(tǒng)內(nèi)每個節(jié)點的數(shù)據(jù)備份應(yīng)存在于其鄰接距離為1和鄰接距離為2的正向的鄰接節(jié)點上,所以管理節(jié)點會讀出某個節(jié)點的全部數(shù)據(jù)并復(fù)制到與其鄰接距離為2的正向鄰接節(jié)點上,如下圖所示,節(jié)點1的數(shù)據(jù)復(fù)制到節(jié)點3,節(jié)點2的數(shù)據(jù)復(fù)制到節(jié)點4,以此類推。當(dāng)數(shù)據(jù)復(fù)制結(jié)束時,改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息,以便系統(tǒng)運行時采取新的可用級別。系統(tǒng)可用級別改寫結(jié)束后,重新開放服務(wù),允許客戶端對系統(tǒng)的讀寫請求。如果改變可用級別以使鄰接復(fù)制的鄰接距離m從2減小到1,其運行機制與m從1增大到2的過程相同,管理節(jié)點將刪除與各個節(jié)點正向鄰接距離為2的正向鄰接節(jié)點上的數(shù)據(jù),并改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息。
本發(fā)明的方法可適用于大多數(shù)的網(wǎng)絡(luò)文件系統(tǒng),經(jīng)過對網(wǎng)絡(luò)文件系統(tǒng)的改造,可以在相對廉價的存儲機群上提供目前只有專用系統(tǒng)可提供的高可用性保證,同時,應(yīng)用該技術(shù)的存儲系統(tǒng),其可用級別可以根據(jù)需要進行配置,可廣泛應(yīng)用于對數(shù)據(jù)可用性要求很高的網(wǎng)絡(luò)存儲環(huán)境中。
由于本發(fā)明的方法應(yīng)用不需要專用的硬件系統(tǒng)支持,可應(yīng)用于一般的網(wǎng)絡(luò)存儲機群中,這就適合大多數(shù)廉價機群系統(tǒng),性價比較高。因而,推廣應(yīng)用本發(fā)明的方法可以產(chǎn)生很高的經(jīng)濟效益。同時也可以改變目前高端應(yīng)用中高可用性支持基本依賴外來技術(shù)的現(xiàn)象。
權(quán)利要求
1.構(gòu)建高可用分布式存儲系統(tǒng)的方法,其特征在于將分布式存儲系統(tǒng)內(nèi)的數(shù)據(jù)存儲節(jié)點按順序組成鏡像矢量環(huán),并在鏡像矢量環(huán)內(nèi)的各個存儲節(jié)點上設(shè)置網(wǎng)絡(luò)標(biāo)識,同時利用鄰接復(fù)制技術(shù)將一個節(jié)點的數(shù)據(jù)復(fù)制到其鄰接節(jié)點,當(dāng)節(jié)點出現(xiàn)故障或節(jié)點的增加/減少以及改變可用級別時,通過不同的客戶端讀寫機制保證分布式存儲系統(tǒng)的高可用性、可擴展性和動態(tài)的可配置能力。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于在鏡像矢量環(huán)為通過賦予相互連通的互聯(lián)網(wǎng)絡(luò)內(nèi)每個數(shù)據(jù)存儲節(jié)點唯一的網(wǎng)絡(luò)標(biāo)識,按一定順序?qū)⑺袠?biāo)識串連成一個首尾相接的鏈,并根據(jù)采用文件系統(tǒng)的不同而采取不同的組織形式,該組織形式包括并行文件系統(tǒng)下鏡像矢量環(huán)和分布式文件系統(tǒng)下的鏡像矢量環(huán),鏡像矢量環(huán)中網(wǎng)絡(luò)標(biāo)識依次排列的方向為正向,節(jié)點的鄰接與鏡像矢量環(huán)的方向一致為正向鄰接方向,反之為反向鄰接方向,無論何種方向鄰接都能保證互聯(lián)網(wǎng)絡(luò)內(nèi)的數(shù)據(jù)存儲節(jié)點與客戶端有直接或間接的物理通路。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于并行文件系統(tǒng)下鏡像矢量環(huán)中的一個文件數(shù)據(jù)可以被分為多個順序連接的條塊,并且按照這條回路中的網(wǎng)絡(luò)標(biāo)識所規(guī)定的順序依次存放在各個節(jié)點上,分布式文件系統(tǒng)下鏡像矢量環(huán)只用來確定在數(shù)據(jù)復(fù)制過程中的目標(biāo)節(jié)點位置。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于利用鄰接復(fù)制技術(shù)為分布式存儲系統(tǒng)的一種數(shù)據(jù)備份方式,根據(jù)可用級別確定鄰接復(fù)制的鄰接距離m,選擇文件或文件條塊復(fù)制到與其所在節(jié)點的鄰接距離小于等于m的并且鄰接方向為正向的所有鄰接節(jié)點之上,并通過客戶端的讀寫機制在文件訪問階段保證各個復(fù)制數(shù)據(jù)與原文件數(shù)據(jù)的一致性,將一個文件數(shù)據(jù)條塊的讀請求直接發(fā)往原始的存儲節(jié)點并正常操作,而寫請求則首先根據(jù)其可用級別確定鄰接復(fù)制的鄰接距離m,然后發(fā)往文件條塊所在節(jié)點和與之距離小于等于m的所有正向鄰接節(jié)點上,并等待所有節(jié)點的寫操作正常返回,才標(biāo)志這個寫操作成功。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于可用級別的確定是在分布式存儲系統(tǒng)內(nèi),各個節(jié)點在一定時間T內(nèi)平均失效率為P,存儲系統(tǒng)內(nèi)節(jié)點個數(shù)為N,鄰接復(fù)制的鄰接距離為m,當(dāng)系統(tǒng)中相鄰的大于等于m+1個節(jié)點同時失效時,才使該系統(tǒng)失效,由此規(guī)定可用級別為該系統(tǒng)在T時間內(nèi)一直可訪問的概率,其計算的公式為P=1-C1NPm+1(1-P)n-m-1-C1nC1n-m-1Pm+2(1-P)n-m-2-Λ-C1nCn-mn-m-1Pn-1(1-P)-Pn假設(shè)分布式存儲系統(tǒng)中可用級別的等級至少為p1,可通過以下不等式確定滿足條件最小鄰接復(fù)制的鄰接距離m值P1≤1-C1NPm+1(1-P)n-m-1-C1nC1n-m-1Pm+2(1-P)n-m-2-Λ-C1nCn-mn-m-1Pn-1(1-P)-Pn
6.根據(jù)權(quán)利要求1所述的方法,其特征在于節(jié)點出現(xiàn)故障時的客戶端讀寫機制,包括客戶端訪問時節(jié)點失效的判斷策略和節(jié)點失效后的數(shù)據(jù)讀寫機制,即客戶端對某個文件在某個節(jié)點上的數(shù)據(jù)進行訪問時,在規(guī)定的失效時間內(nèi)得不到響應(yīng),可懷疑其失效,再重發(fā)一次讀寫請求,在失效時間內(nèi)如仍得不到響應(yīng),確認(rèn)該節(jié)點失效,通知文件系統(tǒng)的管理節(jié)點,并在客戶端進行標(biāo)識。分布式存儲系統(tǒng)內(nèi)的文件系統(tǒng)的管理節(jié)點,負(fù)責(zé)系統(tǒng)中故障節(jié)點的恢復(fù)、向系統(tǒng)增加或減少節(jié)點、改變系統(tǒng)可用級別等管理與維護,本身不提供文件訪問服務(wù)。在節(jié)點失效后數(shù)據(jù)讀寫機制中,客戶端不再向故障節(jié)點發(fā)送讀寫請求,而直接將讀寫請求發(fā)送給該故障節(jié)點的正向鄰接節(jié)點,當(dāng)節(jié)點鄰接距離m=1時,客戶端會將讀請求轉(zhuǎn)移到其正向鄰接距離為1的鄰接節(jié)點,并等待其返回響應(yīng),當(dāng)節(jié)點鄰接距離m大于等于2時,客戶端會將寫請求發(fā)送給該故障節(jié)點的正向鄰接并鄰接距離小于等于m的節(jié)點,而讀請求將轉(zhuǎn)移到其正向鄰接距離為1的鄰接節(jié)點,并等待其返回響應(yīng),如果此節(jié)點失效,則轉(zhuǎn)向鄰接距離為2的正向鄰接節(jié)點,依次直至鄰接距離為m的正向鄰接節(jié)點,當(dāng)故障節(jié)點修復(fù)后需要加入到存儲系統(tǒng)中時,首先要進行恢復(fù)節(jié)點與其鄰接節(jié)點的數(shù)據(jù)的同步操作,然后進入到系統(tǒng)正常運行的客戶端讀寫機制狀態(tài)。
7.根據(jù)權(quán)利要求6所述的方法其特征在于,恢復(fù)節(jié)點與鄰接節(jié)點的數(shù)據(jù)同步操作,是先將所有到達該故障節(jié)點的寫請求緩沖到請求緩沖區(qū)中,然后從其正向鄰接節(jié)點讀回自己原有的所有文件數(shù)據(jù),再根據(jù)鄰接復(fù)制的鄰接距離從反向鄰接節(jié)點讀取數(shù)據(jù),建立反向鄰接節(jié)點的備份數(shù)據(jù),如果鄰接復(fù)制的鄰接距離為m,操作時將反向鄰接距離小于和等于m的反向鄰接節(jié)點上的原始數(shù)據(jù)拷貝至該節(jié)點。
8.根據(jù)權(quán)利要求1所述方法,其特征在于在節(jié)點增加/減少時的客戶端讀寫機制中,根據(jù)文件系統(tǒng)類型的不同分為并行文件系統(tǒng)下的客戶端讀寫機制與分布式文件系統(tǒng)下的客戶端讀寫機制,其中并行文件系統(tǒng)下的客戶端讀寫機制為系統(tǒng)中增加一個或多個數(shù)據(jù)存儲節(jié)點時,首先將數(shù)據(jù)重新分布,撤銷原有的鏡像矢量環(huán),讓存儲系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)的狀態(tài)下以文件的重新分布來實現(xiàn),每個文件有其自己的鏡像矢量環(huán),文件系統(tǒng)的管理節(jié)點需要讀出該文件原有鏡像矢量環(huán)下的所有數(shù)據(jù)并以新的鏡像矢量環(huán)來分布,此時原有的鏡像矢量環(huán)和新的節(jié)點數(shù)目下的鏡像矢量環(huán)同時存在,原有數(shù)據(jù)以原來的鏡像矢量環(huán)分布,文件系統(tǒng)的管理節(jié)點需要讀出所有原有數(shù)據(jù)以新的鏡像矢量環(huán)來分布,文件的數(shù)據(jù)重新分布后,需改寫并行文件系統(tǒng)的元數(shù)據(jù)服務(wù)器相關(guān)信息,之后客戶端對該文件的讀寫請求將被指向新的鏡像矢量環(huán)。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于客戶端發(fā)起對一個文件訪問,首先通過訪問元數(shù)據(jù)服務(wù)器得到該文件的元數(shù)據(jù)信息,元數(shù)據(jù)信息中會表明該文件應(yīng)用新的鏡像矢量環(huán)還是應(yīng)用原有的鏡像矢量環(huán),如果在數(shù)據(jù)重新分布過程中客戶端讀寫請求的文件當(dāng)前正在重新分布,將采取相應(yīng)的數(shù)據(jù)讀寫鎖機制來限制其對該文件的讀寫,在數(shù)據(jù)重新分布過程中,一旦數(shù)據(jù)讀寫鎖機制啟動,向系統(tǒng)內(nèi)繼續(xù)添加或減少節(jié)點的請求將被禁止。
10.根據(jù)權(quán)利要求8-9所述的方法,其特征在于在分布式文件系統(tǒng)下的客戶端讀寫機制中,數(shù)據(jù)不需要重新分布,新增節(jié)點需從其反向鄰接節(jié)點復(fù)制數(shù)據(jù),并把該節(jié)點數(shù)據(jù)復(fù)制到其正向鄰接節(jié)點,之后改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器相關(guān)信息,在并行文件系統(tǒng)下運行減少節(jié)點時的客戶端讀寫機制時,系統(tǒng)在正常狀態(tài)下運行減少節(jié)點時的客戶端讀寫機制,首先數(shù)據(jù)需要重新分布,數(shù)據(jù)重新分布完成后,撤銷原有的鏡像矢量環(huán),系統(tǒng)恢復(fù)到單一鏡像矢量環(huán)狀態(tài),并從系統(tǒng)中刪除失效節(jié)點,在數(shù)據(jù)重新分布時,要將故障節(jié)點原始數(shù)據(jù)的讀請求轉(zhuǎn)移到其正向鄰接距離為1的正向鄰接節(jié)點的備份數(shù)據(jù)中,系統(tǒng)運行減少節(jié)點時的客戶端讀寫機制時,節(jié)點減少限制到系統(tǒng)中出現(xiàn)具有兩個節(jié)點配置的最小鏡像矢量環(huán)為止。
11.根據(jù)權(quán)利要求8-10所述的方法,其特征在于分布式文件系統(tǒng)正常狀態(tài)下運行減少節(jié)點時的客戶端讀寫機制,管理節(jié)點根據(jù)鄰接節(jié)點復(fù)制的鄰接距離m,確保該節(jié)點的m個反向鄰接節(jié)點在該節(jié)點的m個正向鄰接節(jié)點上有正確的備份數(shù)據(jù),然后把該節(jié)點的原始數(shù)據(jù)與其正向鄰接距離為1的正向鄰接節(jié)點上的原始數(shù)據(jù)合并,并建立新的原始數(shù)據(jù)在其后m個正向鄰接節(jié)點上的備份數(shù)據(jù),備份數(shù)據(jù)完成后,該節(jié)點從系統(tǒng)中刪除。
12.根據(jù)權(quán)利要求8-11所述的方法,其特征在于系統(tǒng)內(nèi)某故障節(jié)點失效時需要運行把該節(jié)點從系統(tǒng)刪除時的客戶端讀寫機制,此時管理節(jié)點根據(jù)鄰接復(fù)制的鄰接距離m,確保該故障節(jié)點的m個反向鄰接節(jié)點在該節(jié)點的m個正向鄰接節(jié)點上有正確的備份數(shù)據(jù),然后把該故障節(jié)點在正向鄰接距離為1的鄰接節(jié)點上的備份數(shù)據(jù)與此節(jié)點上的原始數(shù)據(jù)合并,并建立新的原始數(shù)據(jù)在其后m個正向鄰接節(jié)點上的備份數(shù)據(jù),備份數(shù)據(jù)完成后,該故障節(jié)點從系統(tǒng)中刪除。
13.根據(jù)權(quán)利要求1所述的方法,其特征在于改變可用級別時的客戶端讀寫機制,是可用級別確定鄰接復(fù)制的鄰接距離m,通過增大或減少m值時的客戶端讀寫機制來保證分布式存儲系統(tǒng)的高可用性,如果鄰接復(fù)制的鄰接距離由m1增大到m2,管理節(jié)點將復(fù)制各個節(jié)點上的數(shù)據(jù)到其正向鄰接距離小于等于m2并大于m1的所有正向鄰接節(jié)點上,并改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息,如果鄰接復(fù)制的鄰接距離由m1減小到m2,管理節(jié)點將刪除與各個節(jié)點正向鄰接距離小于等于m1并大于m2的所有正向鄰接節(jié)點上的數(shù)據(jù),并改寫文件系統(tǒng)的元數(shù)據(jù)服務(wù)器的相關(guān)信息,在改變系統(tǒng)可用級別的過程中,客戶端對系統(tǒng)的讀寫請求將被禁止。
全文摘要
本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,是一種建立在并行文件系統(tǒng)和分布式文件系統(tǒng)之上的高可用分布式存儲系統(tǒng)構(gòu)建方法,該方法是將分布式存儲系統(tǒng)內(nèi)的數(shù)據(jù)存儲節(jié)點按順序組成鏡像矢量環(huán),并在鏡像矢量環(huán)內(nèi)的各個存儲節(jié)點上設(shè)置網(wǎng)絡(luò)標(biāo)識,同時利用鄰接復(fù)制技術(shù)將一個節(jié)點的數(shù)據(jù)復(fù)制到其鄰接節(jié)點,當(dāng)節(jié)點出現(xiàn)故障或節(jié)點的增加/減少以及改變可用級別時,通過不同的客戶端讀寫機制保證分布式存儲系統(tǒng)的高可用性、可擴展性和動態(tài)的可配置能力。應(yīng)用本發(fā)明的方法不需要專用的硬件系統(tǒng)支持,非常適合廉價機群系統(tǒng),提高性價比。因此,廣泛推廣應(yīng)用可以產(chǎn)生很好的經(jīng)濟效益,同時也可以改變目前高端應(yīng)用中高可用性支持基本依賴外來技術(shù)的現(xiàn)象。
文檔編號G06F12/00GK1567237SQ0311240
公開日2005年1月19日 申請日期2003年6月9日 優(yōu)先權(quán)日2003年6月9日
發(fā)明者張虎, 尹宏偉, 王恩東, 伍衛(wèi)國, 董小社, 錢德沛, 莊文君 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司