最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種磁盤陣列及基于其的數(shù)據(jù)重構(gòu)方法和存儲設(shè)備與流程

文檔序號:11215856閱讀:731來源:國知局
一種磁盤陣列及基于其的數(shù)據(jù)重構(gòu)方法和存儲設(shè)備與流程

本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種磁盤陣列及基于其的數(shù)據(jù)重構(gòu)方法和存儲設(shè)備。



背景技術(shù):

隨著技術(shù)的發(fā)展,用于數(shù)據(jù)存儲的物理磁盤(區(qū)別于虛擬磁盤,以下簡稱磁盤)的容量由幾十個gb發(fā)展到幾個tb,其中raid(redundantarrayofindependentdisks,即獨立磁盤冗余陣列)可提供比單個磁盤更高的存儲性能,raid是一種把多塊獨立的磁盤按不同的方式組合起來形成一個磁盤組。raid作為一個存儲系統(tǒng),不可避免的磁盤的硬件或者軟件可能會出現(xiàn)問題。許多應(yīng)用要求raid具有高可靠性以保護用戶數(shù)據(jù),其中,數(shù)據(jù)備份可對數(shù)據(jù)進行保護,使得數(shù)據(jù)以高可靠性存儲于raid上,即使部分磁盤硬件或軟件出現(xiàn)問題,可進行數(shù)據(jù)重構(gòu),能夠從raid中恢復(fù)數(shù)據(jù)。

通過數(shù)據(jù)備份進行數(shù)據(jù)重構(gòu),目前可以采用的其中一種方式在raid中設(shè)置用于備份的空間,這樣,當(dāng)某塊磁盤或者磁盤中的某塊區(qū)域發(fā)生故障時,能用備份空間代替發(fā)生故障的區(qū)域,并通過算法把原來儲存在發(fā)生故障區(qū)域中的數(shù)據(jù)重構(gòu)到備份空間中。

這種方案的問題是,由于替換該故障區(qū)域的備份空間通常設(shè)置在原來磁盤的尾部,當(dāng)磁盤中某個故障區(qū)域用備份空間替換進行數(shù)據(jù)重構(gòu)之后,在有故障區(qū)域的位置附近順序讀寫磁盤時,由于故障區(qū)域被備份空間代替,需要定位到位于磁盤尾部的備份空間,然后再返回,導(dǎo)致讀寫時磁盤磁頭移動距離比較大,需要花費較多的時間進行磁盤尋道,磁盤的讀寫性能較低,會導(dǎo)致整個raid空間讀寫性能不穩(wěn)定。



技術(shù)實現(xiàn)要素:

為解決上述raid讀寫不穩(wěn)定的技術(shù)問題,本發(fā)明提供一種磁盤陣列,所述磁盤陣列包括:

多個物理磁盤,每個物理磁盤的存儲空間包括多個物理塊,每個所述物理塊具有物理地址;

每個物理磁盤的多個物理塊包括備份物理塊和存儲物理塊,且所述備份物理塊間隔分布于所述存儲物理塊中。

可選的,根據(jù)磁盤陣列中每個物理磁盤的總?cè)萘亢皖A(yù)設(shè)物理塊容量將每個物理磁盤的存儲空間劃分成多個物理塊。

可選的,根據(jù)預(yù)設(shè)備份空間比例和所述物理塊總數(shù)量設(shè)置備份間隔數(shù)量,每間隔所述備份間隔數(shù)量個所述存儲物理塊設(shè)置一個備份物理塊。

可選的,所述存儲物理塊中存儲有備份位圖和存儲位圖,所述備份位圖包括各所述備份物理塊在所述物理磁盤中的分布位置,所述存儲備份位圖包括各所述存儲物理塊在所述物理磁盤中的分布位置,所述備份位圖中的位數(shù)值和所述存儲位圖中的位數(shù)值為互補關(guān)系。

可選的,所述的磁盤陣列,還包括:

多個虛擬磁盤,所述多個虛擬磁盤為將所述磁盤陣列的多個物理磁盤虛擬化得到的;

其中,每個所述虛擬磁盤的存儲空間包括多個虛擬塊,每個所述虛擬塊具有邏輯地址,所述虛擬塊的數(shù)量與所述多個物理磁盤中存儲物理塊的數(shù)量相同,每個所述虛擬塊的邏輯地址與每個存儲數(shù)據(jù)塊的物理地址具有映射關(guān)系。

可選的,所述虛擬磁盤的數(shù)量小于所述物理磁盤的數(shù)量,多個所述虛擬磁盤中位于相同行的多個虛擬塊作為一個條帶,每個所述條帶的各虛擬塊的邏輯地址分別與不同物理磁盤中的存儲物理塊的物理地址建立映射關(guān)系。

本發(fā)明實施例還提供一種基于磁盤陣列的數(shù)據(jù)重構(gòu)方法,所述方法包括以下步驟:

獲取磁盤陣列中發(fā)生故障的存儲物理塊的物理地址;

根據(jù)所述發(fā)生故障的存儲物理塊的物理地址查找與所述發(fā)生故障的存儲物理塊的物理地址最近的物理地址對應(yīng)備份物理塊作為預(yù)選備份物理塊;

