麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

用于存儲(chǔ)系統(tǒng)中的軟切換的方法和裝置與流程

文檔序號(hào):12596738閱讀:336來源:國知局
用于存儲(chǔ)系統(tǒng)中的軟切換的方法和裝置與流程

本公開的實(shí)施例一般涉及存儲(chǔ)系統(tǒng),并且特別涉及一種用于存儲(chǔ)系統(tǒng)中的軟切換的方法和裝置。



背景技術(shù):

為了防范可能破壞數(shù)據(jù)可用性的事件,對(duì)數(shù)據(jù)而言具有冗余副本是至關(guān)重要的。復(fù)制(replication)是一種進(jìn)程,在該進(jìn)程中,使用快照(snapshot)技術(shù)在對(duì)文件應(yīng)用和塊應(yīng)用的本地保護(hù)或者遠(yuǎn)程保護(hù)對(duì)數(shù)據(jù)進(jìn)行復(fù)制。在源端的存儲(chǔ)系統(tǒng)失效的情況中,這提供了增強(qiáng)級(jí)別的冗余。

軟切換復(fù)制是用于對(duì)存儲(chǔ)資源的災(zāi)難恢復(fù)的復(fù)制情況之一。軟切換(同步失效轉(zhuǎn)移)使得目標(biāo)端存儲(chǔ)資源的邏輯單元號(hào)(LUN)或者文件系統(tǒng)能夠可用于所托管的存儲(chǔ)資源而沒有數(shù)據(jù)丟失。它逆轉(zhuǎn)復(fù)制會(huì)話,從而在管理路徑和數(shù)據(jù)路徑上都可用并且完全參與整個(gè)進(jìn)程的原始資源成為新的目標(biāo)存儲(chǔ)資源。

在復(fù)制進(jìn)程中,從禁用主機(jī)數(shù)據(jù)訪問的步驟開始到啟用主機(jī)數(shù)據(jù)訪問的步驟結(jié)束,系統(tǒng)將會(huì)禁止輸入/輸出(I/O)操作,即數(shù)據(jù)的寫入和/或讀取操作。當(dāng)用戶從系統(tǒng)得到快速和及時(shí)的反饋時(shí),系統(tǒng)才被認(rèn)為是有響應(yīng)的。因此,通常應(yīng)當(dāng)在3秒內(nèi)向用戶命令提供反饋,但是現(xiàn)有的復(fù)制同步操作要求比3秒長得多的時(shí)間。當(dāng)網(wǎng)絡(luò)狀況不佳時(shí),將會(huì)花費(fèi)更多的時(shí)間。為此,期望在存儲(chǔ)陣列上的周轉(zhuǎn)時(shí)間非常短。



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

鑒于現(xiàn)有技術(shù)中存在的上述問題,本公開的實(shí)施例的目的在于 提供一種用于存儲(chǔ)系統(tǒng)中的軟切換的方法和裝置,以在源端離線或者被設(shè)置為只讀之后并且目標(biāo)端還沒有就緒時(shí)處理用戶對(duì)源端數(shù)據(jù)的訪問操作。根據(jù)本發(fā)明的實(shí)施例的方法和裝置可以幫助確保軟切換完成而無需中止或者中斷用戶對(duì)數(shù)據(jù)的輸入/輸出操作,從而解決現(xiàn)有技術(shù)中的上述以及其他的問題。

根據(jù)本公開的實(shí)施例的第一方面,提供了一種用于存儲(chǔ)系統(tǒng)中的軟切換的方法。該方法包括:響應(yīng)于軟切換請(qǐng)求,將軟切換的源端的數(shù)據(jù)設(shè)置為只讀并且啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程;在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端;響應(yīng)于所述復(fù)制進(jìn)程的完成,在所述目標(biāo)端利用所述同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù);以及禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問。

在一些實(shí)施例中,在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端包括:在所述源端還記錄在所述復(fù)制進(jìn)程期間寫入的新數(shù)據(jù),并且將所述寫入的新數(shù)據(jù)同步記錄到所述目標(biāo)端。

在一些實(shí)施例中,在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端包括:在所述源端創(chuàng)建源端緩存并且在所述目標(biāo)端創(chuàng)建目標(biāo)端緩存,以用于在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù)并且同步記錄到所述目標(biāo)端。

在一些實(shí)施例中,在所述源端創(chuàng)建源端緩存并且在所述目標(biāo)端創(chuàng)建目標(biāo)端緩存,以用于在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù)并且同步記錄到所述目標(biāo)端包括:通過所述源端緩存來記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù),并且同步記錄到所述目標(biāo)端緩存。

在一些實(shí)施例中,所述源端緩存和所述目標(biāo)端緩存在邏輯上通過互為鏡像的數(shù)據(jù)結(jié)構(gòu)來表示。

在一些實(shí)施例中,所述數(shù)據(jù)結(jié)構(gòu)包括頭部和主體,所述頭部包括緩存指針和inode鏈,所述主體至少包括所述寫入的新數(shù)據(jù)。

在一些實(shí)施例中,所述緩存指針至少存儲(chǔ)所述inode鏈的入口地址,并且所述inode鏈存儲(chǔ)記錄所述更新操作的inode。

