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

一種解決磁盤冗余陣列中寫空洞的方法

文檔序號:6558868閱讀:253來源:國知局
專利名稱:一種解決磁盤冗余陣列中寫空洞的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機讀寫控制領(lǐng)域,特別是指一種解決磁盤冗余陣列中寫空洞(Write Hole)的方法。
背景技術(shù)
在計算機發(fā)展的初期,“大容量”硬盤的價格還相當(dāng)高,解決數(shù)據(jù)存儲安全性問題的主要方法是使用磁帶機等設(shè)備進行備份,這種方法雖然可以保證數(shù)據(jù)的安全,但查閱和備份工作都相當(dāng)繁瑣。1987年,加州大學(xué)伯克利分校三位工程師共同發(fā)表了題為《A Case ofRedundant Array of Inexpensive Disks(廉價磁盤冗余陣列方案)》的論文,其基本思想就是將多只容量較小的、相對廉價的硬盤驅(qū)動器進行有機組合,形成一種在可管理性,容量、性能、可靠性和可用性都較高的虛擬磁盤,使其性能超過一只昂貴的大硬盤。這一設(shè)計思想很快被接受,從此獨立冗余磁盤陣列(RAID,Redundant Array OfIndependent Disks)技術(shù)得到了廣泛應(yīng)用,數(shù)據(jù)存儲進入了更快速、更安全、更廉價的新時代。
RAID技術(shù)分為幾種不同的等級。主要包含RAID0~RAID7數(shù)個規(guī)范,分別可以提供不同的速度,安全性和性價比,RAID5是其中之一。RAID5技術(shù)在磁盤上讀寫控制上主要體現(xiàn)為在所有磁盤上交叉地存取數(shù)據(jù)及奇偶校驗信息。如圖1所示,主機101通過主磁盤控制器102、備用磁盤控制器103與由5塊磁盤組成的虛擬存儲器104相連,主磁盤控制器102和備用磁盤控制器103通過高可用性通道105相連。數(shù)據(jù)分塊和校驗數(shù)據(jù)分塊交叉分布在各個磁盤上。每5個塊中均有1個校驗數(shù)據(jù)分塊,如數(shù)據(jù)分塊0、1、2、3對應(yīng)于校驗數(shù)據(jù)分塊4,數(shù)據(jù)分塊6、7、8、9對應(yīng)于校驗數(shù)據(jù)分塊5。生成校驗數(shù)據(jù)分塊有兩種算法,采用兩種算法對相同的數(shù)據(jù)分塊進行操作生成的校驗數(shù)據(jù)分塊是相同的。第一種算法是當(dāng)要寫的數(shù)據(jù)分塊較多時,譬如寫0、1、2三個數(shù)據(jù)分塊,校驗數(shù)據(jù)分塊4=新數(shù)據(jù)分塊0新數(shù)據(jù)分塊1新數(shù)據(jù)分塊2舊數(shù)據(jù)分塊3。這樣輸入輸出的讀寫順序為讀舊數(shù)據(jù)分塊3,寫新數(shù)據(jù)分塊0,寫新數(shù)據(jù)分塊1,寫新數(shù)據(jù)分塊2,寫校驗數(shù)據(jù)分塊4。第二種算法是當(dāng)要寫的數(shù)據(jù)分塊較少時,譬如只寫0數(shù)據(jù)分塊,校驗數(shù)據(jù)分塊4=新數(shù)據(jù)分塊0舊數(shù)據(jù)分塊0舊校驗數(shù)據(jù)分塊4;這樣需要輸入輸出的讀寫順序為讀舊數(shù)據(jù)分塊0,讀舊校驗數(shù)據(jù)分塊4,寫新數(shù)據(jù)分塊0,寫新校驗數(shù)據(jù)分塊4。當(dāng)主機101通過主磁盤控制器102寫虛擬磁盤的0、1、2數(shù)據(jù)分塊時,讀、計算校驗過程都已經(jīng)完成。但如果在寫完0、1數(shù)據(jù)分塊后寫第2數(shù)據(jù)分塊的過程中主磁盤控制器102宕機,此時的校驗數(shù)據(jù)分塊還未寫到虛擬磁盤上,該校驗數(shù)據(jù)分塊還是舊校驗數(shù)據(jù)分塊。備用磁盤控制器103會啟動執(zhí)行寫操作,備用磁盤控制器103可能會使用第二種算法,用舊的校驗數(shù)據(jù)分塊數(shù)據(jù)來計算新的校驗數(shù)據(jù)分塊。這樣得到新的校驗數(shù)據(jù)分塊是錯的。此后再進行數(shù)據(jù)寫入時,用錯誤的校驗數(shù)據(jù)分塊來生成新的校驗數(shù)據(jù)分塊也是錯誤的。如果此后發(fā)生磁盤失效,就會導(dǎo)致數(shù)據(jù)失效,出現(xiàn)RAID5寫空洞效應(yīng)。為解決寫空洞問題,必須把未完成的寫操作的各要素記錄成為校驗日志保存下來,用于以后重建校驗數(shù)據(jù)分塊?,F(xiàn)有技術(shù)中解決此問題有以下兩種方法。
一種方法是主磁盤控制器102和備用磁盤控制器103之間建立起高可用性通道105,對于每個寫操作開始之前,主磁盤控制器102將校驗日志通過通道105發(fā)送至備用磁盤控制器103,主磁盤控制器102等待備用磁盤控制器103確認(rèn)接收到校驗日志后,主磁盤控制器102開始執(zhí)行寫操作。如果在寫過程中主磁盤控制器102發(fā)生宕機,備用磁盤控制器103根據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
另一種方法是當(dāng)主磁盤控制器102出現(xiàn)故障后,主機倒換到備用磁盤控制器103時,認(rèn)為所有的校驗數(shù)據(jù)分塊都不可靠。將虛擬磁盤上所有的校驗數(shù)據(jù)分塊重新初始化一遍。
現(xiàn)有技術(shù)中第一種方法需要提供在主備用磁盤控制器之間建立一條高可用性的通道105,并且該通道本身在工作中不能出現(xiàn)故障,否則主磁盤控制器生成的校驗日志無法發(fā)送至備用磁盤控制器。在校驗日志的保存過程中主磁盤控制器102在每次寫操作時都要先停止寫操作,等待收到備用磁盤控制器103接收到校驗日志的確認(rèn)信息后才執(zhí)行寫操作,對寫操作的效率產(chǎn)生了較大的影響。在與備用磁盤控制器所進行的信息交換也影響了主磁盤控制器的處理性能。第二種方法由于要對所有的校驗數(shù)據(jù)分塊進行重建,對于磁盤數(shù)據(jù)量較大的情況,重建的時間會較長,對系統(tǒng)的正常使用產(chǎn)生較大的影響。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明解決的技術(shù)問題在于提供一種解決磁盤冗余陣列中寫空洞的方法。該方法不但解決了寫空洞問題,而且避免了校驗數(shù)據(jù)分塊全部重建浪費大量的時間和寫操作時的等待間隔。
為解決上述問題,本發(fā)明提供一種解決磁盤冗余陣列中寫空洞的方法,包括a、主機向主磁盤控制器發(fā)出寫命令;b、主磁盤控制器收到寫命令,生成校驗日志;c、主磁盤控制器將校驗日志寫入存儲器中并執(zhí)行寫操作;d、如果主磁盤控制器寫操作過程中停止工作,備用磁盤控制器讀出存儲器中校驗日志;e、備用磁盤控制器依據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
其中,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是寫入獨立供電的隨機可讀寫存儲器RAM和讀出RAM。
其中,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是在一塊RAM中寫入、讀出。
其中,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是在兩塊RAM中寫入,在其中一塊RAM中讀出。
其中,所述步驟c進一步包括如果主磁盤控制器成功完成寫操作,則向主機發(fā)送寫成功信息。
本發(fā)明還提供一種解決磁盤冗余陣列中寫空洞的方法,其特征在于,包括a、主機向存儲控制模塊發(fā)出寫命令;
b、存儲控制模塊將寫命令發(fā)送至主磁盤控制器,將自身生成的校驗日志發(fā)送至備用磁盤控制器;c、主磁盤控制器依據(jù)寫命令執(zhí)行寫操作,備用磁盤控制器將校驗日志寫入到自身的內(nèi)存中;d、如果主磁盤控制器在寫操作的過程中停止工作,備用磁盤控制器依據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
其中,所述步驟c進一步包括c71、主磁盤控制器執(zhí)行寫操作成功后向存儲控制模塊發(fā)送寫成功信息,備用磁盤控制器寫校驗日志成功后向存儲控制模塊發(fā)送寫成功信息;c72、存儲控制模塊如果接收到主磁盤控制器和備用磁盤控制器的寫成功信息后向主機發(fā)送寫成功信息,否則向主機發(fā)送寫失敗信息。
其中,所述存儲控制模塊是主機中一個軟件模塊。
其中,所述存儲控制模塊是單獨的設(shè)備。
本發(fā)明和現(xiàn)有技術(shù)相比,有效地保存校驗日志,而且快速地重建校驗數(shù)據(jù)分塊,高效地解決磁盤冗余陣列中的寫空洞問題和系統(tǒng)性能瓶頸。避免了現(xiàn)有技術(shù)在解決磁盤冗余陣列寫空洞問題時重建校驗數(shù)據(jù)分塊時浪費的大量時間和主、備用磁盤控制器之間在寫操作時信息傳遞的等待時間。