將所述發(fā)生故障的物理塊中的數(shù)據(jù)重構(gòu)至所述預(yù)選備份物理塊中;

將所述發(fā)生故障的存儲物理塊的物理地址替換為預(yù)選備份物理塊的物理地址。

可選的,所述方法在將所述發(fā)生故障的存儲物理塊的物理地址替換為預(yù)選備份物理塊的物理地址之后,還包括以下步驟:

將所述備份位圖中與預(yù)選備份物理塊對應(yīng)位置的位數(shù)值取反,將所述存儲位圖中與預(yù)選備份物理塊置對應(yīng)位置的位數(shù)值也取反。

可選的,所述方法中將所述發(fā)生故障的存儲物理塊的物理地址替換為預(yù)選備份物理塊的物理地址,具體包括:

將發(fā)生故障的存儲物理塊對應(yīng)的物理地址與發(fā)生故障的存儲物理塊對應(yīng)的虛擬塊的邏輯地址之間的映射關(guān)系,替換為預(yù)選備份物理塊對應(yīng)的物理地址與發(fā)生故障的存儲物理塊對應(yīng)的虛擬塊的邏輯地址之間的映射關(guān)系。

本發(fā)明實施例還提供一種存儲設(shè)備,包括存儲器和處理器,所述存儲器中存儲有多條指令,所述指令適于由處理器加載并執(zhí)行上述所述的方法。

基于上述技術(shù)方案,本發(fā)明實施例中,由于備份物理塊間隔分布在存儲物理塊中,可以選擇與發(fā)生故障的存儲物理塊對應(yīng)的物理地址較近的或者最近的物理塊作為備份物理塊,當(dāng)有備份物理塊替代發(fā)生故障的存儲物理塊數(shù)據(jù)恢復(fù)之后,對物理磁盤進行讀寫時,雖然磁頭也不能按照原來的順序移動,但是磁頭讀取時的位置會發(fā)生較小,可能是磁頭的位置雖然跳躍但是還是能按照順序,不需要來回反復(fù)移動,也有可能需要磁頭在不同磁道之間反復(fù)移動,但是反復(fù)移動的間隔距離會減小,與之前移動方式相比,磁頭移動的距離也會明顯減小,磁頭尋道的時間會減小,數(shù)據(jù)重構(gòu)之后對raid讀寫性能的影響會減小,進而提高整個raid的讀寫性能。

附圖說明

圖1是本發(fā)明一種實施方式中的磁盤陣列的架構(gòu)圖;

圖2是本發(fā)明一種實施方式中的數(shù)據(jù)重構(gòu)方法的流程圖;

圖3是本發(fā)明另一種實施方式中的磁盤陣列的架構(gòu)圖;

圖4是本發(fā)明一種實施方式中的備份位圖的結(jié)構(gòu)圖;

圖5是本發(fā)明一種實施方式中的存儲位圖的結(jié)構(gòu)圖;

圖6是本發(fā)明另一種實施方式中的磁盤陣列的架構(gòu)圖;

圖7是本發(fā)明另一種實施方式中的磁盤陣列中虛擬磁盤部分的架構(gòu)圖;

圖8是本發(fā)明一種實施方式中的存儲設(shè)備的結(jié)構(gòu)圖。

具體實施方式

下面參考附圖詳細(xì)描述本發(fā)明的各實施方式。

目前的raid中為提高數(shù)據(jù)的可靠性,在raid系統(tǒng)中,設(shè)置有專門的備份物理磁盤或者在某些物理磁盤中設(shè)置數(shù)據(jù)備份空間,當(dāng)物理磁盤的某塊區(qū)域損壞時,可利用備份空間對損壞區(qū)域的數(shù)據(jù)進行恢復(fù),將損壞區(qū)域的數(shù)據(jù)通過數(shù)據(jù)重構(gòu)恢復(fù)到備份空間。

下面結(jié)合圖1對raid中采用備份空間進行數(shù)據(jù)重構(gòu)的方法進行介紹。

物理磁盤最基本的組成部分是由堅硬金屬材料制成的涂以磁性介質(zhì)的盤片,盤片被分成許多扇形的區(qū)域,每個區(qū)域叫一個扇區(qū),每個扇區(qū)可存儲一定字節(jié)的數(shù)據(jù),盤片通常有兩面,不同盤片相同半徑的磁道所組成的圓柱稱為柱面,物理磁盤也有兩個面,每個面都有一個磁頭,可用磁頭號進行區(qū)分,不同存儲容量磁盤的盤片數(shù)不等,其中,物理磁盤的容量=磁頭數(shù)×磁道(柱面)數(shù)×每道扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù)。將數(shù)據(jù)沿著物理磁盤上的磁道的扇區(qū)存儲。當(dāng)通過磁盤驅(qū)動器在向磁盤讀取和寫入數(shù)據(jù)時,以扇區(qū)為單位進行數(shù)據(jù)的讀取和寫入(簡稱讀寫)。