在一些實(shí)施例中,在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端包括:響應(yīng)于針對(duì)所述數(shù)據(jù)或者所述寫入的新數(shù)據(jù)的讀取操作,從所述源端返回所述數(shù)據(jù)或者所記錄的新數(shù)據(jù)。

在一些實(shí)施例中,啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程包括:根據(jù)所述復(fù)制進(jìn)程的配置來確定軟切換的目標(biāo)端,并且配置所確定的目標(biāo)端的存儲(chǔ)空間以用于所述復(fù)制進(jìn)程。

在一些實(shí)施例中,啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程包括:選擇所述源端與所述目標(biāo)端之間的內(nèi)部連接,并且在所選擇的內(nèi)部連接上建立會(huì)話以作為用于所述復(fù)制進(jìn)程的通信管道。

在一些實(shí)施例中,在所述目標(biāo)端利用所述同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù)包括:將所記錄的更新操作作為所復(fù)制的數(shù)據(jù)的最新快照。

在一些實(shí)施例中,禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問包括:斷開與所述源端的數(shù)據(jù)連接并且建立與所述目標(biāo)端的數(shù)據(jù)連接。

根據(jù)本公開的實(shí)施例的第二方面,提供了一種用于存儲(chǔ)系統(tǒng)中的軟切換的裝置。該裝置包括:復(fù)制單元,被配置為響應(yīng)于軟切換請(qǐng)求,將軟切換的源端的數(shù)據(jù)設(shè)置為只讀并且啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程;記錄單元,被配置為在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端;更新單元,被配置為響應(yīng)于所述復(fù)制進(jìn)程的完成,在所述目標(biāo)端利用所述同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù);以及切換單元,被配置為禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問。

根據(jù)本公開的實(shí)施例的第三方面,提供了一種包括程序代碼的計(jì)算機(jī)程序產(chǎn)品。所述程序代碼在處理器上被執(zhí)行時(shí),可以促使所述處理器執(zhí)行根據(jù)本公開的實(shí)施例的第一方面的方法。

根據(jù)本公開的實(shí)施例的第四方面,提供了一種存儲(chǔ)系統(tǒng)。該存儲(chǔ)系統(tǒng)可以包括根據(jù)本公開的實(shí)施例的第二方面的裝置。

附圖說明

通過參考附圖閱讀下文的詳細(xì)描述,本公開的實(shí)施例的上述以及其他目的、特征和優(yōu)點(diǎn)將變得容易理解。在附圖中,以示例性而非限制性的方式示出了本公開的若干實(shí)施例,其中:

圖1示意性地示出了從源端到目標(biāo)端的現(xiàn)有切換架構(gòu)圖;

圖2示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于存儲(chǔ)系統(tǒng)中的軟切換的方法;

圖3示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于源端緩存和目標(biāo)端緩存的示例性數(shù)據(jù)結(jié)構(gòu);

圖4示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于存儲(chǔ)系統(tǒng)中的軟切換的裝置;

圖5示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的軟切換的拓?fù)浣Y(jié)構(gòu);

圖6示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的軟切換代理模塊的示例性結(jié)構(gòu)圖;

圖7示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的軟切換的示例性進(jìn)程;

圖8示意性地示出了可以用來實(shí)現(xiàn)本公開的實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器的框圖。

具體實(shí)施方式

下面將參考附圖中所示出的若干示例性實(shí)施例來描述本公開的原理和精神。應(yīng)當(dāng)理解,描述這些具體的實(shí)施例僅是為了使本領(lǐng)域 的技術(shù)人員能夠更好地理解并實(shí)現(xiàn)本公開,而并非以任何方式限制本公開的范圍。

圖1示意性地示出了從源端到目標(biāo)端的現(xiàn)有切換架構(gòu)圖。如圖1中所示出的,在源端處,用戶可以使用圖形界面GUI或者命令行界面CLI通過CIC、HTTP、或TCP等協(xié)議經(jīng)由存儲(chǔ)處理器SP來與操作系統(tǒng)中的數(shù)據(jù)處理DP管理器進(jìn)行交互。可替換地,用戶也可以使用命令行界面CLI通過NBS或TCP協(xié)議來直接與DP管理器交互。在目標(biāo)端處,用戶可以使用GUI或者CLI經(jīng)由存儲(chǔ)處理器SP來與操作系統(tǒng)中的數(shù)據(jù)處理DP管理器進(jìn)行交互。在源端處并且在目標(biāo)端處,DP管理器可以與數(shù)據(jù)控制模塊和復(fù)制引擎進(jìn)行交互。

在復(fù)制進(jìn)程中,源端的數(shù)據(jù)控制模塊可以通過文件系統(tǒng)和iSCSI LUN取出要進(jìn)行軟切換的數(shù)據(jù)并且傳送給源端的復(fù)制引擎。源端的復(fù)制引擎可以通過RCP、TCP IP等協(xié)議將該數(shù)據(jù)傳送給目標(biāo)端引擎。目標(biāo)端引擎可以再將數(shù)據(jù)傳送給目標(biāo)端的數(shù)據(jù)控制模塊,目標(biāo)端的數(shù)據(jù)控制模塊進(jìn)而可以通過文件系統(tǒng)和iSCSI LUN將數(shù)據(jù)存儲(chǔ)到目標(biāo)端的存儲(chǔ)空間。在復(fù)制進(jìn)程期間,源端的數(shù)據(jù)處理管理器可以通過CIC、HTTP、TCP等協(xié)議來與目標(biāo)端的數(shù)據(jù)處理管理器進(jìn)行必要的通信。

