欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種raid5重構中的數(shù)據(jù)源選擇方法

文檔序號:6625787閱讀:458來源:國知局
一種raid5重構中的數(shù)據(jù)源選擇方法
【專利摘要】本發(fā)明涉及一種RAID5重構中的數(shù)據(jù)源選擇方法。本發(fā)明方法首先確定被損壞磁盤中一個磁盤塊B(x,y)的兩個數(shù)據(jù)源集合Sraid和Sbackup,然后對損壞磁盤的每個磁盤塊分別計算該磁盤塊兩個數(shù)據(jù)源Sraid和Sbackup的權重Wraid和Wbackup,Wraid和Wbackup用來估算讀取Sraid和Sbackup中所有塊的代價,最后根據(jù)獲得的單個磁盤塊的數(shù)據(jù)源及其權重,得到損壞磁盤k中所有磁盤塊的最佳數(shù)據(jù)源集合Vk。本發(fā)明方法通過對當前存儲系統(tǒng)性能和數(shù)據(jù)更新狀況進行分析,在RAID5剩余磁盤和備份系統(tǒng)這兩個數(shù)據(jù)源之間選擇最為合適的數(shù)據(jù)源來重構數(shù)據(jù),有效提高了RAID5的重構性能。
【專利說明】一種RAID5重構中的數(shù)據(jù)源選擇方法

【技術領域】
[0001]本發(fā)明屬于數(shù)據(jù)存儲【技術領域】,具體涉及一種RAID5重構中的數(shù)據(jù)源選擇方法。

【背景技術】
[0002]當RAID5中的I塊磁盤損壞時,需要由一塊空白磁盤(spare盤)代替損壞磁盤運行。RAID5管理軟件會通過對剩余正常磁盤上的數(shù)據(jù)進行計算,得到損壞磁盤上的數(shù)據(jù),并復制到spare磁盤上,這一過程稱為RAID5的重構。重構帶來了兩個問題:第一,磁盤容量的迅速增長導致重構時間越來越長。重構需要對正常的磁盤上的所有數(shù)據(jù)進行讀取并計算。將一個20TB的RAID5重構大概需要數(shù)小時,在重負載的情況下甚至會需要數(shù)十個小時到數(shù)天。在這段時間內RAID運行在降級狀態(tài),數(shù)據(jù)存儲的可靠性降低,一旦再出現(xiàn)磁盤損壞會造成真正的數(shù)據(jù)丟失。第二,重構過程由于要訪問正常磁盤,占用了大量的磁盤帶寬和CPU資源,降低了正常的存儲服務性能。
[0003]目前一種前沿的RAID5重構方法利用外部存放的備份數(shù)據(jù)來加速RAID在線重構。云存儲系統(tǒng)為了保證數(shù)據(jù)的可靠性或者降低存儲成本,會將數(shù)據(jù)從生產(chǎn)系統(tǒng)復制到備份系統(tǒng)。對備份系統(tǒng)進行額外的存取不影響生產(chǎn)系統(tǒng)的訪問性能。因此在RAID5的磁盤損壞時,可以從備份系統(tǒng)中將部分有效數(shù)據(jù)復制出來,恢復已損壞磁盤的數(shù)據(jù),減少了重構過程對存儲系統(tǒng)中正常磁盤的讀取和計算,從而縮短重構時間,減少重構所需的磁盤訪問負載,從而保證重構期間的視頻流寫入帶寬。
[0004]如圖1所示,當RAID5中的磁盤2損壞時,spare代替了磁盤2。此時重構所需要的數(shù)據(jù)可以來自兩個地方:1.由磁盤O和磁盤I上的數(shù)據(jù),可以通過異或操作得到磁盤2上的所有最新數(shù)據(jù)。2.從備份系統(tǒng)中獲得上一次備份時保存的磁盤2的數(shù)據(jù),由于在上次備份之后磁盤2上的數(shù)據(jù)可能已經(jīng)改變,備份系統(tǒng)中只有磁盤2上的部分最新數(shù)據(jù)。
[0005]如何在重構過程中合理選擇上述兩個數(shù)據(jù)源進行重構,是提高重構性能的關鍵問題。