可以用柱面/磁頭/扇區(qū)來唯一定位磁盤上每一個扇區(qū),按照扇區(qū)號、磁頭號和柱面號(磁道號)的順序連續(xù)地為每個扇區(qū)進行編號,生成對每個扇區(qū)編號,這樣通過扇區(qū)編號可定位到物理磁盤的扇區(qū)位置,也就是存儲數(shù)據(jù)的位置。

當(dāng)對物理磁盤中的數(shù)據(jù)進行讀寫時,物理磁盤的磁頭通常是從開始位置順序移動,從位于磁盤里面的一側(cè)磁道到遠離磁盤里面?zhèn)鹊拇诺理樞蛞苿?,在一個磁道上讀寫時,按照順時針或者逆時針的順序移動磁頭。

參見圖1所示,該raid中,包括3塊物理磁盤,分別是diska、diskb、和diskc,每塊物理磁盤具有一定的存儲空間,該存儲空間可用物理磁盤的物理地址表示,將每塊物理磁盤的存儲空間劃分成a1到a100共計100個區(qū)域,這里將每塊區(qū)域叫做物理塊,每個物理塊具有物理地址,物理地址即每個物理塊所在區(qū)域的實際地址,該實際地址為存儲在物理磁盤中的數(shù)據(jù)位于物理磁盤的實際位置。

上述物理塊可為包括物理磁盤中一個或多個扇區(qū),如果每個物理塊包括一個扇區(qū),則扇區(qū)編號的地址可作為物理塊的物理地址,如果每個物理塊包括多個扇區(qū),可將多個扇區(qū)再次按照一定的規(guī)則進行編號,該編號可以作為物理塊的物理地址,對物理磁盤進行讀寫時會根據(jù)該物理地址進行讀寫。

這里,每個物理磁盤包括數(shù)據(jù)空間和備份空間,以diska物理磁盤為例,備份空間包括物理塊a98-a100作為備份數(shù)據(jù)塊,數(shù)據(jù)空間包括物理塊a1-a97作為存儲物理塊作為數(shù)據(jù)正常的讀寫物理塊,備份物理塊用于對發(fā)生故障的其他物理塊中的數(shù)據(jù)進行重構(gòu)以恢復(fù)數(shù)據(jù)。

這里的備份物理塊可作為對物理磁盤進行熱備份的空間,熱備份指應(yīng)用磁盤陣列的系統(tǒng)處于正常運行狀態(tài)時,可在某個物理磁盤或者物理磁盤中的某個區(qū)域出現(xiàn)故障時,可以在不停止服務(wù)和不影響使用的情況下利用熱備份空間來替換發(fā)生故障的物理磁盤或區(qū)域。

可建立一個映射表,映射表中可包括從小到大或者其他順序的編號(該編號也可以叫做邏輯地址),將這些編號與物理磁盤中物理塊的物理地址分別建立映射關(guān)系,基于這個映射表根據(jù)一定的規(guī)則將多個物理磁盤組成一個或多個邏輯磁盤,即raid,后續(xù)對raid進行讀寫時,根據(jù)映射表中的編號獲取物理磁盤中的物理地址,也就是實際讀取位置。當(dāng)存儲物理塊a3發(fā)生故障而失效時,可利用備份物理塊a98對存儲物理塊a3中的數(shù)據(jù)進行恢復(fù),將存儲物理塊a3中的數(shù)據(jù)通過數(shù)據(jù)重構(gòu)恢復(fù)到備份物理塊a98,存儲物理塊a3被備份物理a98替代,這里的替代指存儲物理塊a3的物理地址被備份物理塊a98的物理地址替代,也就是說,將映射表中物理塊a3對應(yīng)的物理地址與物理塊a3對應(yīng)的編號(邏輯地址)之間的映射關(guān)系,替換為備份物理塊a98對應(yīng)的物理地址與物理塊a3對應(yīng)的編號(邏輯地址)之間的映射關(guān)系,原來備份物理塊a98就不能再作為備份物理塊使用。

數(shù)據(jù)修復(fù)之后,參照圖1所示,以圖1中所示的各物理塊從上到下的順序進行讀寫為例(這里假設(shè)映射表中編號的順序與當(dāng)前圖1中所示的物理塊的順序一致為例),對于raid而言,當(dāng)進行數(shù)據(jù)讀寫時,讀寫到物理塊a2時,接下來按照順序本來應(yīng)該是讀寫物理塊a3,但是由于物理塊a3被物理塊a98替代,此時會讀寫物理塊a98,然后再讀寫物理塊a4,在這個讀寫過程中物理磁盤的磁頭需要先從物理塊a2對應(yīng)的物理地址所在的位置移動到位于物理磁盤末尾的物理塊a98對應(yīng)的物理地址所在的位置,之后再移動到物理塊a4對應(yīng)的物理地址所在的位置;其他物理磁盤或者物理磁盤中的物理塊發(fā)生故障而失效時,道理相同。

需要注意的是,物理塊a3和物理塊a98在圖1發(fā)生的變化說明的是對應(yīng)各物理塊的物理地址或者邏輯地址發(fā)生變化,并不是物理磁盤的物理塊所在物理磁盤的實際空間位置發(fā)生改變,物理塊所在物理磁盤的實際空間位置并不發(fā)生變化。