一般而言,軟切換的基本過程可以包括以下的步驟。首先,存儲(chǔ)管理員可以選擇要進(jìn)行軟切換的源端數(shù)據(jù),系統(tǒng)可以執(zhí)行一系列的內(nèi)部同步,直到源端的存儲(chǔ)資源未完成的復(fù)制少于100MB。第二,系統(tǒng)可以禁用對(duì)源端的數(shù)據(jù)的主機(jī)訪問,對(duì)于文件存儲(chǔ)資源而言,系統(tǒng)將源端數(shù)據(jù)設(shè)置為只讀并且使得共享的文件夾服務(wù)器不激活。第三,系統(tǒng)可以執(zhí)行到目標(biāo)端的最終同步。第四,系統(tǒng)可以進(jìn)行驗(yàn)證過程,包括驗(yàn)證源端處于只讀狀態(tài)、目標(biāo)端處于讀寫狀態(tài)、以及沒有數(shù)據(jù)丟失。第五,系統(tǒng)可以逆轉(zhuǎn)復(fù)制會(huì)話。最后,系統(tǒng)可以啟用對(duì)目標(biāo)端的數(shù)據(jù)的主機(jī)訪問,即對(duì)于文件存儲(chǔ)資源而言,系統(tǒng)將存儲(chǔ)資源設(shè)置為讀寫并且使得共享的文件夾服務(wù)器激活。

如上文所討論的,在復(fù)制進(jìn)程中,從禁用主機(jī)數(shù)據(jù)訪問的步驟 開始到啟用主機(jī)數(shù)據(jù)訪問的步驟結(jié)束,系統(tǒng)將會(huì)禁止對(duì)數(shù)據(jù)的輸入/輸出(I/O)操作。當(dāng)用戶從系統(tǒng)得到快速和及時(shí)的反饋時(shí),系統(tǒng)才被認(rèn)為是有響應(yīng)的。因此,通常應(yīng)當(dāng)在3秒內(nèi)向用戶命令提供反饋,但是現(xiàn)有的復(fù)制同步操作要求比3秒長得多的時(shí)間。當(dāng)網(wǎng)絡(luò)狀況不佳時(shí),將會(huì)花費(fèi)更多的時(shí)間。為此,期望在存儲(chǔ)陣列上的周轉(zhuǎn)時(shí)間非常短。

本公開的實(shí)施例可以在源端離線或者被設(shè)置為只讀之后并且目標(biāo)端還沒有就緒時(shí)處理用戶對(duì)源端數(shù)據(jù)的訪問操作,幫助確保軟切換完成而無需中止或者中斷對(duì)數(shù)據(jù)的輸入/輸出操作,從而解決現(xiàn)有技術(shù)中的上述以及其他的問題。

圖2示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于存儲(chǔ)系統(tǒng)中的軟切換的方法200。

如圖2中所示出的,方法200在開始之后可以進(jìn)入步驟201。在步驟201中,響應(yīng)于軟切換請(qǐng)求,將軟切換的源端的數(shù)據(jù)設(shè)置為只讀并且啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程。本領(lǐng)域的技術(shù)人員可以理解,軟切換可以由于各種原因由各種相關(guān)的實(shí)體發(fā)起,諸如由于定期的冗余備份、存儲(chǔ)管理員臨時(shí)觸發(fā)等等,本公開對(duì)此不進(jìn)行限制。存儲(chǔ)系統(tǒng)中的任何軟切換都可以應(yīng)用本公開內(nèi)容的實(shí)施例所提供的方法200。

本領(lǐng)域的技術(shù)人員還可以理解,在進(jìn)行步驟201的過程中,特別是在啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程之前,系統(tǒng)可能還需要進(jìn)行與軟切換相關(guān)聯(lián)的復(fù)制準(zhǔn)備工作,諸如內(nèi)部同步、獲取復(fù)制進(jìn)程的參數(shù)、狀態(tài)驗(yàn)證等。由于這些過程由本領(lǐng)域的技術(shù)人員所熟知,本公開對(duì)此不再贅述。