【發(fā)明內容】

[0006]本發(fā)明的目的就是提供一種RAID5重構中的數(shù)據(jù)源選擇方法。
[0007]RAID5損壞磁盤上的數(shù)據(jù)過兩個來源進行恢復:(a) RAID5剩余的正常磁盤;(b)備份系統(tǒng);本發(fā)明方法在重構過程中,首先對損壞磁盤上的每一個磁盤塊建立兩個數(shù)據(jù)源集合,第一數(shù)據(jù)源集合完全由RAID5剩余正常磁盤上的磁盤塊組成,通過這些磁盤塊計算出損壞磁盤上的這個磁盤塊上的數(shù)據(jù);第一數(shù)據(jù)源集合由備份系統(tǒng)中能夠用于計算這一損壞磁盤塊的備份塊組成,如果備份系統(tǒng)上的備份塊上的數(shù)據(jù)不是最新的版本,則由RAID5剩余正常磁盤中與該備份塊對應的磁盤塊代替這個備份塊加入到第二數(shù)據(jù)源集合,使用第二數(shù)據(jù)源集合計算出損壞磁盤塊;然后根據(jù)RAID5的構成和備份系統(tǒng)的性能分別估算出讀出這兩個數(shù)據(jù)源集合的代價;最后選擇代價低的數(shù)據(jù)源集合來對損壞磁盤的這一磁盤塊進行重構。通過對磁盤上每一個磁盤塊選擇讀出代價最低的數(shù)據(jù)源集合,可以優(yōu)化重構性能。
[0008]本發(fā)明方法的具體步驟是:
步驟一、確定被損壞磁盤中一個磁盤塊B(x,y)的兩個數(shù)據(jù)源集合Sraid和Sbadtup,I彡X彡η, I彡y彡m;其中η為RAID5中的磁盤個數(shù),m為每個磁盤的磁盤塊個數(shù),x表不該磁盤塊所在磁盤的磁盤號,y表不該磁盤塊在磁盤X中的磁盤塊號,Sraid為全部來自RAID5的數(shù)據(jù)源,Sbackup為基于備份系統(tǒng)的數(shù)據(jù)源,確定的具體方法是:
步驟 1、Sraid =φ ;Sbackup= φ ;φ 表示空集合。
[0009]步驟2、設定i=l ;i為當前檢測的磁盤號。
[0010]步驟3、如果 i 關 X,貝丨J Sraid U {B(i, y)};
步驟4、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟3 ;
步驟5、確定磁盤塊B (X,y)的類型:如果X等于(2-y) % η,則表示B(x,y)為校驗塊P (x,y),直接執(zhí)行步驟8;如果X不等于(2-y) %11,則表示8(1,7)為數(shù)據(jù)塊D (x,y),執(zhí)行步驟6;其中%表示取模操作;
步驟6、如果X大于(2-y) % η,設定r=x ;如果x小于(2-y) % η,設定r=x_l ;r為中間變量;
步驟 7、z=y Xn+r ;如果 bitmap [z]=0,則 Sbackup= Sbackup U {C (z)},其中 bitmap [z]表示第z個塊的更新標識,C(Z)表示RAID5在備份系統(tǒng)中的最新版本第z號備份塊,直接執(zhí)行步驟10 ;
步驟8、設定i=l ;
步驟9、如果i等于X,直接執(zhí)行步驟11 ;
步驟 10、如果 bitmap [z] =0,則 Sbaekup= Sbackup U {C (z)};如果 bitmap [z] =1,則 Sbackup=
Sbackup U {B(i, y)};
步驟11、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟9 ;
步驟 12、如果 Sbadtup= Sraid,則 Sbadtup=O ;
步驟 13、返回 Sraid 和 Sbackup0
[0011]步驟二、對損壞磁盤的每個磁盤塊分別計算該磁盤塊兩個數(shù)據(jù)源Sraid和Sbadtup的權重W raid和Wbaekup, W raid和Wbaekup用來估算讀取Sraid和Sbaekup中所有塊的代價,具體方法是:
步驟1、獲取當前每秒鐘到達RAID5的讀寫請求個數(shù)q,每秒鐘到達備份系統(tǒng)的讀寫請求個數(shù)為P ;
步驟I1、W