從上述讀寫過程可知,當(dāng)有備份物理塊替代發(fā)生故障的存儲物理塊時,由于備份物理塊均在物理磁盤的尾部位置,數(shù)據(jù)恢復(fù)之后,有故障存儲物理塊被修復(fù)的位置附近,磁頭讀取時的位置會發(fā)生很大的跳躍,如上述描述的磁頭需要從物理塊a2對應(yīng)的物理地址所在的位置移動至物理塊a98對應(yīng)的物理地址所在的位置,然后再移動至物理塊a4對應(yīng)的物理地址所在的位置,物理塊a2、物理塊a98和物理塊a4可能位于不同的磁道或者位于相同磁道的不同位置,這樣需要磁頭需要反復(fù)來回移動,當(dāng)然本實施例只是舉例,實際讀取時甚至可能需要磁頭在不同物理磁盤之間的移動,不管實際中按照何種順序讀取,每當(dāng)有物理塊發(fā)生故障時,磁頭都需要從正在讀取的物理塊的位置移動到磁盤尾部的位置,這樣需要花費較多的時間用于尋道(尋道指磁頭在磁道上移動),導(dǎo)致物理磁盤讀寫性能大大降低,進而影響到整個raid的讀寫性能,并且會導(dǎo)致raid性能分布不均勻的問題。

針對上述方案存在的問題,本發(fā)明實施例中提出一種磁盤陣列(以下簡稱raid),該磁盤陣列包括:

多個物理磁盤,每個物理磁盤的存儲空間包括多個物理塊,每個所述物理塊具有物理地址;

每個物理磁盤的多個物理塊包括備份物理塊和存儲物理塊,且所述備份物理塊間隔分布于存儲物理塊中。

基于上述的磁盤陣列,還提供一種數(shù)據(jù)重構(gòu)方法,如圖2所示,該方法包括以下步驟:

步驟s10、獲取磁盤陣列中發(fā)生故障的存儲物理塊的物理地址;

步驟s20、根據(jù)發(fā)生故障的存儲物理塊的物理地址查找與發(fā)生故障的存儲物理塊的物理地址最近的物理地址對應(yīng)備份物理塊作為預(yù)選備份物理塊;

上述查找的順序可以從發(fā)生故障的存儲物理塊的物理地址開始同時雙向順序查找,或者從物理磁盤的初始物理地址開始正向順序查找,或者從物理磁盤的終止物理地址開始逆向順序查找,此處對于查找的順序和方式并不做限定。

步驟s30、將發(fā)生故障的物理塊中的數(shù)據(jù)重構(gòu)至預(yù)選備份物理塊中;

步驟s40、將發(fā)生故障的存儲物理塊的物理地址替換為預(yù)選備份物理塊的物理地址。

raid為一種數(shù)據(jù)存儲裝置,raid有多個端口可以與主機直接連接或者通過網(wǎng)絡(luò)連接,一個主機可同時連接不同端口,這樣可提升數(shù)據(jù)傳輸速度。與電腦用單磁盤內(nèi)部集成緩存一樣,在raid內(nèi)部為加快與主機交互速度,可帶有一定量的緩沖存儲器,主機與raid的緩存交互,緩存與其中物理磁盤進行數(shù)據(jù)交互。

當(dāng)將raid與主機相連,主機中設(shè)置有程序,通過該程序可與raid進行數(shù)據(jù)交互,進而通過主機控制raid,進行數(shù)據(jù)讀取、數(shù)據(jù)寫入或者數(shù)據(jù)重構(gòu)等操作。

可在數(shù)據(jù)重構(gòu)的程序運行過程中,如果raid中的某一塊物理磁盤或者物理磁盤中的某個物理塊發(fā)生故障而失效時,可設(shè)置返回一條指令,該指令攜帶物理塊的物理地址,因此,通過該指令可以獲取發(fā)生故障的存儲物理塊(以下簡稱失效物理塊)的物理地址,通過該失效物理塊的物理地址可以查找與該物理地址最近的物理地址對應(yīng)的備份物理塊作為預(yù)選備份物理塊,這樣就可以通過一定算法將失效物理塊中的數(shù)據(jù)重構(gòu)到預(yù)選備份物理塊中,并且,將失效物理塊的物理地址替換為預(yù)選備份物理塊的物理地址,也就是用預(yù)選備份物理塊替代失效物理塊。

下面結(jié)合圖3對上述實施例提供方的磁盤陣列和基于磁盤陣列的數(shù)據(jù)重構(gòu)方法進行詳細(xì)介紹。

參照圖3所示的raid,包括三塊物理磁盤,分別是diska、diskb和diskc,將每塊物理磁盤的存儲空間劃分成a1到a100共計100個物理塊,每個物理塊具有物理地址,該物理地址的含義可參見上述的描述,在此不再贅述。