圖1是現(xiàn)有技術(shù)解決RAID5寫空洞的系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明方法的流程圖;圖3是本發(fā)明方法實施例一的流程圖;圖4是本發(fā)明方法實施例二的流程圖。
具體實施例方式
本發(fā)明的方法能夠有效地保存校驗日志,通過校驗日志重建校驗數(shù)據(jù)分塊解決寫空洞問題,高效地提高系統(tǒng)的使用效率。避免現(xiàn)有技術(shù)的讀寫控制方法在全部重建校驗數(shù)據(jù)分塊浪費大量的時間和寫操作時的等待間隔。
參見圖2,本發(fā)明的方法包括步驟S201主機發(fā)出寫請求;步驟S202主磁盤控制器寫校驗日志到共享內(nèi)存并執(zhí)行寫操作;步驟S203主磁盤控制器宕機后,備用磁盤控制器從共享內(nèi)存中讀出校驗日志并依據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
下面結(jié)合圖3詳細(xì)描述本發(fā)明的方法工作流程。假設(shè)現(xiàn)在RAID5系統(tǒng)中每個分條有5個分塊,分塊大小為30k,數(shù)據(jù)分條0={數(shù)據(jù)分塊0,數(shù)據(jù)分塊1,數(shù)據(jù)分塊2,數(shù)據(jù)分塊3,校驗數(shù)據(jù)分塊4}={1,1,1,1,0};步驟S301主機向主磁盤控制器發(fā)起一個{起始地址=0,大小=30k,數(shù)據(jù)分塊0=0}的寫請求。
步驟S302主磁盤控制器生成校驗日志,{起始地址=0,大?。?0k}步驟S303主磁盤控制器將校驗日志寫入RAM中;步驟S304主磁盤控制器執(zhí)行寫操作。
主磁盤控制器計算校驗數(shù)據(jù)分塊,校驗數(shù)據(jù)分塊4={舊數(shù)據(jù)分塊0新數(shù)據(jù)分塊0舊校驗數(shù)據(jù)分塊4}={100}={1},根據(jù)寫請求計算數(shù)據(jù)分條。由于校驗數(shù)據(jù)分塊對用戶不可見,數(shù)據(jù)分條大小=分塊大小30k×(5-1)=120k。則數(shù)據(jù)分條=起始地址0/分條大?。?/120=0。
主磁盤控制器找到數(shù)據(jù)分條0,執(zhí)行寫操作寫{數(shù)據(jù)分塊0=0,校驗數(shù)據(jù)分塊=1},這時分塊情況{0,1,1,1,1},主磁盤控制器正確執(zhí)行完寫操作后,執(zhí)行步驟S305,如果主磁盤控制器在執(zhí)行寫操作過程中宕機,則執(zhí)行步驟S306。
步驟S305主磁盤控制器向主機返回寫成功信息。
步驟S306備用磁盤控制器讀出RAM中的校驗日志。
假設(shè)主磁盤控制器寫完數(shù)據(jù)分塊0后宕機,此時校驗數(shù)據(jù)分塊還未寫到磁盤上,此時分塊情況為{0,1,1,1,0},此時校驗數(shù)據(jù)分塊是錯的,因此主磁盤控制器不會向主機發(fā)出寫成功信息,備用磁盤控制器從共享內(nèi)存中讀出校驗日志。
步驟S307備用磁盤控制器根據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
備用磁盤控制器依據(jù)校驗日志重新計算校驗分條,找到校驗數(shù)據(jù)分塊,重新計算校驗數(shù)據(jù)分塊,備用磁盤控制器計算校驗數(shù)據(jù)分塊4={數(shù)據(jù)分塊0數(shù)據(jù)分塊1數(shù)據(jù)分塊2數(shù)據(jù)分塊3}={0111}={1}并將校驗數(shù)據(jù)分塊重新寫到磁盤上,這時分塊情況{0,1,1,1,1},此時的校驗數(shù)據(jù)分塊又是正確的。
步驟S308主機重寫數(shù)據(jù)分塊。
由于主機未收到寫成功信息,會重發(fā)寫請求,備用磁盤控制器會根據(jù)寫請求重寫數(shù)據(jù)分塊0和校驗數(shù)據(jù)分塊4。
對于此實施例中RAM存儲器可以是一塊或是兩塊,當(dāng)采用兩塊獨立供電的RAM工作時,主磁盤控制器將校驗日志寫入到兩塊RAM中,當(dāng)主磁盤控制器停止工作后,備用磁盤控制器從一塊RAM中讀出校驗日志。如果在此過程當(dāng)中,一塊RAM出現(xiàn)故障不能正常工作時,另外一塊RAM能夠有效地保護校驗日志,備用磁盤控制器依然能從另外一塊RAM中讀出校驗日志重建校驗數(shù)據(jù)分塊。
本發(fā)明在通過保存校驗日志來解決寫空洞的方法不止一種,也可以通過添加存儲控制器模塊來實現(xiàn),下面結(jié)合附圖4詳細(xì)描述本發(fā)明的方法的另一實施例。假設(shè)現(xiàn)在RAID5系統(tǒng)中每個分條有5個分塊,分塊大小為30k,數(shù)據(jù)分條0={數(shù)據(jù)分塊0,數(shù)據(jù)分塊1,數(shù)據(jù)分塊2,數(shù)據(jù)分塊3,校驗數(shù)據(jù)分塊4}={1,1,1,1,0};步驟S401主機向存儲控制模塊發(fā)出{起始地址=0,大小=30k,數(shù)據(jù)分塊0=0}寫請求;步驟S402存儲控制模塊收到寫命令后生成校驗日志{起始地址=0,大?。?0k},將寫命令發(fā)送至主磁盤控制器,同時將校驗日志發(fā)送至備用磁盤控制器;步驟S403主磁盤控制收到寫命令執(zhí)行寫操作,同時備用磁盤控制器收到校驗日志寫到內(nèi)存中。
主磁盤控制器計算校驗數(shù)據(jù)分塊,校驗數(shù)據(jù)分塊4={舊數(shù)據(jù)分塊0新數(shù)據(jù)分塊0④舊校驗數(shù)據(jù)分塊4}={100}={1},根據(jù)寫請求計算數(shù)據(jù)分條。由于校驗數(shù)據(jù)分塊對用戶不可見,數(shù)據(jù)分條大?。椒謮K大小30k×(5-1)=120k。則數(shù)據(jù)分條=起始地址0/分條大?。?/120k=0。
主磁盤控制器找到數(shù)據(jù)分條0,執(zhí)行寫操作,將{數(shù)據(jù)分塊0=0,校驗數(shù)據(jù)分塊4=1}寫入到磁盤陣列中,這時分塊情況是{0,1,1,1,1}。
備用磁盤控制器將校驗日志{起始地址=0,大?。?0k,數(shù)據(jù)分塊0=0}保存到本地內(nèi)存中。
主磁盤控制器與備用磁盤控制器收到存儲控制模塊發(fā)送的信息后,同時并行工作,不分先后順序。
步驟S404主磁盤控制器發(fā)生宕機。
步驟S405備用磁盤控制器重建校驗數(shù)據(jù)分塊。
如果主磁盤控制器在工作的過程中發(fā)生宕機,則備用磁盤控制器依據(jù)收到的校驗日志重建校驗數(shù)據(jù)分塊。
備用磁盤控制器依據(jù)校驗日志重新計算校驗分條,找到校驗數(shù)據(jù)分塊,重新計算校驗數(shù)據(jù)分塊。備用磁盤控制器計算校驗數(shù)據(jù)分塊4={數(shù)據(jù)分塊0數(shù)據(jù)分塊1數(shù)據(jù)分塊2數(shù)據(jù)分塊3}={0111}={1}并將校驗數(shù)據(jù)分塊重新寫到磁盤上,這時分塊情況{0,1,1,1,1},此時的校驗數(shù)據(jù)分塊又是正確的。
步驟S406主磁盤控制返回寫成功,備用磁盤控制器返回寫成功。
如果主、備用磁盤控制器均成功完成了寫操作,則主、備用磁盤控制器向存儲控制模塊返回寫成功信息;步驟S407只有存儲控制模塊收到主磁盤控制器和備用磁盤控制器的寫成功信息,才向主機返回寫成功信息;否則向主機返回寫失敗信息,主機會重新發(fā)生寫請求。
對于本發(fā)明的方法,實現(xiàn)的形式是多種多樣的。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種解決磁盤冗余陣列中寫空洞的方法,其特征在于,包括a、主機向主磁盤控制器發(fā)出寫命令;b、主磁盤控制器收到寫命令,生成校驗日志;c、主磁盤控制器將校驗日志寫入存儲器中并執(zhí)行寫操作;d、如果主磁盤控制器寫操作過程中停止工作,備用磁盤控制器讀出存儲器中校驗日志;e、備用磁盤控制器依據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是寫入獨立供電的隨機可讀寫存儲器RAM和讀出RAM。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是在一塊RAM中寫入、讀出。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟c中寫入存儲器和所述步驟d中讀出存儲器是在兩塊RAM中寫入,在其中一塊RAM中讀出。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟c進一步包括如果主磁盤控制器成功完成寫操作,則向主機發(fā)送寫成功信息。
6.一種解決磁盤冗余陣列中寫空洞的方法,其特征在于,包括a、主機向存儲控制模塊發(fā)出寫命令;b、存儲控制模塊將寫命令發(fā)送至主磁盤控制器,將自身生成的校驗日志發(fā)送至備用磁盤控制器;c、主磁盤控制器依據(jù)寫命令執(zhí)行寫操作,備用磁盤控制器將校驗日志寫入到自身的內(nèi)存中;d、如果主磁盤控制器在寫操作的過程中停止工作,備用磁盤控制器依據(jù)校驗日志重建校驗數(shù)據(jù)分塊。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟c進一步包括c71、主磁盤控制器執(zhí)行寫操作成功后向存儲控制模塊發(fā)送寫成功信息,備用磁盤控制器寫校驗日志成功后向存儲控制模塊發(fā)送寫成功信息;c72、存儲控制模塊如果接收到主磁盤控制器和備用磁盤控制器的寫成功信息后向主機發(fā)送寫成功信息,否則向主機發(fā)送寫失敗信息。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述存儲控制模塊是主機中一個軟件模塊。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述存儲控制模塊是單獨的設(shè)備。
全文摘要
本發(fā)明公開了一種解決磁盤冗余陣列中寫空洞的方法,包括主機向主磁盤控制器發(fā)出寫命令,主磁盤控制器收到寫命令并生成校驗日志,主磁盤控制器將校驗日志寫入存儲器中并執(zhí)行寫操作,如果主磁盤控制器寫操作過程中宕機,備用磁盤控制器從存儲器中讀出校驗日志重建校驗數(shù)據(jù)分塊。本發(fā)明的方法有效地保存校驗日志,而且快速地重建校驗數(shù)據(jù)分塊,高效地解決磁盤冗余陣列中的寫空洞問題和系統(tǒng)性能瓶頸。避免了現(xiàn)有技術(shù)在解決磁盤冗余陣列寫空洞問題時重建校驗數(shù)據(jù)分塊時浪費的大量時間和主、備用磁盤控制器之間在寫操作時信息傳遞的等待時間。
文檔編號G06F11/14GK1862478SQ20061008369
公開日2006年11月15日 申請日期2006年6月2日 優(yōu)先權(quán)日2006年6月2日
發(fā)明者陳慶議 申請人:杭州華為三康技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灌南县| 来宾市| 南郑县| 浮山县| 徐州市| 宁国市| 绍兴市| 牡丹江市| 霸州市| 凉山| 五华县| 嫩江县| 南昌县| 新河县| 双江| 泾阳县| 敦化市| 保靖县| 琼中| 吉隆县| 建德市| 嘉祥县| 辽宁省| 腾冲县| 安庆市| 张家川| 黄龙县| 新昌县| 七台河市| 武穴市| 日土县| 龙海市| 遂平县| 孙吴县| 阿拉善盟| 莱州市| 华宁县| 资溪县| 舞钢市| 渭源县| 大名县|