raid I ^raid

X (10Xn)/q,其中I Sraid I表示Sraid中元素的個數(shù);
步驟II1、如果 Sbadtup=O,則 Wbadtup= ;
少驟 IV、Wbackup -1 Sbackup_B I X (100 X n)/q+1 Sbackup_c |X100/p,其中 |Sbackup_B| 表不 Sbackup中磁盤塊的個數(shù),sbackup_c表示Sbadtup中備份塊的個數(shù);
步驟V、返回W

raid ^口 Wbackup。
[0012]步驟三、根據(jù)步驟一和二獲得的單個磁盤塊的數(shù)據(jù)源及其權重,得到損壞磁盤k中所有磁盤塊的最佳數(shù)據(jù)源集合\ ;具體方法是:
步驟(I)、設定j=l ;\=Φ ;j為損害磁盤上當前需要重構的磁盤塊號;
步驟(2)、如果j>m,則跳轉到步驟(7);
步驟(3)、使用步驟一獲得磁盤塊B (k, j)的兩個數(shù)據(jù)源Sraid和Sbadtup ;
步驟⑷、使用步驟二獲得數(shù)據(jù)源Sraid和Sbaekup權重W raid和Wbaekup ;
步驟(5)、如果 Wraid>Wbadtup,則 Vk=Vk U {Sraid};如果 W



raid ^ ^backup?則 Vk U {SbackUp};
步驟(6)、設置j=j+l,跳轉到步驟(2);
步驟(7)、Vk即為損壞磁盤k每一個磁盤塊的數(shù)據(jù)源集合。
[0013]本發(fā)明方法針對基于備份的RAID5重構,提出一種重構數(shù)據(jù)源的選擇方法。該方法通過對當前存儲系統(tǒng)性能和數(shù)據(jù)更新狀況進行分析,在RAID5剩余磁盤和備份系統(tǒng)這兩個數(shù)據(jù)源之間選擇讀取代價最低的數(shù)據(jù)源來重構數(shù)據(jù),這種方法有效提高了 RAID5的重構性能。

【專利附圖】

【附圖說明】
[0014]圖1為基于備份的RAID5在線重構示意圖;
圖2為本發(fā)明實施例中RAID5磁盤塊映射示意圖;
圖3為本發(fā)明實施例中備份系統(tǒng)示意圖。

【具體實施方式】
[0015]一種RAID5重構中的數(shù)據(jù)源選擇方法,具體步驟是:
步驟一、確定被損壞磁盤中一個磁盤塊B(x,y)的兩個數(shù)據(jù)源集合Sraid和Sbadtup,I彡X彡η, I彡y彡m;其中η為RAID5中的磁盤個數(shù),m為每個磁盤的磁盤塊個數(shù),x表不該磁盤塊所在磁盤的磁盤號,y表不該磁盤塊在磁盤X中的磁盤塊號,Sraid為全部來自RAID5的數(shù)據(jù)源,Sbackup為基于備份系統(tǒng)的數(shù)據(jù)源,確定的具體方法是:
步驟 1、Sraid =φ ;Sbackup= φ ;φ 表示空集合。
[0016]步驟2、設定i=l ;i為當前檢測的磁盤號。
[0017]步驟3、如果 i 關 X,貝丨J Sraid U {B(i, y)};
步驟4、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟3 ;
步驟5、確定磁盤塊B (X,y)的類型:如果X等于(2-y) % η,則表示B(x,y)為校驗塊P (x,y),直接執(zhí)行步驟8;如果X不等于(2-y) %11,則表示8(1,7)為數(shù)據(jù)塊D (x,y),執(zhí)行步驟6;其中%表示取模操作;
步驟6、如果X大于(2-y) % η,設定r=x ;如果X小于(2-y) % η,設定r=x_l ;r為中間變量;
步驟 7、z=y Xn+r ;如果 bitmap [z]=0,則 Sbackup= Sbackup U {C (z)},其中 bitmap [z]表示第z個塊的更新標識,C(z)表示RAID5在備份系統(tǒng)中的最新版本第z號備份塊,直接執(zhí)行步驟10 ;
步驟8、設定i=l ;
步驟9、如果i等于X,直接執(zhí)行步驟11 ;
步驟 10、如果 bitmap [z] =0,則 Sbaekup= Sbackup U {C (z)};如果 bitmap [z] =1,則 Sbackup=
Sbackup U {B(i, y)};
步驟11、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟9 ;
步驟 12、如果 Sbadtup= Sraid,則 Sbadtup=O ;
步驟 13、返回 Sraid 和 Sbackup0
[0018]步驟二、對損壞磁盤的每個磁盤塊分別計算該磁盤塊兩個數(shù)據(jù)源Sraid和Sbadtup的權重W raid和Wbaekup, W raid和Wbaekup用來估算讀取Sraid和Sbaekup中所有塊的代價,具體方法是:步驟1、獲取當前每秒鐘到達RAID5的讀寫請求個數(shù)q,每秒鐘到達備份系統(tǒng)的讀寫請求個數(shù)為P ;
步驟I1、W