從圖3中可以看出,物理磁盤diska中,物理塊a25、物理塊a50和物理塊a75為備份物理塊,其余的為存儲物理塊,物理磁盤diskb和diskb結(jié)構(gòu)與物理磁盤diska相同。每間隔24個存儲物理塊設(shè)置有一個備份物理塊,備份物塊塊間隔均勻分布于存儲物理塊中,基于此種結(jié)構(gòu)的物理磁盤可參照上述實施例中對圖1的描述建立映射表,基于映射表根據(jù)一定的規(guī)則將多個物理磁盤組成raid,下面介紹采用備份物理塊進行數(shù)據(jù)重構(gòu)的方法。

當(dāng)物理磁盤diska中的物理塊a24發(fā)生故障失效時,可選擇物理塊a25、物理塊a50或者物理塊a75其中任何一塊作為備份物理塊進行數(shù)據(jù)重構(gòu)以恢復(fù)物理塊24中的數(shù)據(jù)。優(yōu)選的是,將距離物理塊25的物理地址最近的物理塊a25作為預(yù)選備份物理塊,將物理塊a24中的數(shù)據(jù)重構(gòu)到物理塊a25中,也就是a24被物理塊a25替代。

數(shù)據(jù)修復(fù)之后,以圖3中所示的各物理塊從上到下的順序進行讀寫為例(這里假設(shè)映射表中編號的順序與當(dāng)前圖3中所示的物理塊的順序一致為例),對于raid而言,當(dāng)進行數(shù)據(jù)讀寫時,讀寫到物理塊a23時,接下來按照順序本來應(yīng)該是讀寫物理塊a24,但是由于物理塊a24被a25替代,此時會讀寫物理塊a25,然后在讀寫物理塊a26,在這個讀寫過程中物理磁盤的磁頭需要先從物理塊a23對應(yīng)的物理地址所在的位置移動到位于物理塊a24對應(yīng)的物理地址所在的位置,之后再移動到物理塊a25對應(yīng)的物理地址所在的位置;同樣道理,當(dāng)物理磁盤diskb中物理塊b2發(fā)生故障壞掉時,用來對物理塊b2修復(fù)的備份物理塊可能是物理塊b25,修復(fù)之后對于raid而言,讀寫到物理塊b1時,接下來按照順序本來應(yīng)該是讀寫物理塊b2,但是由于物理塊b2被b25替代,此時會讀寫物理塊b25,然后在讀寫物理塊b3(圖中未示出),在這個讀寫過程中物理磁盤的磁頭需要先從物理塊b1對應(yīng)的物理地址所在的位置移動到物理塊b25對應(yīng)的物理地址所在的位置,之后再移動到物理塊b3對應(yīng)的物理地址所在的位置。

需要注意的是,上述物理塊a24、物理塊a25、物理塊b2和物理塊b25,在圖3發(fā)生的變化說明的是對應(yīng)各物理塊的物理地址或者邏輯地址發(fā)生變化,并不是物理磁盤的物理塊所在的物理磁盤的實際空間位置發(fā)生改變,物理塊所在物理磁盤的實際空間位置并不發(fā)生變化。

從上述讀寫過程可知,與之前實施例描述的實施方式相比,由于備份物理塊間隔分布在存儲物理塊中,可以選擇與發(fā)生故障的存儲物理塊對應(yīng)的物理地址較近的或者最近的物理塊作為備份物理塊,當(dāng)有備份物理塊替代發(fā)生故障的存儲物理塊數(shù)據(jù)恢復(fù)之后,進行數(shù)據(jù)讀寫時,雖然磁頭也不能按照原來的順序移動,但是磁頭讀取時的位置移動較小,可能是磁頭的位置雖然跳躍但是還是能按照順序,不需要來回反復(fù)移動,也有可能需要磁頭在不同磁道之間反復(fù)移動,但是反復(fù)移動的間隔距離會減小(例如,從磁頭從b1到b25再到b3),與之前移動方式(例如,磁頭從b1到b98再到b3)相比,磁頭移動的距離也會明顯減小,磁頭尋道的時間會減小,數(shù)據(jù)重構(gòu)之后對raid讀寫性能的影響會減小,進而提高整個raid的讀寫性能。

上述圖中所示的備份物理塊和存儲物理塊的劃分方式只是舉例說明,本實施例中并不限于圖3所示的方式,備份物理塊不一定是間隔相等數(shù)量個物理塊均勻分布在存儲物理塊中,可以是間隔不相等的物理塊設(shè)置一個,本實施例對此不限定,只要備份物理塊間隔分布于存儲物理塊中均可達到上述的技術(shù)效果。

在一個可選的實施方式中,將物理磁盤劃分成多個物理塊,具體可以是:根據(jù)磁盤陣列中每個物理磁盤的總?cè)萘亢皖A(yù)設(shè)物理塊容量將每個物理磁盤的存儲空間劃分成多個物理塊。

本實施例中,物理磁盤的總?cè)萘恐肝锢泶疟P能夠存儲數(shù)據(jù)量的大小,容量是決定磁盤數(shù)據(jù)存儲量大小的能力,通常以mb(兆)、gb(千兆)或者tb為單位,每1024字節(jié)為1kb,每1024kb為1mb,每1024mb為1gb,每1024gb為1tb,磁盤的總?cè)萘靠赏ㄟ^上述提到的方法,計算磁頭數(shù)×磁道(柱面)數(shù)×每道扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù)的乘積。