在一個(gè)實(shí)施例中,方法200還可以包括:根據(jù)所述復(fù)制進(jìn)程的配置來確定軟切換的目標(biāo)端,并且配置所確定的目標(biāo)端的存儲(chǔ)空間以用于所述復(fù)制進(jìn)程。在存儲(chǔ)系統(tǒng)中,在準(zhǔn)備進(jìn)行軟切換時(shí),可能存在多個(gè)可用的候選目標(biāo)端。因此,方法200可以根據(jù)復(fù)制進(jìn)程的相關(guān)配置來最終確定進(jìn)行軟切換的目標(biāo)端。在一個(gè)實(shí)施例中,方法 200還可以包括:選擇所述源端與所述目標(biāo)端之間的內(nèi)部連接,并且在所選擇的內(nèi)部連接上建立會(huì)話以作為用于所述復(fù)制進(jìn)程的通信管道。在存儲(chǔ)系統(tǒng)中,在確定了進(jìn)行軟切換的目標(biāo)端之后,在源端與目標(biāo)端之間可能存在多個(gè)可用的候選內(nèi)部連接。因此,方法200可以在這些可用的候選內(nèi)部連接中選擇出一個(gè)或者多個(gè)內(nèi)部連接來進(jìn)行軟切換。進(jìn)一步地,方法200可以在所選擇的內(nèi)部連接上建立連接會(huì)話,作為用于所述復(fù)制進(jìn)程和/或其他數(shù)據(jù)同步的通信管道。

接著,方法200可以前進(jìn)至步驟202。在步驟202中,在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端。在源端的數(shù)據(jù)被設(shè)置為只讀之后,在復(fù)制進(jìn)程完成之前,系統(tǒng)可能還會(huì)接收到來自用戶的對(duì)這些被設(shè)置為只讀的數(shù)據(jù)的更新操作,諸如對(duì)這些數(shù)據(jù)進(jìn)行修改等。根據(jù)本公開的一個(gè)實(shí)施例,為了這些更新操作能夠在被復(fù)制到目標(biāo)端的數(shù)據(jù)上得以體現(xiàn),方法200在源端對(duì)這些更新操作進(jìn)行記錄,并且同步記錄到目標(biāo)端,以便于在復(fù)制進(jìn)程完成之后在目標(biāo)端根據(jù)這些更新操作對(duì)所復(fù)制的數(shù)據(jù)進(jìn)行更新。如此,在復(fù)制進(jìn)程期間,用戶對(duì)數(shù)據(jù)的更新操作不會(huì)被中斷,因此沒有受到軟切換的影響,從而相比于現(xiàn)有的方法而言改進(jìn)了用戶體驗(yàn)。

在一個(gè)實(shí)施例中,方法200還可以包括:在所述源端還記錄在所述復(fù)制進(jìn)程期間寫入的新數(shù)據(jù),并且將所述寫入的新數(shù)據(jù)同步記錄到所述目標(biāo)端。如上所述,在方法200中,針對(duì)源端已經(jīng)被設(shè)置為只讀的原有數(shù)據(jù)的更新操作可以被記錄。除此以外,方法200還可以記錄用戶在復(fù)制進(jìn)程期間寫入的新數(shù)據(jù),并且將寫入的新數(shù)據(jù)同步記錄到目標(biāo)端。如此,在軟切換完成之后,用戶在這個(gè)復(fù)制進(jìn)程期間寫入的新數(shù)據(jù)也會(huì)體現(xiàn)在目標(biāo)端。因此,在復(fù)制過程期間,從用戶的視角來看,用戶不僅可以對(duì)原有數(shù)據(jù)進(jìn)行更新操作,還可以寫入新的數(shù)據(jù),進(jìn)一步改進(jìn)了用戶體驗(yàn)。

在一個(gè)實(shí)施例中,方法200還可以包括:在源端創(chuàng)建源端緩存并且在目標(biāo)端創(chuàng)建目標(biāo)端緩存,以用于在源端記錄在復(fù)制進(jìn)程期間 針對(duì)數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù)并且同步記錄到目標(biāo)端。根據(jù)本公開的一個(gè)實(shí)施例,在源端對(duì)于上述更新操作以及寫入的新數(shù)據(jù)的記錄工作可以通過源端緩存來完成,而在目標(biāo)端對(duì)于上述更新操作以及寫入的新數(shù)據(jù)的同步記錄工作可以通過目標(biāo)端緩存來完成。因此,在進(jìn)行上述記錄和同步記錄工作之前,方法200分別在源端和目標(biāo)端創(chuàng)建源端緩存和目標(biāo)端緩存,以用于在源端處記錄在復(fù)制進(jìn)程期間針對(duì)原有數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù)并且同步記錄到目標(biāo)端。

在一個(gè)實(shí)施例中,源端緩存和目標(biāo)端緩存在邏輯上可以通過互為鏡像的數(shù)據(jù)結(jié)構(gòu)來表示。在一個(gè)實(shí)施例中,該數(shù)據(jù)結(jié)構(gòu)可以包括頭部和主體,頭部可以包括緩存指針和inode鏈,主體至少可以包括寫入的新數(shù)據(jù)。在一個(gè)實(shí)施例中,緩存指針可以至少存儲(chǔ)inode鏈的入口地址,并且inode鏈存可以儲(chǔ)記錄更新操作的inode。

圖3示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于源端緩存和目標(biāo)端緩存的示例性數(shù)據(jù)結(jié)構(gòu)300。

如上面所描述的,源端緩存和目標(biāo)端緩存可以是存在于源端和目標(biāo)端作為鏡像的一種數(shù)據(jù)存儲(chǔ)區(qū)域,在邏輯上可以通過數(shù)據(jù)結(jié)構(gòu)300來表示。它們可以用于記錄在源端的對(duì)數(shù)據(jù)的連續(xù)輸入/輸出I/O操作,并且將任何更新同步地鏡像到遠(yuǎn)程的目標(biāo)端。

