本發(fā)明涉及通信領(lǐng)域,特別涉及一種訪問存儲設(shè)備的方法及裝置。
背景技術(shù):
在數(shù)字化、信息化的當(dāng)今社會,數(shù)據(jù)作為最基礎(chǔ)的元素,沒有數(shù)據(jù)就沒有信息技術(shù)的飛速發(fā)展,因此對數(shù)據(jù)的安全就有相當(dāng)高的要求。為了保證數(shù)據(jù)的安全性,當(dāng)前數(shù)據(jù)中心使用主從兩個存儲設(shè)備來存儲數(shù)據(jù),數(shù)據(jù)中心內(nèi)的主機在主存儲設(shè)備中讀寫數(shù)據(jù),從存儲設(shè)備對主存儲設(shè)備中的數(shù)據(jù)進行備份;當(dāng)主存儲設(shè)備中的數(shù)據(jù)受到破壞時,將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備中,以保證數(shù)據(jù)的安全性。
目前當(dāng)主存儲設(shè)備中的數(shù)據(jù)受到破壞且需要同步數(shù)據(jù)時,主機接收用戶觸發(fā)的同步命令,該同步命令用于觸發(fā)主機將從存儲設(shè)備中的數(shù)據(jù)拷貝到主存儲設(shè)備中,然后主機將從存儲設(shè)備包括的各存儲區(qū)域內(nèi)的數(shù)據(jù)分別拷貝到主存儲設(shè)備中對應(yīng)的存儲區(qū)域中;例如,將從存儲設(shè)備包括的第一個存儲區(qū)域內(nèi)存儲的數(shù)據(jù)拷貝到主存儲設(shè)備的一個存儲區(qū)域中,拷貝完了再將從存儲設(shè)備包括的第二個存儲區(qū)域內(nèi)存儲的數(shù)據(jù)拷貝到主存儲設(shè)備的另一存儲區(qū)域中,直到拷貝完從存儲設(shè)備中的所有存儲區(qū)域內(nèi)存儲的數(shù)據(jù)為止。
需要說明的是,在同步的過程中當(dāng)主機需要讀寫主存儲設(shè)備中的某個存儲區(qū)域時,如果已向該存儲區(qū)域拷貝完數(shù)據(jù),則主機可以直接讀寫該存儲區(qū)域;如果正在向該存儲區(qū)域拷貝數(shù)據(jù),則主機等待拷貝完成之后再讀寫該存儲區(qū)域;如果還未向該存儲區(qū)域拷貝數(shù)據(jù),則主機需要先向該存儲區(qū)域拷貝數(shù)據(jù)并在拷貝完之后讀寫該存儲區(qū)域。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
在同步數(shù)據(jù)的過程中,如果主機需要讀寫的存儲區(qū)域正在拷貝數(shù)據(jù)或還未拷貝數(shù)據(jù),主機需要等待一段時后才能讀寫該存儲區(qū)域,影響主機的讀寫性能。
技術(shù)實現(xiàn)要素:
為了提高主機的讀寫性能,本發(fā)明提供了一種訪問存儲設(shè)備的方法及裝置。所述技術(shù)方案如下:
第一方面,提供了一種訪問存儲設(shè)備的方法,所述方法包括:
接收同步命令消息,所述同步命令消息用于觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備,所述從存儲設(shè)備是對主存儲設(shè)備的備份,所述主存儲設(shè)備包括第一磁盤陣列和第一管理模塊,所述第一管理模塊指向所述第一磁盤陣列;所述從存儲設(shè)備包括第二磁盤陣列和第二管理模塊,所述第二管理模塊指向所述第二磁盤陣列;
將所述第一管理模塊指向所述第二磁盤陣列,以及將所述第二管理模塊指向所述第一磁盤陣列;
接收讀寫指令,根據(jù)所述讀寫指令讀寫所述第一管理模塊指向的所述第二磁盤陣列。
在第一方面中,將第一管理模塊指向的第二磁盤陣列,以及將第二管理模塊指向的第一磁盤陣列,由于第二磁盤陣列中的數(shù)據(jù)未受到破壞,且同步數(shù)據(jù)的方向是由第二磁盤陣列向第一磁盤陣列同步,這樣在向第一磁盤陣列同步數(shù)據(jù)的過程,不需要向第二磁盤陣列存儲數(shù)據(jù),如此主機向第一管理模塊發(fā)送讀寫指令時,第一管理模塊讀寫其指向的第二磁盤陣列,不會響應(yīng)讀寫數(shù)據(jù),從而提高了主機的讀寫性能。
結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述第一管理模塊存儲所述第一磁盤陣列的地址或用于指向所述第一磁盤陣列的第一指針;所述第二管理模塊存儲所述第二磁盤陣列的地址或用于指向所述第二磁盤陣列的第二指針;
所述將所述第一管理模塊指向所述第二磁盤陣列,包括:
將所述第一管理模塊存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,或者,將所述第一管理模塊存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列;
所述將所述第二管理模塊指向所述第一磁盤陣列,包括:
將所述第二管理模塊存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,或者,將所述第二管理模塊存儲的第二指針由指向所述第二磁盤 陣列更新為指向所述第一磁盤陣列。
在第一方面的第一種可能的實現(xiàn)方式中,由于第一管理模塊存儲第一磁盤陣列的地址或用于指向第一磁盤陣列的第一指針;第二管理模塊存儲第二磁盤陣列的地址或用于指向第二磁盤陣列的第二指針,將第一管理模塊變換為指向第二磁盤陣列時,只需要更新第一管理模塊包括的地址或第一指針,以及將第二管理模塊變換為指向第一磁盤陣列時,只需要更新第二管理模塊存儲的地址或第二指針,操作簡便。
結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,所述方法還包括:
對所述第一管理模塊指向的所述第二磁盤陣列中當(dāng)前存儲的數(shù)據(jù)進行快照處理,得到快照數(shù)據(jù);
將所述快照數(shù)據(jù)同步到所述第二管理模塊指向的所述第一磁盤陣列中。
在第一方面的第二種可能的實現(xiàn)方式中,由于對第二磁盤陣列中的數(shù)據(jù)進行快照得到了快照數(shù)據(jù),然后再將快照數(shù)據(jù)同步到第一磁盤陣列中,這樣保證了第一磁盤陣列與第二磁盤陣列同步,且在同步過程中避免主機對第二磁盤陣列的讀寫產(chǎn)生影響。
第二方面、提供了一種訪問存儲設(shè)備的裝置,所述裝置包括:
接收單元,用于接收同步命令消息,所述同步命令消息用于觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備,所述從存儲設(shè)備是對主存儲設(shè)備的備份,所述主存儲設(shè)備包括第一磁盤陣列和第一管理模塊,所述第一管理模塊指向所述第一磁盤陣列;所述從存儲設(shè)備包括第二磁盤陣列和第二管理模塊,所述第二管理模塊指向所述第二磁盤陣列;
處理單元,用于將所述第一管理模塊指向所述第二磁盤陣列,以及將所述第二管理模塊指向所述第一磁盤陣列;
所述接收單元,還用于接收讀寫指令;
所述處理單元,還用于根據(jù)所述接收單元接收的所述讀寫指令讀寫所述第一管理模塊指向的所述第二磁盤陣列。
在第二方面中,將第一管理模塊指向第二磁盤陣列,以及將第二管理模塊指向第一磁盤陣列,由于第二磁盤陣列中的數(shù)據(jù)未受到破壞,且同步數(shù)據(jù)的方向是由第二磁盤陣列向第一磁盤陣列同步,這樣在向第一磁盤陣列同步數(shù)據(jù)的 過程,不需要向第二磁盤陣列存儲數(shù)據(jù),如此主機向第一管理模塊發(fā)送讀寫指令時,第一管理模塊讀寫其指向的第二磁盤陣列,不會響應(yīng)讀寫數(shù)據(jù),從而提高了主機的讀寫性能。
結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述第一管理模塊存儲所述第一磁盤陣列的地址或用于指向所述第一磁盤陣列的第一指針;所述第二管理模塊存儲所述第二磁盤陣列的地址或用于指向所述第二磁盤陣列的第二指針;
所述處理單元,用于將所述第一管理模塊存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,或者,將所述第一管理模塊存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列;將所述第二管理模塊存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,或者,將所述第二管理模塊存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列。
在第二方面的第一種可能的實現(xiàn)方式中,由于第一管理模塊存儲第一磁盤陣列的地址或用于指向第一磁盤陣列的第一指針;第二管理模塊存儲第二磁盤陣列的地址或用于指向第二磁盤陣列的第二指針,將第一管理模塊變換為指向第二磁盤陣列時,只需要更新第一管理模塊存儲的地址或第一指針,以及將第二管理模塊變換為指向第一磁盤陣列時,只需要更新第二管理模塊存儲的地址或第二指針,操作簡便。
結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,所述處理單元,用于對所述第一管理模塊指向的所述第二磁盤陣列中當(dāng)前存儲的數(shù)據(jù)進行快照處理,得到快照數(shù)據(jù);將所述快照數(shù)據(jù)同步到所述第二管理模塊指向的所述第一磁盤陣列中。
在第二方面的第二種可能的實現(xiàn)方式中,由于對第二磁盤陣列中的數(shù)據(jù)進行快照得到了快照數(shù)據(jù),然后再將快照數(shù)據(jù)同步到第一磁盤陣列中,這樣保證了第一磁盤陣列與第二磁盤陣列同步,且在同步過程中避免主機對第二磁盤陣列的讀寫產(chǎn)生影響。
附圖說明
圖1-1是本發(fā)明實施例提供的一種網(wǎng)絡(luò)架構(gòu)圖;
圖1-2是本發(fā)明實施例提供的另一種網(wǎng)絡(luò)架構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種主機結(jié)構(gòu)示意圖;
圖3-1是本發(fā)明實施例提供的一種訪問存儲設(shè)備的方法流程圖;
圖3-2是本發(fā)明實施例提供的一種顯示界面示意圖;
圖3-3是本發(fā)明實施例提供的另一種網(wǎng)絡(luò)架構(gòu)示意圖;
圖3-4是本發(fā)明實施例提供的另一種網(wǎng)絡(luò)架構(gòu)示意圖;
圖4是本發(fā)明實施例提供的一種訪問存儲設(shè)備的裝置結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
本發(fā)明實施例可以應(yīng)用于數(shù)據(jù)中心或機房等數(shù)據(jù)存儲應(yīng)用場景。該應(yīng)用場景的網(wǎng)絡(luò)架構(gòu)如圖1-1所示,該網(wǎng)絡(luò)架構(gòu)包括主機和存儲設(shè)備,存儲設(shè)備包括主存儲設(shè)備和從存儲設(shè)備。主機只對主存儲設(shè)備進行讀寫訪問。當(dāng)主機需要讀寫訪問時,主機只向主存儲設(shè)備發(fā)送讀寫指令,讀寫指令包括讀指令和寫指令,讀指令用于主機從主存儲設(shè)備中讀數(shù)據(jù),寫指令用于主機向主存儲設(shè)備中寫數(shù)據(jù)。從存儲設(shè)備是對主存儲設(shè)備的備份。
參見圖1-2,主存儲設(shè)備包括第一管理模塊和第一磁盤陣列,第一管理模塊指向第一磁盤陣列,第一磁盤陣列的數(shù)目可以為一個或多個,當(dāng)為一個時,第一管理模塊指向該一個第一磁盤陣列,當(dāng)為多個時,第一管理模塊分別指向該多個中的每個第一磁盤陣列。主機向主存儲設(shè)備發(fā)送讀寫指令實質(zhì)是向第一管理模塊發(fā)送讀寫指令。第一磁盤陣列用于存儲數(shù)據(jù),第一管理模塊用于接收主機發(fā)送的讀寫指令,根據(jù)該讀寫指令讀寫其指向的第一磁盤陣列。第一管理模塊根據(jù)該讀寫指令讀寫其指向的第一磁盤陣列具體可以為,當(dāng)主機需要讀數(shù)據(jù)時,主機向第一管理模塊發(fā)送讀指令,第一管理模塊接收該讀指令,從其指向的第一磁盤陣列中讀取該讀指令對應(yīng)的數(shù)據(jù),再向主機發(fā)送該數(shù)據(jù);當(dāng)主機需要寫數(shù)據(jù)時,主機向第一管理模塊發(fā)送寫指令和需要向主存儲設(shè)備寫入的數(shù)據(jù),第一管理模塊接收該寫指令和該數(shù)據(jù),將該數(shù)據(jù)寫入其指向的第一磁盤陣列。
從存儲設(shè)備包括第二管理模塊和第二磁盤陣列,第二管理模塊指向第二磁 盤陣列,第二磁盤陣列用于存儲數(shù)據(jù),第二磁盤陣列的數(shù)目可以為一個或多個,當(dāng)為一個時,第二管理模塊指向該一個第二磁盤陣列,當(dāng)為多個時,第二管理模塊分別指向該多個中的每個第二磁盤陣列。第二管理模塊用于將主存儲設(shè)備中的數(shù)據(jù)備份至其指向的第二磁盤陣列,具體的,第二管理模塊定期或不定期地將主存儲設(shè)備中發(fā)生變化的數(shù)據(jù)存儲到其指向的第二磁盤陣列中。
可選的,第一管理模塊指向第一磁盤陣列的方式可以為:第一管理模塊存儲第一磁盤陣列的地址,或者,第一管理模塊存儲用于指向第一磁盤陣列的第一指針。
第一管理模塊在接收主機發(fā)送的讀寫指令時,可以根據(jù)自身存儲的第一磁盤陣列的地址或第一指針,確定出對應(yīng)的第一磁盤陣列,然后對第一磁盤陣列進行讀寫操作。
可選的,第二管理模塊指向第二磁盤陣列的方式可以為:第二管理模塊存儲第二磁盤陣列的地址,或者,第二管理模塊存儲用于指向第二磁盤陣列的第二指針。
第二管理模塊在將主存儲設(shè)備中發(fā)生變化的數(shù)據(jù)存儲到第二磁盤陣列時,先根據(jù)自身包括的第二磁盤陣列的地址或第二指針,確定出對應(yīng)的第二磁盤陣列,然后再將將主存儲設(shè)備中發(fā)生變化的數(shù)據(jù)存儲到第二磁盤陣列中。
可選的,參見圖1-2,第一管理模塊包括第一讀寫緩存單元和第一卷管理單元,第一讀寫緩存單元用于接收主機發(fā)送的讀寫指令,根據(jù)該讀寫指令讀寫第一磁盤陣列,第一卷管理單元用于管理第一磁盤陣列的存儲空間。第一讀寫緩存單元存儲第一磁盤陣列的地址或第一指針,同樣,第一卷管理單元也存儲第一磁盤陣列的地址或第一指針。第一讀寫緩存單元在接收到主機發(fā)送的讀寫指令后,先根據(jù)自身存儲的第一磁盤陣列的地址或第一指針確定出對應(yīng)的第一磁盤陣列,然后再根據(jù)該讀寫指令讀寫第一磁盤陣列;以及,第一卷管理單元也是根據(jù)自身存儲的第一磁盤陣列的地址或第一指針確定出對應(yīng)的第一磁盤陣列,然后再管理第一磁盤陣列的存儲空間。
例如,讀寫指令為讀指令時,第一讀寫緩存單元接收主機發(fā)送的讀指令,先根據(jù)自身存儲的第一磁盤陣列的地址或第一指針確定出對應(yīng)的第一磁盤陣列,然后從第一磁盤陣列中讀取該讀指令對應(yīng)的數(shù)據(jù)并向主機發(fā)送該數(shù)據(jù);讀寫指令為寫指令時,第一讀寫緩存單元接收主機發(fā)送的寫指令和需要向主存儲 設(shè)備寫入的數(shù)據(jù),然后向第一卷管理單元發(fā)送用于請求分配存儲空間的命令;第一卷管理單元根據(jù)自身存儲的第一磁盤陣列的地址或第一指針,確定出對應(yīng)的第一磁盤陣列,在第一磁盤陣列中分配存儲空間,向第一讀寫緩存單元發(fā)送該存儲空間的地址,最后由第一讀寫緩存單元根據(jù)該存儲空間的地址將該數(shù)據(jù)寫入該存儲空間。
第二管理模塊包括第二讀寫緩存單元和第二卷管理單元,第二讀寫緩存單元用于將主存儲設(shè)備中的數(shù)據(jù)備份至第二磁盤陣列,第二卷管理單元用于管理第二磁盤陣列的存儲空間。第二讀寫緩存單元存儲第二磁盤陣列的地址或第二指針,同樣,第二卷管理單元也存儲第二磁盤陣列的地址或第二指針??蛇x的,在將主存儲設(shè)備中的數(shù)據(jù)備份至第二磁盤陣列過程,第二卷管理單元根據(jù)自身存儲的第二磁盤陣列的地址或第二指針確定出對應(yīng)的第二磁盤陣列,在第二磁盤陣列中分配存儲空間,向第二讀寫緩存單元發(fā)送該存儲空間的地址,第二讀寫緩存單元根據(jù)該存儲空間的地址將主存儲設(shè)備中的數(shù)據(jù)存儲該存儲空間中。
在本實施例中,存儲設(shè)備可以為lun(logicalunitnumber,邏輯單元號),主存儲設(shè)備可以為主lun,從存儲設(shè)備可以為從lun。第一讀寫緩存單元為主lun中包括的cache(緩存),第一卷管理單元為主lun中包括的volume(卷)。第二讀寫緩存單元為從lun中包括的cache,第二卷管理單元為從lun中包括的volume。
其中,需要說明的是:主存儲設(shè)備中存儲的數(shù)據(jù)常常會遭到病毒攻擊、磁盤壞道或磁盤損壞等原因受到破壞,為了保證主機能夠正常的讀寫訪問主存儲設(shè)備,需要將從存儲設(shè)備中的數(shù)據(jù)同步至主存儲設(shè)備,詳細過程可以參見后續(xù)實施提供的詳細過程。
參見圖2,圖2是本發(fā)明實施例提供的一種主機200結(jié)構(gòu)示意圖,主機200可以是上述圖1-1和1-2所示實施例提及的主機,主機200可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上接收器201、處理器202,還可以包括發(fā)送器203,一個或一個以上存儲應(yīng)用程序204或數(shù)據(jù)205的存儲介質(zhì)206(例如一個或一個以上海量存儲設(shè)備)。其中,存儲介質(zhì)206可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)206的程序可以包括一個或一個以上模塊(圖示沒標(biāo)出),每個模塊可以包括一系列指令操作。更進一步地,處理器202可以 設(shè)置為與存儲介質(zhì)206通信,在主機200上執(zhí)行存儲介質(zhì)206中的一系列指令操作。
主機200還可以包括一個或一個以上電源207,一個或一個以上有線或無線網(wǎng)絡(luò)接口208,一個或一個以上輸入輸出接口209,和/或,一個或一個以上操作系統(tǒng)210,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等,且該操作系統(tǒng)210可以存儲在存儲介質(zhì)206中。
在本發(fā)明中主機200的接收器201、處理器202具有以下功能:
所述接收器201,用于接收同步命令消息,所述同步命令消息用于觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備,所述從存儲設(shè)備是對主存儲設(shè)備的備份,所述主存儲設(shè)備包括第一磁盤陣列和第一管理模塊;所述第一管理模塊指向所述第一磁盤陣列,所述從存儲設(shè)備包括第二磁盤陣列和第二管理模塊,所述第二管理模塊指向所述第二磁盤陣列;其中,可選的,第一管理模塊用于接收主機發(fā)送的讀寫指令,根據(jù)所述讀寫指令讀寫其指向的所述第一磁盤陣列,第二管理模塊,用于將所述主存儲設(shè)備中的數(shù)據(jù)備份至其指向的所述第二磁盤陣列;
所述處理器202,用于將所述第一管理模塊指向所述第二磁盤陣列,以及將所述第二管理模塊指向所述第一磁盤陣列;
所述接收器201,還用于接收讀寫指令;
所述處理器202,還用于根據(jù)所述接收單元201接收的所述讀寫指令讀寫所述第一管理模塊指向的所述第二磁盤陣列。
可選的,所述第一管理模塊存儲所述第一磁盤陣列的地址或用于指向所述第一磁盤陣列的第一指針;所述第二管理模塊存儲所述第二磁盤陣列的地址或用于指向所述第二磁盤陣列的第二指針;
所述處理器202,用于將所述第一管理模塊存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,或者,將所述第一管理模塊存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列;將所述第二管理模塊存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,或者,將所述第二管理模塊存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列。
可選的,所述第一管理模塊包括第一讀寫緩存單元和第一卷管理單元,所述第一讀寫緩存單元用于接收主機發(fā)送的讀寫指令,根據(jù)所述讀寫指令讀寫所 述第一磁盤陣列,所述第一卷管理單元用于管理所述第一磁盤陣列的存儲空間;所述第一讀寫緩存單元存儲所述第一磁盤陣列的地址或所述第一指針,所述第一卷管理單元存儲所述第一磁盤陣列的地址或所述第一指針;
所述處理器202,用于將所述第一讀寫緩存單元存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,以及,將所述第一卷管理單元存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址;或者,將所述第一讀寫緩存單元存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列,以及,將所述第一卷管理單元存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列。
可選的,所述第二管理模塊包括第二讀寫緩存單元和第二卷管理單元,所述第二讀寫緩存單元用于將所述主存儲設(shè)備中的數(shù)據(jù)備份至所述第二磁盤陣列,所述第二卷管理單元用于管理所述第二磁盤陣列的存儲空間;所述第二讀寫緩存單元存儲所述第二磁盤陣列的地址或所述第二指針,所述第二卷管理單元存儲所述第二磁盤陣列的地址或所述第二指針;
所述處理器202,用于將所述第二讀寫緩存單元存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,以及,將所述第二卷管理單元存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址;或者,將所述第二讀寫緩存單元存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列,以及,將所述第二卷管理單元存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列。
可選的,所述處理器202,用于對所述第一管理模塊指向的所述第二磁盤陣列中當(dāng)前存儲的數(shù)據(jù)進行快照處理,得到快照數(shù)據(jù);將所述快照數(shù)據(jù)同步到所述第二管理模塊指向的所述第一磁盤陣列中。
在本發(fā)明實施例中,將第一管理模塊指向的第一磁盤陣列變換為指向第二磁盤陣列,以及將第二管理模塊指向的第二磁盤陣列變?yōu)橹赶虻谝淮疟P陣列,由于在向第一磁盤陣列同步數(shù)據(jù)的過程,不需要向第二磁盤陣列存儲數(shù)據(jù),如此主機向第一管理模塊發(fā)送讀寫指令時,第一管理模塊讀寫其指向的第二磁盤陣列,不會響應(yīng)讀寫數(shù)據(jù),從而提高了主機的讀寫性能。
參見圖3-1,本發(fā)明實施例提供了一種訪問存儲設(shè)備的方法,該方法的執(zhí)行 主體可以為上述任一實施例提及的主機,該方法包括:
步驟301:接收同步命令消息,該同步命令消息用于觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備中。
本發(fā)明實施例應(yīng)用于如圖1-1所示的網(wǎng)絡(luò)架構(gòu),當(dāng)主存儲設(shè)備中存儲的數(shù)據(jù)遭受到病毒攻擊、磁盤壞道或磁盤損壞等原因破壞時,用戶可以向主機提交同步命令消息,該同步命令消息攜帶該主存儲設(shè)備的地址和該主存儲設(shè)備對應(yīng)的從存儲設(shè)備的地址,用于表示觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備中。
用戶向主機提交同步命令消息的實現(xiàn)方式有多種,接下來,用一具體實例詳細說明用戶向主機提交同步命令消息的一種實現(xiàn)方式,詳細過程為:
主機可以檢測出該網(wǎng)絡(luò)架構(gòu)中數(shù)據(jù)受到破壞的主存儲設(shè)備,然后向用戶發(fā)出提示,該提示可以為語音提示或在主機的顯示界面上顯示一段文字提示。用戶可以在主機上打開如圖3-2所示的顯示界面,主機在該顯示界面上顯示該網(wǎng)絡(luò)架構(gòu)中包括的主存儲設(shè)備和每個主存儲設(shè)備對應(yīng)的從存儲設(shè)備;對于數(shù)據(jù)受到破壞的主存儲設(shè)備,主機還可以在該主存儲設(shè)備所在行顯示破壞標(biāo)識和同步按鈕。用戶可以點擊該同步按鈕,該按鈕會產(chǎn)生攜帶該主存儲設(shè)備的地址和該主存儲設(shè)備對應(yīng)的從存儲設(shè)備的地址的同步命令消息并提交給主機。
可選的,用戶除了按上述方式向主機提交同步命令消息外,還可以采用其他方式,在此就不一一介紹。
其中,參見圖1-2,主存儲設(shè)備包括第一管理模塊和第一磁盤陣列,第一管理模塊指向第一磁盤陣列,第一磁盤陣列用于存儲數(shù)據(jù),從存儲設(shè)備包括第二管理模塊和第二磁盤陣列,第二管理模塊指向第二磁盤陣列,第二磁盤陣列用于存儲數(shù)據(jù)。主存儲設(shè)備中的數(shù)據(jù)受到破壞實質(zhì)為第一磁盤陣列中存儲的數(shù)據(jù)受到破壞。
步驟302:將主存儲設(shè)備中包括的第一管理模塊指向的第二磁盤陣列。
在執(zhí)行本步驟前,第一管理模塊指向第一磁盤陣列,第一管理模塊指向第一磁盤陣列的實現(xiàn)形式可以為:第一管理模塊存儲第一磁盤陣列的地址,或者,第一管理模塊存儲用于指向第一磁盤陣列的第一指針。
本步驟可以為:主機根據(jù)主存儲設(shè)備的地址和從存儲設(shè)備的地址,確定參與同步的主存儲設(shè)備和從存儲設(shè)備,獲取從存儲設(shè)備中存儲的第二磁盤陣列的地址,將第一管理模塊存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址, 或者,根據(jù)第二磁盤陣列的地址,將第一管理模塊存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列。
對于上述描述的更新過程,在具體實現(xiàn)時可以有多種實現(xiàn)方式,在本實施例中給出一種具體實現(xiàn)方式,其詳細過程可以為:
主機在確定出參與同步的主存儲設(shè)備和從存儲設(shè)備后,向從存儲設(shè)備發(fā)送獲取請求消息,從存儲設(shè)備接收該獲取請求消息,向主機發(fā)送其包括的第二磁盤陣列的地址;主機接收第二磁盤陣列的地址,向主存儲設(shè)備包括的第一管理模塊發(fā)送更新命令消息,該更新命令消息攜帶第二磁盤陣列的地址;第二管理模塊接收該更新命令消息,將自身存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址,或者,根據(jù)第二磁盤陣列的地址,將自身存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列。
可選的,第一管理模塊包括第一讀寫緩存單元和第一卷管理單元,第一讀寫緩存單元存儲第一磁盤陣列的地址或第一指針,第一卷管理單元存儲第一磁盤陣列的地址或第一指針。
相應(yīng)的,主機對第一管理模塊存儲的地址或指針進行更新的過程,可以為:
主機將第一讀寫緩存單元存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址,以及,將第一卷管理單元存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址;或者,將第一讀寫緩存單元存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列,以及,將第一卷管理單元存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列。
對于上述更新第一讀寫緩存單元和第一卷管理單元中的地址或指針過程,在具體實現(xiàn)時可以有多種實現(xiàn)方式,在本實施例中也給出一種具體實現(xiàn)方式,其詳細過程可以為:
主機分別向第一讀寫緩存單元和第一卷管理單元發(fā)送更新命令消息,該更新命令消息攜帶第二磁盤陣列的地址;第一讀寫緩存單元接收該更新命令消息,將自身存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址,或者,根據(jù)第二磁盤陣列的地址,將自身存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列;同樣,第一卷管理單元接收該更新命令消息,將自身存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址,或者,根據(jù)第二磁盤陣列的地址,將自身存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列。
步驟303:將從存儲設(shè)備中包括的第二管理模塊指向的第一磁盤陣列。
在執(zhí)行本步驟前,第二管理模塊指向第二磁盤陣列,第二管理模塊指向第二磁盤陣列的實現(xiàn)形式可以為:第二管理模塊存儲第二磁盤陣列的地址,或,第二管理模塊存儲用于指向第二磁盤陣列的第二指針。
本步驟可以為:主機獲取主存儲設(shè)備中存儲的第一磁盤陣列的地址,將第二管理模塊存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,或者,根據(jù)第一磁盤陣列的地址,將第二管理模塊存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列。
對于上述描述的更新過程,在具體實現(xiàn)時可以有多種實現(xiàn)方式,在本實施例中給出一種具體實現(xiàn)方式,其詳細過程可以為:
主機向主存儲設(shè)備發(fā)送獲取請求消息,主存儲設(shè)備接收該獲取請求消息,向主機發(fā)送其包括的第一磁盤陣列的地址;主機接收第一磁盤陣列的地址,向從存儲設(shè)備包括的第二管理模塊發(fā)送更新命令消息,該更新命令消息攜帶第一磁盤陣列的地址;第二管理模塊接收該更新命令消息,將自身存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,或者,根據(jù)第一磁盤陣列的地址,將自身存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列。
可選的,第二管理模塊包括第二讀寫緩存單元和第二卷管理單元,第二讀寫緩存單元存儲第二磁盤陣列的地址或第二指針,第二卷管理單元存儲第二磁盤陣列的地址或第二指針。
相應(yīng)的,主機對第二管理模塊存儲的地址或指針進行更新的過程,可以為:
主機將第二讀寫緩存單元存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,以及,將第二卷管理單元存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址;或者,將第二讀寫緩存單元存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列,以及,將第二卷管理單元存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列。
對于上述更新第二讀寫緩存單元和第二卷管理單元中的地址或指針過程,在具體實現(xiàn)時可以有多種實現(xiàn)方式,在本實施例中也給出一種具體實現(xiàn)方式,其詳細過程可以為:
主機向第二讀寫緩存單元和第二卷管理單元發(fā)送更新命令消息,該更新命令消息攜帶第一磁盤陣列的地址;第二讀寫緩存單元接收該更新命令消息,將 自身存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,或者,根據(jù)第一磁盤陣列的地址,將自身存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列;同樣,第二卷管理單元接收該更新命令消息,將自身存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,或者,根據(jù)第一磁盤陣列的地址,將自身存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列。
需要說明的是:上述步驟302和303沒有先后時序關(guān)系,可以先執(zhí)行步驟302再執(zhí)行步驟303,可以先執(zhí)行步驟303再執(zhí)行步驟302,或者兩個步驟同步執(zhí)行。且經(jīng)過上述兩個步驟之后,參見圖3-3,主存儲設(shè)備中的第一管理模塊指向第二磁盤陣列,第二管理模塊指向第一磁盤陣列;主機當(dāng)接收到讀寫指令時需要讀寫訪問主存儲設(shè)備,主機可以執(zhí)行如下步驟。
步驟304:接收讀寫指令,根據(jù)該讀寫指令讀寫主存儲設(shè)備包括的第一管理模塊指向的第二磁盤陣列。
具體的,主機接收讀寫指令,向主存儲設(shè)備的第一管理模塊發(fā)送該讀寫指令,第一管理模塊接收該讀寫指令,根據(jù)該讀寫指令在其指向的第二磁盤陣列中進行讀寫操作;由于第二磁盤陣列中的數(shù)據(jù)未受到破壞,不需要向第二磁盤陣列中同步數(shù)據(jù),所以第一管理模塊在接收到主機發(fā)送的讀寫指令后,可以對第二磁盤陣列中的任何存儲空間進行讀寫操作,從而提高了主機的讀寫性能。
另外,在執(zhí)行步驟303之后,由于第一磁盤陣列中的數(shù)據(jù)受到破壞,需要將第二磁盤陣列的數(shù)據(jù)同步至第一磁盤陣列,因此在執(zhí)行完步驟303之后,在第二磁盤陣列中的數(shù)據(jù)未發(fā)生變化之前,需要執(zhí)行如下步驟。
步驟305:對第一管理模塊指向的第二磁盤陣列中當(dāng)前存儲的數(shù)據(jù)進行快照處理,得到快照數(shù)據(jù)。
其中,該快照數(shù)據(jù)是當(dāng)前第二磁盤陣列中存儲的數(shù)據(jù)的備份,并且在當(dāng)前之后即使第二磁盤陣列中的數(shù)據(jù)發(fā)生變化,該快照數(shù)據(jù)仍為當(dāng)前第二磁盤陣列中存儲的數(shù)據(jù),不會隨著第二磁盤陣列中的數(shù)據(jù)變化而變化。例如,參見圖3-4,對第二磁盤陣列進行快照得到的快照數(shù)據(jù),該快照數(shù)據(jù)為當(dāng)前第二磁盤陣列的備份,其數(shù)據(jù)不會隨第二磁盤陣列中的數(shù)據(jù)變化而變化。
步驟306:將快照數(shù)據(jù)同步到第一磁盤陣列中。
其中,第一磁盤陣列是由多個磁片組成,如果主存儲設(shè)備發(fā)生磁盤壞道或磁盤損壞,則第一磁盤陣列中的某一個或多個磁片發(fā)生了損壞,在執(zhí)行本步驟 之前,需要將第一磁盤陣列中發(fā)生損壞的磁片替換為完好的磁片,然后再將快照數(shù)據(jù)同步到第一磁盤陣列中。
可選的,在同步完成后,當(dāng)?shù)诙疟P陣列中的數(shù)據(jù)發(fā)生變化時,第二管理模塊將第二磁盤陣列中發(fā)生變化的數(shù)據(jù)備份至第一磁盤陣列中。
在本發(fā)明實施例中,直接將由第一管理模塊指向第一磁盤陣列變?yōu)橹赶虻诙疟P陣列,將由第二管理模塊指向第二磁盤陣列變?yōu)橹赶虻谝淮疟P陣列。這樣同步數(shù)據(jù)的方法變?yōu)閺牡诙疟P陣列向第一磁盤陣列同步,又由于第二磁盤陣列中的數(shù)據(jù)未發(fā)生損壞,在同步數(shù)據(jù)的過程不需要向第二磁盤陣列存儲數(shù)據(jù),所以主機可以直接對第二磁盤陣列進行讀寫操作,提高了主機的讀寫性能。另外,在變換之后對第二磁盤陣列進行快照得到快照數(shù)據(jù),然后將該快照數(shù)據(jù)同步到第一磁盤陣列,保證第一磁盤陣列中的數(shù)據(jù)與第二磁盤陣列中的數(shù)據(jù)同步。
參見圖4,本發(fā)明實施例提供了一種訪問存儲設(shè)備的裝置,所述裝置包括:
接收單元401,用于接收同步命令消息,所述同步命令消息用于觸發(fā)將從存儲設(shè)備中的數(shù)據(jù)同步到主存儲設(shè)備,所述從存儲設(shè)備是對主存儲設(shè)備的備份,所述主存儲設(shè)備包括第一磁盤陣列和第一管理模塊,所述第一管理模塊指向所述第一磁盤陣列;所述從存儲設(shè)備包括第二磁盤陣列和第二管理模塊,所述第二管理模塊指向所述第二磁盤陣列;
處理單元402,用于將所述第一管理模塊指向所述第二磁盤陣列,以及將所述第二管理模塊指向所述第一磁盤陣列;
所述接收單元401,還用于接收讀寫指令;
所述處理單元402,還用于根據(jù)接收單元401接收的所述讀寫指令讀寫所述第一管理模塊指向的所述第二磁盤陣列。
可選的,所述第一管理模塊存儲所述第一磁盤陣列的地址或用于指向所述第一磁盤陣列的第一指針;所述第二管理模塊存儲所述第二磁盤陣列的地址或用于指向所述第二磁盤陣列的第二指針;
所述處理單元402,用于將所述第一管理模塊存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,或者,將所述第一管理模塊存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列;將所述第二管理模塊存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,或者,將 所述第二管理模塊存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列。
可選的,所述第一管理模塊包括第一讀寫緩存單元和第一卷管理單元所述第一讀寫緩存單元存儲所述第一磁盤陣列的地址或所述第一指針,所述第一卷管理單元存儲所述第一磁盤陣列的地址或所述第一指針;可選的,所述第一讀寫緩存單元用于接收主機發(fā)送的讀寫指令,根據(jù)所述讀寫指令讀寫所述第一磁盤陣列,所述第一卷管理單元用于管理所述第一磁盤陣列的存儲空間;
所述處理單元402,用于將所述第一讀寫緩存單元存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址,以及,將所述第一卷管理單元存儲的所述第一磁盤陣列的地址更新為所述第二磁盤陣列的地址;或者,將所述第一讀寫緩存單元存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列,以及,將所述第一卷管理單元存儲的第一指針由指向所述第一磁盤陣列更新為指向所述第二磁盤陣列。
所述處理單元402在具體更新時,所述處理單元402向從存儲設(shè)備發(fā)送獲取請求消息,以使從存儲設(shè)備接收該獲取請求消息后發(fā)送其包括的第二磁盤陣列的地址;接收從存儲設(shè)備的第二磁盤陣列的地址,向主存儲設(shè)備包括的第一管理模塊發(fā)送更新命令消息,該更新命令消息攜帶第二磁盤陣列的地址,以使第二管理模塊接收該更新命令消息,將自身存儲的第一磁盤陣列的地址更新為第二磁盤陣列的地址,或者,根據(jù)第二磁盤陣列的地址,將自身存儲的第一指針由指向第一磁盤陣列更新為指向第二磁盤陣列;
以及,所述處理單元402向主存儲設(shè)備發(fā)送獲取請求消息,以使主存儲設(shè)備接收該獲取請求消息并發(fā)送其包括的第一磁盤陣列的地址;接收第一磁盤陣列的地址,向從存儲設(shè)備包括的第二管理模塊發(fā)送更新命令消息,該更新命令消息攜帶第一磁盤陣列的地址,以使第二管理模塊接收該更新命令消息,將自身存儲的第二磁盤陣列的地址更新為第一磁盤陣列的地址,或者,根據(jù)第一磁盤陣列的地址,將自身存儲的第二指針由指向第二磁盤陣列更新為指向第一磁盤陣列。
可選的,所述第二管理模塊包括第二讀寫緩存單元和第二卷管理單元,所述第二讀寫緩存單元用于將所述主存儲設(shè)備中的數(shù)據(jù)備份至所述第二磁盤陣列,所述第二卷管理單元用于管理所述第二磁盤陣列的存儲空間;所述第二讀 寫緩存單元存儲所述第二磁盤陣列的地址或所述第二指針,所述第二卷管理單元存儲所述第二磁盤陣列的地址或所述第二指針;
所述處理單元402,用于將所述第二讀寫緩存單元存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址,以及,將所述第二卷管理單元存儲的所述第二磁盤陣列的地址更新為所述第一磁盤陣列的地址;或者,將所述第二讀寫緩存單元存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列,以及,將所述第二卷管理單元存儲的第二指針由指向所述第二磁盤陣列更新為指向所述第一磁盤陣列。
可選的,所述處理單元402,用于對所述第一管理模塊指向的所述第二磁盤陣列中當(dāng)前存儲的數(shù)據(jù)進行快照處理,得到快照數(shù)據(jù);將所述快照數(shù)據(jù)同步到所述第二管理模塊指向的所述第一磁盤陣列中。
在本發(fā)明實施例中,直接將第一管理模塊由指向第一磁盤陣列變?yōu)橹赶虻诙疟P陣列,將第二管理模塊由指向第二磁盤陣列變?yōu)橹赶虻谝淮疟P陣列,再對第二磁盤陣列進行快照得到快照數(shù)據(jù),然后將該快照數(shù)據(jù)同步到第一磁盤陣列,保證第一磁盤陣列中的數(shù)據(jù)與第二磁盤陣列中的數(shù)據(jù)同步。由于第二磁盤陣列中的數(shù)據(jù)未發(fā)生損壞,在同步數(shù)據(jù)的過程不需要向第二磁盤陣列存儲數(shù)據(jù),所以主機可以直接對第二磁盤陣列進行讀寫操作,提高了主機的讀寫性能。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。