預(yù)設(shè)物理塊容量指每個單個物理塊的容量,該容量的大小可根據(jù)實際需要設(shè)置,該容量可以為一個扇區(qū)或多個扇區(qū)的容量,或者一個磁道或者多個磁道的容量。

根據(jù)每個物理磁盤的總?cè)萘亢皖A(yù)設(shè)物理塊容量可以計算出每個物理磁盤的物理塊總數(shù)量,如果每個物理塊的容量均相同,總?cè)萘砍詥蝹€物理塊的容量的商即為物理塊總數(shù)量。

本實施例只是描述了一種劃分物理塊的方式,當(dāng)然也可以采用其他方式對將每個物理磁盤劃分為多個物理塊。每個物理塊的容量可以相同也可以不同,根據(jù)實際情況可進行對物理磁盤進行劃分。

在一個可選的實施方式中,對于備份物理塊的分布方式,具體可以包括:

根據(jù)預(yù)設(shè)備份空間比例和物理塊總數(shù)量設(shè)置備份間隔數(shù)量,每間隔備份間隔數(shù)量個存儲物理塊設(shè)置一個備份物理塊。

可設(shè)置一定比例的存儲空間作為備份空間,該比例可在用戶創(chuàng)建raid時設(shè)置,該比例通常不超過50%,通過備份空間比例和總數(shù)量a可以計算出需要的備份物理塊的數(shù)量,例如,如果備份比例是2%,總數(shù)量是1000,則備份物理塊的數(shù)量是20個,這樣為每個物理磁盤預(yù)留20個物理塊作為備份物理塊,其他的980個作為存儲物理塊,這樣可以每間隔50個存儲物理塊設(shè)置一個備份物理塊。

本實施例中,備份物理塊均勻的分布在存儲物理塊中,這樣通過備份物理塊替換發(fā)生故障的存儲物理塊對數(shù)據(jù)進行恢復(fù)之后,每隔一定數(shù)量個存儲物理塊就有一個備份物理塊,因此,可以查詢到的與發(fā)生故障的存儲物理塊對應(yīng)的物理地址距離接近的備份物理塊的概率更大,這樣進一步減小磁頭移動的距離磁頭尋道的時間會更小,進一步減小數(shù)據(jù)修復(fù)之后對raid讀寫性能的影響,提高整個raid的讀寫性能。

在另一個實施例中,該raid中,存儲物理塊中存儲有備份位圖和存儲位圖,備份位圖包括各備份物理塊在物理磁盤中的分布位置,存儲備份位圖包括各存儲物理塊在物理磁盤中的分布位置,備份位圖中的位數(shù)值和所述存儲位圖中的位數(shù)值為互補關(guān)系。

位圖bitmap可以理解為通過一個bit數(shù)組來存儲特定數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),由于bit是數(shù)據(jù)的最小單位,所以這種數(shù)據(jù)結(jié)構(gòu)往往是非常節(jié)省存儲空間。

本實施例中可根據(jù)備份物理塊和存儲物理塊在物理磁盤中的分布位置,生成兩張位圖,即備份位圖和存儲位圖,備份位圖用于標(biāo)識備份物理塊的分布情況,存儲位圖用以標(biāo)識存儲物理塊的分布情況,可以用一個字節(jié)代表每個物理塊,位圖中每個位置的位數(shù)值可為0或者1。

參照圖4所示,備份位圖包括300個位置,各位置與各備份物理塊在物理磁盤中的位置對應(yīng),物理磁盤中作為備份空間的備份物理塊對應(yīng)位置的位數(shù)值置為1,其他數(shù)據(jù)空間的存儲物理塊對應(yīng)位置的位數(shù)值置為0;如圖5所示,存儲位圖中,作為備份空間的備份物理塊對應(yīng)位置的位數(shù)值置為0,數(shù)據(jù)空間的存儲物理塊對應(yīng)位置的位數(shù)值置為1,可以看出存儲位圖中的位數(shù)值與備位位圖中的位數(shù)值為互補關(guān)系。

上述位圖可以表示備份物理塊和存儲物理塊在物理磁盤中的分布位置,通過查找位圖中的各位數(shù)值可以獲知備份物理塊和存儲物理塊所在的位置。

本實施例中,建立了備份位圖和存儲位圖,由于位圖bitmap需要占用的存儲空間小,因此可以被一次性加載到控制物理磁盤運行的主機的緩存中,通過該位圖bitmap可高效的對各物理磁盤的物理塊進行數(shù)據(jù)讀取、數(shù)據(jù)寫入和數(shù)據(jù)重構(gòu)等操作,可整體提高raid的運行速度。

上述的位圖可以存儲在任何一個物理磁盤的物理塊中,基于上述的位圖,在查找預(yù)選備份物理塊時,可通過讀取位圖中的各位數(shù)值進行查找,例如,如果存儲物理塊a24發(fā)生故障,讀取備份位圖,查找到與物理塊a24所在位置最近的位數(shù)值為1的位置,該位置對應(yīng)的物理塊a25可作為預(yù)選備份物理塊。通過位圖可以方便快速的查找到預(yù)選備份物理塊。