如圖3所示出的,示例性數(shù)據(jù)結(jié)構(gòu)300可以包括頭部310和主體320。頭部301可以包括緩存指針311和inode鏈312。主體320可以包括源端基于ROFW(首寫時(shí)重定向)技術(shù)所更新的數(shù)據(jù)(可以包括寫入的新數(shù)據(jù))以及必要的數(shù)據(jù)結(jié)構(gòu)。

緩存指針311可以存儲(chǔ)用于被更新的數(shù)據(jù)塊的inode鏈312的入口地址,并且還可以包括指向源端數(shù)據(jù)的指針。在一個(gè)實(shí)施例中,除了系統(tǒng)預(yù)留的存儲(chǔ)格(Cell)之外,緩存指針311可以起始于每個(gè)源端緩存或目標(biāo)端緩存的第一個(gè)可用的存儲(chǔ)格,緩存指針311的具體大小可以根據(jù)具體的存儲(chǔ)環(huán)境和實(shí)際的需求進(jìn)行確定。具體而言,緩存指針311可以由2N個(gè)存儲(chǔ)格構(gòu)成,存儲(chǔ)格是操作系統(tǒng)訪問源端 緩存或者目標(biāo)端緩存的最小單元,即塊存儲(chǔ)(block device)中的一個(gè)塊(block)空間或者文件存儲(chǔ)(file device)中的一個(gè)頁面(page)空間。比如,Linux訪問文件存儲(chǔ)的最小單元是4KB(即一個(gè)page),那么Cell大小就是4KB。也就是說,緩存指針311的大小=2N個(gè)Cell(N=0,1,2,…,并且N基于實(shí)施方式的要求),而Cell在塊存儲(chǔ)中是指1個(gè)block,在文件存儲(chǔ)中是指一個(gè)page。

inode鏈312可以存儲(chǔ)一系列的inode,這些inode可以使得用于源端緩存與原數(shù)據(jù)之間基于ROFW技術(shù)的更新的指針重定向。inode鏈312可以與高級(jí)快照功能使用相同的邏輯。

返回到參考圖2,在一個(gè)實(shí)施例中,方法200還可以包括:響應(yīng)于針對(duì)所述數(shù)據(jù)或者所述新數(shù)據(jù)的讀取操作,從源端返回所述數(shù)據(jù)或者所記錄的新數(shù)據(jù)。具體而言,在復(fù)制進(jìn)程期間,用戶可能還需要對(duì)正在進(jìn)行復(fù)制的原有數(shù)據(jù)和在復(fù)制進(jìn)程期間所寫入的新數(shù)據(jù)進(jìn)行讀取的操作。由于原數(shù)據(jù)在復(fù)制期間仍然是可讀的,并且用戶所寫入的新數(shù)據(jù)也已經(jīng)被記錄。因此,方法200可以根據(jù)相應(yīng)的讀取操作來返回用戶所要讀取的數(shù)據(jù)。如此,在復(fù)制進(jìn)程期間,用戶不僅可以進(jìn)行對(duì)原有數(shù)據(jù)的更新操作和寫入新的數(shù)據(jù),還可以實(shí)現(xiàn)對(duì)原有數(shù)據(jù)以及所寫入的新數(shù)據(jù)的讀取操作。

繼續(xù)參考圖2,在步驟202之后,方法200可以前進(jìn)至步驟203。在步驟203中,響應(yīng)于所述復(fù)制進(jìn)程的完成,在所述目標(biāo)端利用同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù)。在復(fù)制進(jìn)程完成之后,由于用戶在復(fù)制進(jìn)程期間可能對(duì)所復(fù)制的數(shù)據(jù)進(jìn)行了更新操作,為了將這些更新操作體現(xiàn)在目標(biāo)端所復(fù)制的數(shù)據(jù)上,方法200可以利用目標(biāo)端同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù)。如此,在進(jìn)行軟切換之后,用戶可以無縫地在原有更新操作的基礎(chǔ)上繼續(xù)對(duì)這些數(shù)據(jù)進(jìn)行后續(xù)的讀寫操作。

在一個(gè)實(shí)施例中,方法200還可以包括:將所記錄的更新操作作為所復(fù)制的數(shù)據(jù)的最新快照。在這個(gè)方面,更新操作可以基于快照技術(shù)來進(jìn)行。方法200可以采用快照技術(shù)來記錄這些更新操作, 從而在復(fù)制進(jìn)程完成時(shí),所記錄的更新操作就是所復(fù)制的數(shù)據(jù)的最新快照。在目標(biāo)端處,方法200將同步記錄的所復(fù)制的數(shù)據(jù)的最新快照與所復(fù)制的數(shù)據(jù)進(jìn)行關(guān)聯(lián),即實(shí)現(xiàn)了對(duì)所復(fù)制數(shù)據(jù)的更新操作。

接著,方法200可以前進(jìn)至步驟204。在步驟204中,禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問。在一個(gè)實(shí)施例中,方法200還可以包括:斷開與所述源端的數(shù)據(jù)連接并且建立與所述目標(biāo)端的數(shù)據(jù)連接,從而實(shí)現(xiàn)了禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問。