raid I ^raid

X (10Xn)/q,其中I Sraid I表示Sraid中元素的個數(shù);
步驟II1、如果 Sbadtup=O,則 Wbadtup= ;
少驟 IV、Wbackup -1 Sbackup_B I X (100 X n)/q+1 Sbackup_c |X100/p,其中 |Sbackup_B| 表不 Sbackup中磁盤塊的個數(shù),sbackup_c表示Sbadtup中備份塊的個數(shù);
步驟V、返回W

raid ^口 Wbackup。
[0019]步驟三、根據(jù)步驟一和二獲得的單個磁盤塊的數(shù)據(jù)源及其權重,得到損壞磁盤k中所有磁盤塊的最佳數(shù)據(jù)源集合\ ;具體方法是:
步驟(I)、設定j=l ;\=Φ ;j為損害磁盤上當前需要重構的磁盤塊號;
步驟(2)、如果j>m,則跳轉到步驟(7);
步驟(3)、使用步驟一獲得磁盤塊B (k, j)的兩個數(shù)據(jù)源Sraid和Sbadtup ;
步驟⑷、使用步驟二獲得數(shù)據(jù)源Sraid和Sbaekup權重W raid和Wbaekup ;
步驟(5)、如果 Wraid>Wbadtup,則 Vk=Vk U {Sraid};如果 W
raid ^ ^backup?則 Vk U {SbackUp};
步驟(6)、設置j=j+l,跳轉到步驟(2);
步驟(7)、Vk即為損壞磁盤k每一個磁盤塊的數(shù)據(jù)源集合。
[0020]以下舉例進一步說明。
[0021]從圖2中可以看到一個3塊磁盤組成的RAID5系統(tǒng),其中D表示數(shù)據(jù)塊,P表示校驗塊,D和P都屬于算法一中所描述的磁盤塊B。當磁盤I損壞時,我們對磁盤I的每一個磁盤塊B(l,j)選擇用來重構的數(shù)據(jù)源。
[0022]首先來看磁盤塊B (1,O)。根據(jù)算法一中步驟5的計算I ! = (2-0) mod 3,因此B(l, O)是一個數(shù)據(jù)塊,也就是圖2中所表示的D (1,O)。對B(1,0)進行重構有兩種方式:一種是直接通過RAID5的重構,也就是讀出磁盤塊B (0,O)和B (2,O),即圖中所示的D (0,O)和P (2,O),然后進行計算,因此Sraid= {B (O, O),B (2,O)};另一種方法是查找備份系統(tǒng)中是否有B(l, O)的最新版本,根據(jù)算法一的步驟7可以計算得到B(l,O)在備份系統(tǒng)中對應的備份塊是C(1),如圖3,Cd)對應的更新標識為0,這表示備份系統(tǒng)中C(I)是Β(ι,ο)的最新版本,因此 Sbaekup=IC (I)}。
[0023]然后我們來處理B(l,I),根據(jù)算法一中步驟5可以計算得到它是一個校驗塊,也就是圖2種所表示的P(l,I)。B(I1I)的兩個數(shù)據(jù)源計算如下:一種方法是直接通過RAID5的重構,Sraid= {B (0,I), B (2, 1)},B(0,I)和 B (2,I)也就是圖 2 中的 D(0,I)和 D (2,I);另一種方法是從備份系統(tǒng)中獲取,但是從備份系統(tǒng)中獲取校驗塊較為復雜,因為備份系統(tǒng)并不備份校驗塊,而只備份數(shù)據(jù)塊,因此我們不直接查找B(1,I)的備份塊,而是查找B(0,I)和B (2, I)的備份塊,再通過計算得到B (1,I)。根據(jù)算法一的步驟7可以計算得到B(0,I)和B (2,I)在備份系統(tǒng)中對應的備份塊分別是C(2)和C(3),C(2)的更新標識為0,表示C(2)是B(0,I)的最新數(shù)據(jù),C(3)的更新標識為1,表示C(3)不是B(2,I)的最新標志,只能從RAID5 中獲取 B (2,I),因此 Sbadtup=IC (2),B (2,I)}。
[0024]最后來看磁盤塊B (1,2),根據(jù)算法一中步驟5的計算,B (1,2)是一個數(shù)據(jù)塊,也就是圖2中所表示的D (1,2)。對B(l,2)進行重構有兩種方式:一種是直接通過RAID5的重構,也就是讀出磁盤塊B(0,2)和B(2,2),即圖中所示的P(0,0)和D(2,2),然后進行計算,因此Sraid= {B(O,2),B(2,2)};另一種方法是查找備份系統(tǒng)中是否有B(l,2)的最新版本,根據(jù)算法一的步驟7可以計算得到B(l,2)在備份系統(tǒng)中對應的備份塊是C(4),C(4)對應的更新標識為I,這表示備份系統(tǒng)中C(4)不是B(l,2)的最新版本,因此Sbadtup=O。
【權利要求】
1.一種RAID5重構中的數(shù)據(jù)源選擇方法,RAID5損壞磁盤上的數(shù)據(jù)過兩個來源進行恢復:(a)RAID5剩余的正常磁盤;(b)備份系統(tǒng);其特征在于: 在重構過程中,首先對損壞磁盤上的每一個磁盤塊建立兩個數(shù)據(jù)源集合,第一數(shù)據(jù)源集合完全由RAID5剩余正常磁盤上的磁盤塊組成,通過這些磁盤塊計算出損壞磁盤上的這個磁盤塊上的數(shù)據(jù);第一數(shù)據(jù)源集合由備份系統(tǒng)中能夠用于計算這一損壞磁盤塊的備份塊組成,如果備份系統(tǒng)上的備份塊上的數(shù)據(jù)不是最新的版本,則由RAID5剩余正常磁盤中與該備份塊對應的磁盤塊代替這個備份塊加入到第二數(shù)據(jù)源集合,使用第二數(shù)據(jù)源集合計算出損壞磁盤塊;然后根據(jù)RAID5的構成和備份系統(tǒng)的性能分別估算出讀出這兩個數(shù)據(jù)源集合的代價;最后選擇代價低的數(shù)據(jù)源集合來對損壞磁盤的這一磁盤塊進行重構;具體步驟是: 步驟一、確定被損壞磁盤中一個磁盤塊B(x,y)的兩個數(shù)據(jù)源集合Sraid和Sbadtup,I彡X彡η, I彡y彡m;其中η為RAID5中的磁盤個數(shù),m為每個磁盤的磁盤塊個數(shù),x表不該磁盤塊所在磁盤的磁盤號,y表不該磁盤塊在磁盤X中的磁盤塊號,Sraid為全部來自RAID5的數(shù)據(jù)源,Sbackup為基于備份系統(tǒng)的數(shù)據(jù)源,確定的具體方法是: 步驟 1、Sraid =φ ;Sbackup= φ ;φ 表示空集合; 步驟2、設定i=l ;i為當前檢測的磁盤號; 步驟3、如果i關X,貝丨J Sraid U {B(i, y)}; 步驟4、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟3 ; 步驟5、確定磁盤塊B (X,y)的類型:如果X等于(2-y) % η,則表示B(x,y)為校驗塊P (x,y),直接執(zhí)行步驟8;如果X不等于(2-y) %11,則表示8(1,7)為數(shù)據(jù)塊D (x,y),執(zhí)行步驟6;其中%表示取模操作; 步驟6、如果X大于(2-y) % η,設定r=x ;如果X小于(2-y) % η,設定r=x_l ;r為中間變量;
步驟 7、z=yXn+r ;如果 bitmap [z] =0,則 Sbackup= Sbackup U {C(z)},其中 bitmap [z]表示第z個塊的更新標識,C(z)表示RAID5在備份系統(tǒng)中的最新版本第z號備份塊,直接執(zhí)行步驟10 ; 步驟8、設定i=l ; 步驟9、如果i等于X,直接執(zhí)行步驟11 ;
步驟 10、如果 bitmap [z] =0,則 Sbaekup= Sbackup U {C (z)};如果 bitmap [z] =1,則 Sbackup=Sbackup U {B(i, y)}; 步驟11、設置i=i+l ;如果i ( n,則重復執(zhí)行步驟9 ;
步驟 12、如果 Sbadtup= Sraid,則 Sbadtup=O ;
步驟 13、返回 Sraid 和 Sbackup; 步驟二、對損壞磁盤的每個磁盤塊分別計算該磁盤塊兩個數(shù)據(jù)源Sraid和Sbadtup的權重W raid 和 Wbackup,W raid 和Wbadiup用來估算讀取Sraid和Sbadmp中所有塊的代價,具體方法是:步驟1、獲取當前每秒鐘到達RAID5的讀寫請求個數(shù)q,每秒鐘到達備份系統(tǒng)的讀寫請求個數(shù)為P ; 步驟I1、W
raid I ^raid

X (10Xn)/q,其中I Sraid I表示Sraid中元素的個數(shù);
步驟II1、如果 Sbadtup=O,則 Wbadtup= ;
少驟 IV、Wbackup -1 Sbackup_B I X (100 X n)/q+1 Sbackup_c |X100/p,其中 |Sbackup_B| 表不 Sbackup中磁盤塊的個數(shù),sbackup_c表示Sbadtup中備份塊的個數(shù); 步驟V、返回W

raid ^口 Wbackup ; 步驟三、根據(jù)步驟一和二獲得的單個磁盤塊的數(shù)據(jù)源及其權重,得到損壞磁盤k中所有磁盤塊的最佳數(shù)據(jù)源集合Vk ;具體方法是: 步驟(I)、設定j=l ;\=Φ ;j為損害磁盤上當前需要重構的磁盤塊號; 步驟(2)、如果j>m,則跳轉到步驟(7); 步驟(3)、使用步驟一獲得磁盤塊B (k, j)的兩個數(shù)據(jù)源Sraid和Sbadtup ; 步驟⑷、使用步驟二獲得數(shù)據(jù)源Sraid和Sbaekup權重W raid和Wbaekup ;
步驟(5)、如果 Wraid>Wbadtup,則 Vk=Vk U {Sraid};如果 Wraid ^ ^backup?則 Vk U {SbackUp}; 步驟(6)、設置j=j+l,跳轉到步驟(2); 步驟(7)、Vk即為損壞磁盤k每一個磁盤塊的數(shù)據(jù)源集合。
【文檔編號】G06F3/06GK104199623SQ201410445171
【公開日】2014年12月10日 申請日期:2014年9月3日 優(yōu)先權日:2014年9月3日
【發(fā)明者】朱旭東, 高春蓉, 蘇壽海 申請人:創(chuàng)業(yè)軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
政和县| 泽州县| 万盛区| 阳西县| 新干县| 梅河口市| 瓮安县| 大宁县| 福清市| 马鞍山市| 卢湾区| 成都市| 沙洋县| 黄山市| 奉贤区| 明水县| 贵阳市| 青阳县| 余江县| 罗平县| 灵台县| 璧山县| 长宁县| 格尔木市| 泌阳县| 德庆县| 卫辉市| 武汉市| 岢岚县| 三亚市| 长沙县| 辽阳县| 会泽县| 故城县| 仪陇县| 子洲县| 阿瓦提县| 北辰区| 仙居县| 紫云| 香港|