在一個可選的實施方式中,該磁盤陣列還包括:

多個虛擬磁盤,多個虛擬磁盤為將磁盤陣列的多個物理磁盤虛擬化得到的;

其中,每個虛擬磁盤的地址空間包括多個虛擬塊,每個虛擬塊具有邏輯地址,虛擬塊的數(shù)量與多個物理磁盤中存儲物理塊的數(shù)量相同,每個虛擬塊的邏輯地址與每個存儲數(shù)據(jù)塊的物理地址具有映射關(guān)系。

將構(gòu)成磁盤陣列的多個物理磁盤虛擬化為多個虛擬磁盤,從用戶的角度看到的是多個虛擬磁盤而不是物理磁盤,通過將物理塊的物理地址與虛擬塊的邏輯地址建立映射關(guān)系,利用該映射關(guān)系能夠?qū)⑻摂M磁盤的虛擬塊的邏輯地址轉(zhuǎn)換為相應(yīng)的物理磁盤的物理塊的物理地址,也就是實際地址,從而將數(shù)據(jù)按照預(yù)定的分配策略存儲于多個物理磁盤中,將物理磁盤虛擬化為多個虛擬磁盤后,數(shù)據(jù)實際還是存儲在物理磁盤中,因此,虛擬塊的虛擬地址只需要與存儲物理塊的物理地址建立映射關(guān)系即可,不需要考慮備份物理塊。

為了與物理磁盤中的各存儲物理塊對應(yīng),虛擬磁盤的虛擬塊的數(shù)量與物理磁盤的存儲物理塊的數(shù)量相同,每個虛擬塊的容量與每個存儲物理塊的容量可以相同。在對物理磁盤進行虛擬化時,也可以利用位圖構(gòu)建虛擬磁盤,可根據(jù)存儲位圖中各位置的位數(shù)值及其位數(shù)值的分布情況獲得各存儲物理塊的位置,據(jù)此根據(jù)一定的算法構(gòu)建出虛擬磁盤陣列。

在一個可選的實施方式中,虛擬磁盤的數(shù)量小于或者等于所述物理磁盤的數(shù)量,多個虛擬磁盤中位于相同行的多個虛擬塊作為一個條帶,且每個條帶的各虛擬塊的邏輯地址分別與不同物理磁盤中的存儲物理塊的物理地址具有映射關(guān)系。

如果不存在虛擬磁盤,如果其中一個物理磁盤diska發(fā)生故障失效,對物理磁盤diska中的所有物理塊中的數(shù)據(jù)都要通過數(shù)據(jù)重構(gòu)進行恢復(fù),現(xiàn)有技術(shù)中其中一種方法是,分別對每個存儲物理塊中的數(shù)據(jù)進行重構(gòu),在進行數(shù)據(jù)重構(gòu)過程中,通常從其他未失效的物理磁盤中讀取數(shù)據(jù),進而將失效磁盤中的數(shù)據(jù)恢復(fù)到備份物理塊,由于物理磁盤在進行讀寫時,同一時刻只能對一個物理塊進行讀取或?qū)懭?,因此,在?shù)據(jù)重構(gòu)過程中,只能按照物理塊的順序逐個進行,這樣數(shù)據(jù)重構(gòu)的時間會很長,而數(shù)據(jù)重構(gòu)過程中出現(xiàn)新的失效物理磁盤概率會大大增加,數(shù)據(jù)丟失的風(fēng)險也隨之增加。因而對raid數(shù)據(jù)重構(gòu)的速度的優(yōu)化是存儲系統(tǒng)中的重要問題。

下面結(jié)合附圖采用本實施例的raid進行數(shù)據(jù)重構(gòu)的過程。

如圖6所示,raid中,將六塊物理磁盤diska、diskb、diskc、diskd、diske和diskf虛擬化為三塊虛擬磁盤vdiska、vdiskb和vdiskc,當(dāng)然也可以虛擬化為兩塊、或者四塊、或者五塊,只要數(shù)量少于六塊即可。

將位于不同虛擬磁盤中相同行的虛擬塊作為一個條帶,如圖6所示,虛擬塊a1、虛擬塊b1和虛擬塊c1作為一個條帶,其他條帶同理可推。

若每個條帶中其中一個或多個虛擬塊發(fā)生故障失效,進行數(shù)據(jù)重構(gòu)時,需要從該條帶中其他沒有失效的虛擬塊中讀取數(shù)據(jù),進而通過算法對失效虛擬塊中的數(shù)據(jù)進行重構(gòu)。此處虛擬塊發(fā)生故障是指虛擬塊對應(yīng)的物理塊發(fā)生故障失效,對虛擬塊處理的過程實際上時對虛擬塊對應(yīng)的物理塊中的數(shù)據(jù)進行處理。