在步驟204之后,方法200可以結(jié)束。

圖4示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的用于存儲(chǔ)系統(tǒng)中的軟切換的裝置400。

如圖4中所示出的,裝置400可以包括:復(fù)制單元401、記錄單元402、更新單元403、以及切換單元404。根據(jù)本公開內(nèi)容的實(shí)施例,復(fù)制單元401可以被配置為響應(yīng)于軟切換請(qǐng)求,將軟切換的源端的數(shù)據(jù)設(shè)置為只讀并且啟動(dòng)所述數(shù)據(jù)向軟切換的目標(biāo)端的復(fù)制進(jìn)程。記錄單元402可以被配置為在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作,并且將所述更新操作同步記錄到所述目標(biāo)端。更新單元403可以被配置為響應(yīng)于所述復(fù)制進(jìn)程的完成,在所述目標(biāo)端利用所述同步記錄的更新操作來更新所復(fù)制的數(shù)據(jù)。切換單元404可以被配置為禁用對(duì)所述源端的數(shù)據(jù)訪問并且啟用對(duì)所述目標(biāo)端的數(shù)據(jù)訪問。

在一個(gè)實(shí)施例中,記錄單元402可以進(jìn)一步被配置為:在所述源端還記錄在所述復(fù)制進(jìn)程期間寫入的新數(shù)據(jù),并且將所述寫入的新數(shù)據(jù)同步記錄到所述目標(biāo)端。在一個(gè)實(shí)施例中,記錄單元402可以進(jìn)一步被配置為:在所述源端創(chuàng)建源端緩存并且在所述目標(biāo)端創(chuàng)建目標(biāo)端緩存,以用于在所述源端記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作和寫入的新數(shù)據(jù)并且同步記錄到所述目標(biāo)端。在一個(gè)實(shí)施例中,記錄單元402可以進(jìn)一步被配置為:通過所述源端緩存來記錄在所述復(fù)制進(jìn)程期間針對(duì)所述數(shù)據(jù)的更新操作和寫入的 新數(shù)據(jù),并且同步記錄到所述目標(biāo)端緩存。

在一個(gè)實(shí)施例中,源端緩存和所述目標(biāo)端緩存在邏輯上通過互為鏡像的數(shù)據(jù)結(jié)構(gòu)來表示。在一個(gè)實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)包括頭部和主體,所述頭部包括緩存指針和inode鏈,所述主體至少包括所述寫入的新數(shù)據(jù)。在一個(gè)實(shí)施例中,緩存指針至少存儲(chǔ)所述inode鏈的入口地址,并且所述inode鏈存儲(chǔ)記錄所述更新操作的inode。

在一個(gè)實(shí)施例中,記錄單元402可以進(jìn)一步被配置為:響應(yīng)于針對(duì)所述數(shù)據(jù)或者所述寫入的新數(shù)據(jù)的讀取操作,從所述源端返回所述數(shù)據(jù)或者所記錄的新數(shù)據(jù)。

在一個(gè)實(shí)施例中,復(fù)制單元401可以進(jìn)一步被配置為:根據(jù)所述復(fù)制進(jìn)程的配置來確定軟切換的目標(biāo)端,并且配置所確定的目標(biāo)端的存儲(chǔ)空間以用于所述復(fù)制進(jìn)程。在一個(gè)實(shí)施例中,復(fù)制單元401可以進(jìn)一步被配置為:選擇所述源端與所述目標(biāo)端之間的內(nèi)部連接,并且在所選擇的內(nèi)部連接上建立會(huì)話以作為用于所述復(fù)制進(jìn)程的通信管道。

在一個(gè)實(shí)施例中,更新單元403可以進(jìn)一步被配置為:將所記錄的更新操作作為所復(fù)制的數(shù)據(jù)的最新快照。在一個(gè)實(shí)施例中,切換單元404可以進(jìn)一步被配置為:斷開與所述源端的數(shù)據(jù)連接并且建立與所述目標(biāo)端的數(shù)據(jù)連接。

在下文中,參考圖5-7,通過僅為示例的方式,將描述本公開的一種具體實(shí)施方式。本領(lǐng)域的技術(shù)人員將會(huì)理解,本公開的并不限于該具體實(shí)施方式中的具體細(xì)節(jié),而是也可以采用不同于該具體實(shí)施方式的細(xì)節(jié)來實(shí)施。

圖5示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的軟切換的拓?fù)浣Y(jié)構(gòu)500。在圖5中所示出的軟切換的示例性拓?fù)浣Y(jié)構(gòu)500中,在遠(yuǎn)端和目標(biāo)端分別形成了根據(jù)本公開的一個(gè)實(shí)施例的思想的軟切換代理模塊504和512,以用于實(shí)施根據(jù)本公開內(nèi)容的用于存儲(chǔ)系統(tǒng)中的軟切換的方法。

在圖5中所示出的示例性拓?fù)浣Y(jié)構(gòu)500中,源端的軟切換代理 504可以放置在源端的數(shù)據(jù)路徑管理器503與源端的復(fù)制引擎506之間。相應(yīng)地,目標(biāo)端的軟切換代理512可以放置在目標(biāo)端的數(shù)據(jù)路徑管理器511與目標(biāo)端的復(fù)制引擎514之間。系統(tǒng)中原有的模塊使用虛線框來表示,而根據(jù)本公開的實(shí)施例新加入的模塊,即源端軟切換代理模塊504和目標(biāo)端軟切換代理模塊512以及源端緩存模塊508和目標(biāo)端緩存模塊516,使用實(shí)線框來表示。各模塊之間的交互過程在圖5中可以使用箭頭來表示,在軟切換過程中已有的交互步驟由于對(duì)本領(lǐng)域的技術(shù)人員而言是熟知的,所以此處不再對(duì)這些交互操作進(jìn)行贅述。

根據(jù)本公開的一個(gè)實(shí)施例,當(dāng)軟切換被調(diào)用時(shí),源端的軟切換代理504可以首先接收用戶對(duì)源端數(shù)據(jù)輸入/輸出I/O操作。隨后,源端緩存508和目標(biāo)端緩存516可以被創(chuàng)建用于針對(duì)源端數(shù)據(jù)的連續(xù)的同步寫入。然后,這兩個(gè)緩存508和516可以接收來自源端的軟切換代理模塊504的對(duì)源端數(shù)據(jù)的同步輸入/輸出I/O操作,直到復(fù)制完成并且目標(biāo)端的服務(wù)就緒。最后,在目標(biāo)端數(shù)據(jù)路徑建立之前,目標(biāo)端的軟切換代理模塊512中對(duì)所復(fù)制的數(shù)據(jù)進(jìn)行更新的模塊可以將目標(biāo)端緩存516作為目標(biāo)端數(shù)據(jù)的最新快照。

圖6示意性地示出了根據(jù)本公開的一個(gè)實(shí)施例的軟切換代理模塊600的示例性結(jié)構(gòu)圖。如圖6中所示出的,軟切換代理模塊600可以包括映射管理模塊610、連接管理模塊620、以及數(shù)據(jù)傳送模塊630。

映射管理模塊610可以保持源端與目標(biāo)端之間的映射信息,它可以搜索目標(biāo)端并且在數(shù)據(jù)傳送之前建立源端與目標(biāo)端之間的映射關(guān)系。如圖6中所示出的,映射管理模塊610可以包括目標(biāo)端發(fā)現(xiàn)模塊611和目標(biāo)端選擇模塊612。目標(biāo)端發(fā)現(xiàn)模塊611可以用于根據(jù)當(dāng)前的復(fù)制進(jìn)程配置來發(fā)現(xiàn)并確定目標(biāo)端。目標(biāo)端選擇模塊612可以在確定目標(biāo)端之后對(duì)目標(biāo)端的存儲(chǔ)空間進(jìn)行配置。

連接管理模塊620可以用于建立源端與目標(biāo)端之間的內(nèi)部連接。如圖6中所示出的,連接管理模塊620可以包括連接選擇模塊621 和連接管道模塊622。連接選擇模塊621可以用于選擇源端與目標(biāo)端之間的內(nèi)部連接并且完成為了在它們之間建立會(huì)話的準(zhǔn)備工作。連接管道模塊622可以用于在源端與目標(biāo)端之間建立連接會(huì)話,該連接會(huì)話是源端與目標(biāo)端之間的通信管道,該通信管道可以用于服務(wù)傳送和數(shù)據(jù)同步。

數(shù)據(jù)傳送模塊630可以用于同步地將數(shù)據(jù)傳送給源端緩存和目標(biāo)端緩存。如圖6中所示出的,數(shù)據(jù)傳送模塊630可以包括數(shù)據(jù)處置器631和緩存切換器632。數(shù)據(jù)處置器631可以用于處置所請(qǐng)求的輸入/輸出I/O操作,并且根據(jù)復(fù)制會(huì)話的狀態(tài)返回來自源端或者目標(biāo)端的數(shù)據(jù)。緩存切換器632可以用于將目標(biāo)端緩存切換作為目標(biāo)端資源的最新快照。

圖7示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的軟切換的示例性進(jìn)程700。應(yīng)當(dāng)注意,進(jìn)程700僅是本公開的一個(gè)實(shí)施例的一個(gè)示例性進(jìn)程,本領(lǐng)域的技術(shù)人員可以根據(jù)具體的技術(shù)環(huán)境和技術(shù)要求以除了進(jìn)程700之外的其他適當(dāng)?shù)姆绞絹韺?shí)施根據(jù)本公開的實(shí)施例的方法。