如圖6所示,如果物理磁盤diska失效,需要對其中每個存儲物理塊進行數(shù)據(jù)重構(gòu),按照目前的架構(gòu),對物理塊a1進行數(shù)據(jù)重構(gòu)時,需要讀取虛擬塊b1對應(yīng)的物理塊b1和虛擬塊c1對應(yīng)的物理塊c1,對物理塊a2進行數(shù)據(jù)重構(gòu)需要讀取虛擬塊e2對應(yīng)的物理塊e2和虛擬塊f2對應(yīng)物理塊f2,其他的同理可推。圖中虛擬磁盤中各虛擬塊的標(biāo)號與物理磁盤中各物理塊的標(biāo)號相同,只是為了方便說明各虛擬塊的邏輯地址與各存儲數(shù)據(jù)塊的物理地址具有映射關(guān)系,標(biāo)號并不代表實際的邏輯地址或者物理地址。

由此可見,處于同一條帶的各虛擬塊的邏輯地址分別與不同物理磁盤中的存儲物理塊的物理地址具有映射關(guān)系,也就是,處于同一條帶的各虛擬塊分別與不同物理磁盤中的存儲物理塊對應(yīng),按照圖6所示的結(jié)構(gòu),對物理塊a1和對物理塊a2進行數(shù)據(jù)重構(gòu)時,需要分別對物理塊b1所在的物理磁盤diskb、物理塊c1所在的物理磁盤diskc、物理塊e2所在的物理磁盤diske、物理塊f2所在的物理磁盤diskf進行數(shù)據(jù)讀取或者數(shù)據(jù)寫入等操作,由于各物理塊位于不同的物理磁盤,因此,對物理塊a1和對物理塊a2可以同時進行數(shù)據(jù)重構(gòu),在6塊物理磁盤和3塊虛擬磁盤盤的情況下,數(shù)據(jù)重構(gòu)的時間相對于現(xiàn)有技術(shù)理論上可以縮短一半,當(dāng)物理磁盤數(shù)量更多時重建時間也會更短,因此,可以很大程度上降低數(shù)據(jù)重構(gòu)過程中出現(xiàn)新的失效物理磁盤的概率,數(shù)據(jù)丟失的風(fēng)險也隨之降低,因而可提高raid的整體性能。

在一個可選的實施方式中,上述的步驟s40將發(fā)生故障的存儲物理塊的物理地址替換為預(yù)選備份物理塊的物理地址之后,還可以包括以下步驟:

步驟s50、將備份位圖中與預(yù)選備份物理塊對應(yīng)位置的位數(shù)值取反,將存儲位圖中與預(yù)選備份物理塊置對應(yīng)位置的位數(shù)值也取反。

本實施例中,在通過備份物理塊進行數(shù)據(jù)重構(gòu)之后,由于預(yù)選備份物理塊已經(jīng)替換發(fā)生故障的存儲物理塊,這時,將備選位圖和存儲位圖中對應(yīng)位置的位數(shù)值進行更新,例如,上述實施例中描述的,如果存儲物理塊a24被備選物理塊a25替換,數(shù)據(jù)重構(gòu)之后,備選位圖中對應(yīng)物理塊a25的位置的數(shù)量由1變?yōu)?,存儲位圖中對應(yīng)物理塊25位置的數(shù)值由0變?yōu)?,這樣位圖可以反映數(shù)據(jù)重構(gòu)之后的備選物理塊和存儲物理塊的分布位置。

在一個可選的實施方式中,上述的步驟s40具體可以包括以下步驟:

步驟s60、將發(fā)生故障的存儲物理塊對應(yīng)的物理地址與發(fā)生故障的存儲物理塊對應(yīng)的虛擬塊的邏輯地址之間的映射關(guān)系,替換為預(yù)選備份物理塊對應(yīng)的物理地址與發(fā)生故障的存儲物理塊對應(yīng)的虛擬塊的邏輯地址之間的映射關(guān)系。

本實施例中,在通過備份物理塊進行數(shù)據(jù)重構(gòu)之后,由于預(yù)選備份物理塊已經(jīng)替換發(fā)生故障的存儲物理塊,由于虛擬塊與物理塊之間具有映射關(guān)系,此時需要對映射關(guān)系進行更新,將發(fā)生故障的存儲物理塊與對應(yīng)虛擬塊之間的映射替換為預(yù)選備份物理塊與對應(yīng)虛擬塊之間的映射。

參照附圖7所示,如果存儲物理塊a24被備選物理塊a25替換,存儲物理塊b2被備選物理塊b25替換數(shù)據(jù)重構(gòu)之后,在虛擬磁盤中,虛擬塊a24被虛擬塊a24替換,虛擬塊b2被虛擬塊b25替換。

本發(fā)明實施例還提供一種存儲設(shè)備,包括存儲器和處理器,存儲器中存儲有多條指令,該指令適于由處理器加載并執(zhí)行上述實施例中所述的數(shù)據(jù)重構(gòu)方法。

如圖8所示,上述的存儲設(shè)備可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等,存儲設(shè)備可以包括處理器和存儲器,存儲器可以為非易失性存儲器(比如硬盤),還可以包括內(nèi)存和內(nèi)部總線等,當(dāng)然存儲設(shè)備在實際使用時一般都會通過外部接口掛接一個或者多個raid陣列。存儲器中存儲多條指令,處理器可以將相應(yīng)指令存儲器讀入內(nèi)存中然后運行。

本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1