如圖7中所示出的,進(jìn)程700包括步驟a-k。在步驟a中,軟切換代理模塊可以選擇復(fù)制進(jìn)程的目標(biāo)端。在步驟b中,軟切換代理可以接收來自源端的軟切換請(qǐng)求,包括與要進(jìn)行的軟切換相關(guān)聯(lián)的參數(shù)等等。在步驟c中,軟切換代理模塊可以分別在源端和目標(biāo)端創(chuàng)建源端緩存和目標(biāo)端緩存以用于針對(duì)源端的連續(xù)的同步寫入。在步驟d中,源端可以將數(shù)據(jù)(包括文件系統(tǒng)或者LUN)設(shè)置為只讀并且使主機(jī)的數(shù)據(jù)訪問脫離。在步驟e中,如果需要的話,源端可以在復(fù)制進(jìn)程開始之前進(jìn)行必要的同步數(shù)據(jù)操作。在步驟f中,系統(tǒng)可以執(zhí)行到目標(biāo)端的復(fù)制進(jìn)程,同時(shí)源端緩存和目標(biāo)端緩存從軟切換代理接收記錄了更新操作的同步的inode和數(shù)據(jù)輸出/輸出I/O操作,直到復(fù)制完成并且目標(biāo)端的服務(wù)準(zhǔn)備就緒。在步驟g中,系統(tǒng)可以從目標(biāo)端所復(fù)制的數(shù)據(jù)和目標(biāo)端緩存中準(zhǔn)備最新的數(shù)據(jù)。在步驟h中,目標(biāo)端緩存切換器可以將目標(biāo)端緩存作為目標(biāo)端數(shù)據(jù)的最 新快照。在步驟i中,軟切換代理可以解除激活。在步驟j中,目標(biāo)端可以建立數(shù)據(jù)路徑。在步驟k中,目標(biāo)端可以返回軟切換請(qǐng)求。

圖8示意性地示出了可以用來實(shí)現(xiàn)本公開的實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器812的框圖。應(yīng)當(dāng)注意,圖8中所示出的計(jì)算機(jī)系統(tǒng)/服務(wù)器812僅是一種示例,不對(duì)本公開實(shí)施方式的功能和使用范圍進(jìn)行任何限制。

如圖8中所示出的,計(jì)算機(jī)系統(tǒng)/服務(wù)器812以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器812的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元816,系統(tǒng)存儲(chǔ)器828,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器828和處理單元816)的總線818。

總線818表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。

計(jì)算機(jī)系統(tǒng)/服務(wù)器812典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器812訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移除的和不可移除的介質(zhì)。

系統(tǒng)存儲(chǔ)器828可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如存儲(chǔ)器830和/或緩存器832。計(jì)算機(jī)系統(tǒng)/服務(wù)器812可以進(jìn)一步包括其他可移除/不可移除的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。盡管圖8中未示出,可以提供用于對(duì)可移除非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移除非易失性光盤(例如CD-ROM、DVD-ROM或者其他光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線818相連。存儲(chǔ)器828可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本公開各實(shí)施方式的功能。

具有至少一個(gè)程序模塊842的程序/實(shí)用工具840,可以存儲(chǔ)在例如存儲(chǔ)器828中,這樣的程序模塊842包括但不限于:操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其他程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊842通常執(zhí)行本公開所描述的實(shí)施方式中的功能和/或方法。

根據(jù)需要,計(jì)算機(jī)系統(tǒng)/服務(wù)器812也可以與一個(gè)或多個(gè)外部設(shè)備(例如顯示設(shè)備824、存儲(chǔ)設(shè)備814等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器812交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器812能與一個(gè)或多個(gè)其他計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口822進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器812還可以通過網(wǎng)絡(luò)適配器820與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器820通過總線818與計(jì)算機(jī)系統(tǒng)/服務(wù)器812的其他模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器812使用其他硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。

在對(duì)本公開的實(shí)施例的描述中,術(shù)語“包括”及其類似用語應(yīng)當(dāng)理解為開放性包含,即“包括但不限于”。術(shù)語“基于”應(yīng)當(dāng)理解為“至少部分地基于”。術(shù)語“一個(gè)實(shí)施例”或“該實(shí)施例”應(yīng)當(dāng)理解為“至少一個(gè)實(shí)施例”。

應(yīng)當(dāng)注意,本公開的實(shí)施例可以通過硬件、軟件或者軟件和硬件的結(jié)合來實(shí)現(xiàn)。硬件部分可以利用專用邏輯來實(shí)現(xiàn);軟件部分可以存儲(chǔ)在存儲(chǔ)器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計(jì)硬件來執(zhí)行。本領(lǐng)域的技術(shù)人員可以理解上述的設(shè)備和方法可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來實(shí)現(xiàn),例如在可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。

此外,盡管在附圖中以特定順序描述了本公開方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟組合為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。還應(yīng)當(dāng)注意,根據(jù)本公開的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來具體化。

雖然已經(jīng)參考若干具體實(shí)施例描述了本公開,但是應(yīng)當(dāng)理解,本公開不限于所公開的具體實(shí)施例。本公開旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等效布置。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 闸北区| 柏乡县| 四子王旗| 巫山县| 康马县| 景洪市| 英吉沙县| 凤翔县| 江安县| 绥滨县| 高州市| 南陵县| 文昌市| 房山区| 梓潼县| 深泽县| 沅陵县| 柯坪县| 海城市| 吴川市| 大英县| 永胜县| 银川市| 芦溪县| 水城县| 镇巴县| 青龙| 洪泽县| 南阳市| 平昌县| 夹江县| 南和县| 临颍县| 兴业县| 墨竹工卡县| 广宁县| 湘阴县| 乡城县| 德州市| 临武县| 宁乡县|