專利名稱:一種塊設(shè)備異步數(shù)據(jù)遷移方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)遷移技術(shù),特別涉及一種塊設(shè)備間的異步數(shù)據(jù)遷移方法和系統(tǒng)。
背景技術(shù):
數(shù)據(jù)遷移是信息化建設(shè)中數(shù)據(jù)管理的重要任務(wù)。在存儲網(wǎng)絡(luò)中常見的情況是將數(shù)據(jù)從一個結(jié)點的存儲設(shè)備移動到另一個結(jié)點的存儲設(shè)備。傳統(tǒng)的數(shù)據(jù)遷移方法通常采用一種同步遷移的方法,需要先中斷遷移結(jié)點提供的服務(wù),然后宕機(jī)進(jìn)行數(shù)據(jù)遷移,遷移進(jìn)行的時間和遷移的數(shù)據(jù)規(guī)模相關(guān),遷移完成后用新的結(jié)點代替原有結(jié)點,恢復(fù)中斷的服務(wù)。在傳統(tǒng)的數(shù)據(jù)遷移方法中,遷移過程中遷移結(jié)點(即要遷移的結(jié)點,是由存儲服務(wù)器、硬盤和存儲服務(wù)軟件組成的單元)不能提供存儲服務(wù),因而造成了業(yè)務(wù)的中斷。當(dāng)前,在業(yè)務(wù)要求日益苛刻的情況下,業(yè)務(wù)中斷可能會給企業(yè)帶來一定的損失,且遷移過程進(jìn)行的時間與數(shù)據(jù)規(guī)模相關(guān),當(dāng)需要遷移的數(shù)據(jù)規(guī)模巨大時,遷移的成本也相應(yīng)變得難以承受。因此迫切需要·一種能夠保持應(yīng)用在線的數(shù)據(jù)遷移技術(shù),以滿足遷移過程中業(yè)務(wù)不中斷且遷移時間短的要求。
·
而現(xiàn)有的異步數(shù)據(jù)遷移方法主要有1)擴(kuò)展遠(yuǎn)程復(fù)制(XRC, eXtendedRemoteCopy)技術(shù),通過SDM(System Data Mover)系統(tǒng)負(fù)責(zé)實時地將主站點磁盤上的數(shù)據(jù)鏡像拷貝到遠(yuǎn)程的備份站點磁盤中,該方法需要軟硬件協(xié)同工作,其部署和實現(xiàn)的成本比較高;2)IBM的透明數(shù)據(jù)遷移工具(TDMF, Transparent Data Migration Facility),通過軟件的方式進(jìn)行數(shù)據(jù)遷移,以設(shè)備為單位進(jìn)行遷移。上述兩種方法的缺點在于遷移的數(shù)據(jù)量過多、遷移的時間長、成本高。
發(fā)明內(nèi)容
針對上述現(xiàn)有數(shù)據(jù)遷移技術(shù)中出現(xiàn)的問題,根據(jù)本發(fā)明一個實施例,提供一種塊設(shè)備異步數(shù)據(jù)遷移方法,所述方法包括步驟I)、將源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到目標(biāo)結(jié)點,并且所述目標(biāo)結(jié)點獲得所述源設(shè)備的數(shù)據(jù)有效性信息;步驟2)、根據(jù)所述源設(shè)備的數(shù)據(jù)有效性信息將所述源設(shè)備上的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備,其中所述源設(shè)備的數(shù)據(jù)有效性信息用于指示所述源設(shè)備上的數(shù)據(jù)是有效數(shù)據(jù)或者是無效數(shù)據(jù),所述有效數(shù)據(jù)指應(yīng)用寫過的數(shù)據(jù),所述無效數(shù)據(jù)指應(yīng)用從未寫過的數(shù)據(jù)。在一個實施例中,步驟2)中將所述源設(shè)備上的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備包括步驟2-1)、將所述有效數(shù)據(jù)從所述源設(shè)備讀取到所述目標(biāo)結(jié)點;步驟2-2)、將所述有效數(shù)據(jù)寫入所述目標(biāo)結(jié)點的目標(biāo)設(shè)備;步驟2-3)、將所述有效數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。在一個實施例中,步驟2)中還包括
步驟a)、將應(yīng)用從所述源結(jié)點切換到所述目標(biāo)結(jié)點;步驟b)、所述目標(biāo)結(jié)點根據(jù)所述數(shù)據(jù)有效性信息以及所請求的數(shù)據(jù)是否完成遷移來處理應(yīng)用請求。在一個實施例中,步驟a)包括步驟a_l)、將應(yīng)用請求掛起;步驟a_2)、將應(yīng)用從所述源結(jié)點切換到所述目標(biāo)結(jié)點;步驟a_3 )、重新處理所述應(yīng)用請求。在一個實施例中,步驟b )包括如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),將所述應(yīng)用請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述源設(shè)備,再將該讀請求的數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時將該應(yīng)用請求的數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時將該應(yīng)用請求的數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。
`
在進(jìn)一步的實施例中,將寫請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備進(jìn)行覆蓋包括將所述寫請求聚合成粒度對齊的大寫;再將所述大寫直接寫到目標(biāo)設(shè)備。在一個實施例中,步驟2)中還包括步驟2-0)、當(dāng)應(yīng)用請求正在訪問要遷移的有效數(shù)據(jù)時,等待應(yīng)用請求完成后再進(jìn)行步驟2-1);步驟b)中還包括當(dāng)應(yīng)用請求命中正在遷移的有效數(shù)據(jù)時,等待該有效數(shù)據(jù)遷移完成后再處理應(yīng)用請求。根據(jù)本發(fā)明一個實施例,提供一種塊設(shè)備異步數(shù)據(jù)遷移系統(tǒng),所述系統(tǒng)包括源結(jié)點和目標(biāo)結(jié)點,其中所述源結(jié)點包括源設(shè)備,用于存儲源結(jié)點的數(shù)據(jù)且維護(hù)記錄數(shù)據(jù)有效性信息的源結(jié)點元數(shù)據(jù);以及導(dǎo)出模塊,用于與導(dǎo)入模塊配合將所述源設(shè)備以標(biāo)準(zhǔn)塊設(shè)備的語義導(dǎo)出到目標(biāo)結(jié)點。所述目標(biāo)結(jié)點包括目標(biāo)設(shè)備,用于存儲從所述源設(shè)備遷移過來的有效數(shù)據(jù);導(dǎo)入模塊,用于與所述導(dǎo)出模塊配合將所述源設(shè)備以標(biāo)準(zhǔn)塊設(shè)備的語義導(dǎo)出到所述目標(biāo)結(jié)點;以及遷移模塊,用于將所述源設(shè)備中的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備且維護(hù)用于記錄數(shù)據(jù)狀態(tài)的目標(biāo)結(jié)點元數(shù)據(jù)。其中,通過所述導(dǎo)出模塊和所述導(dǎo)入模塊將所述源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到所述目標(biāo)結(jié)點形成所述目標(biāo)設(shè)備,所述目標(biāo)結(jié)點獲得所述源結(jié)點元數(shù)據(jù)。所述遷移模塊根據(jù)源結(jié)點元數(shù)據(jù)將所述源設(shè)備中的有效數(shù)據(jù)遷移至所述目標(biāo)設(shè)備。在一個實施例中,所述遷移模塊根據(jù)源結(jié)點元數(shù)據(jù)將所述源設(shè)備中的有效數(shù)據(jù)遷移至所述目標(biāo)設(shè)備包括將所述有效數(shù)據(jù)從所述源設(shè)備讀取到目標(biāo)結(jié)點;將所述有效數(shù)據(jù)寫入所述目標(biāo)設(shè)備;以及修改目標(biāo)結(jié)點元數(shù)據(jù)將所述有效數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。在一個實施例中,所述系統(tǒng)還包括應(yīng)用切換模塊,用于在所述源設(shè)備被導(dǎo)出到所述目標(biāo)結(jié)點后,將應(yīng)用切換到所述目標(biāo)結(jié)點。在一個實施例中,所述遷移模塊還用于通過檢索目標(biāo)結(jié)點元數(shù)據(jù)查找所請求的數(shù)據(jù)狀態(tài)來處理應(yīng)用請求如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),將所述應(yīng)用請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述源設(shè)備,再將該讀請求的數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。在進(jìn)一步的實施例中,所述系統(tǒng)還包括整流模塊,用于對應(yīng)用的小寫請求進(jìn)行聚合,將小寫請求聚合成粒度對齊的大寫,再將所述大寫請求轉(zhuǎn)發(fā)到遷移模塊。在一個實施例中,所述遷移模塊采用排隊的方法,將遷移過程和應(yīng)用請求串行進(jìn)行處理。相比現(xiàn)有的異步數(shù)據(jù)遷移方法,本發(fā)明提供的塊設(shè)備異步數(shù)據(jù)遷移方法和系統(tǒng)縮短業(yè)務(wù)層感知的遷移時間,且解決遷移的數(shù)據(jù)量過多、遷移時間長、成本高的問題。
圖1是根據(jù)本發(fā)明一個實施例的塊設(shè)備異步數(shù)據(jù)遷移方法流程圖;圖2是根據(jù)本發(fā)明一個實施例的目標(biāo)結(jié)點對應(yīng)用請求進(jìn)行轉(zhuǎn)發(fā)的策略圖;圖3是根據(jù)本發(fā)明一個實施例的塊設(shè)備異步數(shù)據(jù)遷移系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖。
具體實施例方式下面結(jié)合說明書附圖來描述本發(fā)明的具體實施方式
。根據(jù)本發(fā)明的一個實施例,提出了一種塊設(shè)備異步數(shù)據(jù)遷移方法,該方法首先將遷移源結(jié)點(或源結(jié)點)上的存儲設(shè)備(即源設(shè)備)導(dǎo)出至遷移目標(biāo)結(jié)點(或目標(biāo)結(jié)點),接著可將應(yīng)用切換到目標(biāo)結(jié)點,然后,由目標(biāo)結(jié)點來向應(yīng)用服務(wù)器提供存儲服務(wù),且同時可進(jìn)行數(shù)據(jù)遷移的過程,直到數(shù)據(jù)遷移結(jié)束。圖1示出了該方法的流程圖,包括以下步驟步驟一、將源結(jié)點的存儲設(shè)備(或者稱為源結(jié)點的數(shù)據(jù)設(shè)備、源設(shè)備),通過網(wǎng)絡(luò)導(dǎo)出到目標(biāo)結(jié)點,在目標(biāo)結(jié)點形成源存儲設(shè)備的鏡像,即目標(biāo)結(jié)點的存儲設(shè)備(或者稱目標(biāo)設(shè)備)。且目標(biāo)結(jié)點獲得源設(shè)備的數(shù)據(jù)有效性信息。其中,源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到目標(biāo)結(jié)點上,從而使得可在目標(biāo)結(jié)點上看到源設(shè)備,而在目標(biāo)結(jié)點中,導(dǎo)出的設(shè)備通常顯示為一個設(shè)備名。在一個實施例中,可通過iscsi協(xié)議將源設(shè)備導(dǎo)出至目標(biāo)結(jié)點,而在其他實施例中,可通過諸如fc協(xié)議(光纖通道)的協(xié)議來導(dǎo)出源設(shè)備。
在將源設(shè)備導(dǎo)出到目標(biāo)結(jié)點后,目標(biāo)結(jié)點可以對源結(jié)點存儲設(shè)備上的數(shù)據(jù)進(jìn)行正常的讀寫,并且可以進(jìn)行符合標(biāo)準(zhǔn)塊設(shè)備語義的其他操作。對于目標(biāo)結(jié)點來說,源結(jié)點的存儲設(shè)備是遠(yuǎn)程設(shè)備,需要通過網(wǎng)絡(luò)來訪問源設(shè)備,而目標(biāo)結(jié)點的存儲設(shè)備(即目標(biāo)設(shè)備)是本地設(shè)備,對本地設(shè)備的訪問優(yōu)先于對遠(yuǎn)程設(shè)備的訪問。因此,當(dāng)數(shù)據(jù)同時在源設(shè)備和目標(biāo)設(shè)備中存在時,應(yīng)用的數(shù)據(jù)請求應(yīng)直接訪問本地設(shè)備。目標(biāo)結(jié)點可以對源設(shè)備和目標(biāo)設(shè)備進(jìn)行管理,在這兩個設(shè)備之間轉(zhuǎn)發(fā)應(yīng)用請求或者進(jìn)行數(shù)據(jù)遷移。在一個實施例中,源設(shè)備的數(shù)據(jù)有效性信息用于表示哪些數(shù)據(jù)是有效數(shù)據(jù)、哪些是無效數(shù)據(jù)。其中,有效數(shù)據(jù)是指應(yīng)用寫過的數(shù)據(jù),而無效數(shù)據(jù)是指應(yīng)用從未寫過的數(shù)據(jù)。例如,如果硬盤上的某一扇區(qū)從未被應(yīng)用寫過,那么這一扇區(qū)上的數(shù)據(jù)就被認(rèn)為是無效數(shù)據(jù)。該區(qū)分的目的在于數(shù)據(jù)遷移過程中只遷移有效數(shù)據(jù)。步驟二、目標(biāo)結(jié)點驅(qū)動數(shù)據(jù)遷移的進(jìn)行,根據(jù)本發(fā)明的一個實施例,數(shù)據(jù)遷移過程包括I)、目標(biāo)結(jié)點將有效數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點本地;2)、目標(biāo)結(jié)點將有效數(shù)據(jù)寫入目標(biāo)設(shè)備;3)、目標(biāo)結(jié)點根據(jù)遷移過程完成與否,修改數(shù)據(jù)狀態(tài)(其中,數(shù)據(jù)狀態(tài)包括數(shù)據(jù)無效、數(shù)據(jù)有效需要進(jìn)行遷移和數(shù)據(jù)有效遷移已經(jīng)完成)。例如,當(dāng)數(shù)據(jù)遷移完成則將該數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。在一個實施例中,由于在將源設(shè)備導(dǎo)出到目標(biāo)設(shè)備后即可進(jìn)行應(yīng)用的切換過程,因而在步驟一之后,在目標(biāo)結(jié) 點遷移數(shù)據(jù)的過程中還包括步驟二’、將應(yīng)用從源結(jié)點切換到目標(biāo)結(jié)點。應(yīng)用切換的本質(zhì)是對應(yīng)用進(jìn)行一次停止一恢復(fù)操作,該操作中間有一段時間窗口,由于切換過程中源結(jié)點下層的存儲設(shè)備不能提供存儲服務(wù),因而存儲服務(wù)需要中斷。但是這個時間窗口是可控的,配合周邊的切換技術(shù)(例如通過周邊設(shè)備將應(yīng)用的數(shù)據(jù)請求掛起),可以做到存儲服務(wù)停止之后,在秒級的時間內(nèi)由目標(biāo)結(jié)點恢復(fù)該存儲服務(wù)。在一個實施例中,可以通過如下步驟實現(xiàn)應(yīng)用的切換a)先將應(yīng)用請求掛起;b)進(jìn)行應(yīng)用切換,將應(yīng)用從源結(jié)點切換到目標(biāo)結(jié)點;c)完成切換后再以由目標(biāo)結(jié)點重新處理該應(yīng)用請求的方式來實現(xiàn)對用戶透明的數(shù)據(jù)遷移。對應(yīng)用而言,遷移過程中該應(yīng)用并沒有中斷,只是出現(xiàn)了暫時的性能下降。在一個實施例中,可采用多路徑管理技術(shù)(multipath)實現(xiàn)路徑的切換、I/O流量的負(fù)載均衡等。先將應(yīng)用的數(shù)據(jù)請求掛起,待存儲服務(wù)恢復(fù)后再進(jìn)行處理。即延長應(yīng)用切換時數(shù)據(jù)請求的響應(yīng)時間,以換取業(yè)務(wù)的連續(xù)性。切換過程結(jié)束以后,對應(yīng)用來說,遷移已經(jīng)完成。此時目標(biāo)結(jié)點進(jìn)入生產(chǎn)流程,目標(biāo)結(jié)點的計算資源、網(wǎng)絡(luò)資源等可以直接為應(yīng)用服務(wù),從而得到了有效的利用。此后,應(yīng)用可以切斷與源結(jié)點的聯(lián)系而直接訪問目標(biāo)結(jié)點。在一個實施例中,步驟二’后還包括步驟三’、目標(biāo)結(jié)點根據(jù)應(yīng)用請求的數(shù)據(jù)的狀態(tài)來處理應(yīng)用請求,其中數(shù)據(jù)狀態(tài)包括數(shù)據(jù)無效、數(shù)據(jù)有效需要進(jìn)行遷移和數(shù)據(jù)有效遷移已經(jīng)完成。
在應(yīng)用切換后,由目標(biāo)結(jié)點來處理應(yīng)用的數(shù)據(jù)請求。目標(biāo)結(jié)點根據(jù)數(shù)據(jù)狀態(tài)對數(shù)據(jù)請求進(jìn)行處理。圖2中示出了根據(jù)本發(fā)明一個實施例的目標(biāo)結(jié)點對應(yīng)用請求進(jìn)行轉(zhuǎn)發(fā)的策略,包括如果該數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),意味著該數(shù)據(jù)已經(jīng)存在于目標(biāo)結(jié)點本地,則無論應(yīng)用請求的類型是讀還是寫都直接把請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備。如果該數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),意味著數(shù)據(jù)存在于源結(jié)點,而目標(biāo)結(jié)點本地沒有該數(shù)據(jù)。則對于讀請求來說,只能將該讀請求轉(zhuǎn)發(fā)到源設(shè)備從遠(yuǎn)程讀取,再將應(yīng)用請求的數(shù)據(jù)讀取到本地;對于寫請求來說,如果將寫請求轉(zhuǎn)發(fā)到源設(shè)備進(jìn)行覆蓋,然后在未來的某一時刻又遷移回目標(biāo)結(jié)點,這段路徑其實是從目標(biāo)結(jié)點到源結(jié)點后又返回目標(biāo)結(jié)點,形成了對網(wǎng)絡(luò)資源的浪費,基于這種考慮,可以直接把寫請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備進(jìn)行覆蓋,同時標(biāo)記該數(shù)據(jù)狀態(tài)為有效遷移已經(jīng)完成。如果該數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),意味著源存儲設(shè)備上并沒有對該數(shù)據(jù)塊進(jìn)行過寫操作,對于讀請求來說,按照標(biāo)準(zhǔn)塊設(shè)備的語義,這種讀取的結(jié)果是未知的,可以直接將該讀請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備讀取目標(biāo)結(jié)點底層設(shè)備上的數(shù)據(jù);對于寫請求來說,也轉(zhuǎn)發(fā)到目標(biāo)設(shè)備完成一次新寫,同時將該數(shù)據(jù)狀態(tài)修改為數(shù)據(jù)有效遷移已經(jīng)完成。對于寫請求來說,粒度對齊的大寫更容易處理。在一個實施例中,先對目標(biāo)結(jié)點的寫請求進(jìn)行聚合,全部以大寫的形式處理可以減少對網(wǎng)絡(luò)資源的浪費。因而,目標(biāo)結(jié)點需要將寫請求聚合成粒度對齊的大寫,再將大寫直接寫到目標(biāo)設(shè)備。在一個實施例中,將寫請求聚合成粒度對齊的大寫可以采用延遲一段時間的方法。在另一個實施例中,可以采用補齊讀方法實現(xiàn)聚合,即當(dāng)一個寫請求命中了一個數(shù)據(jù)塊的其中一部分,將該塊的剩余部分從目標(biāo)結(jié)點底層存儲設(shè)備中讀出,與寫請求命中的那一部分組成整個塊的數(shù)據(jù)一次寫到目標(biāo)設(shè)備中。如上文所述,在數(shù)據(jù)遷移的同時,可以保持應(yīng)用在線,應(yīng)用請求和遷移過程可同時進(jìn)行,因而需要對應(yīng)用請求和 遷移過程進(jìn)行并發(fā)控制,根據(jù)本發(fā)明一個實施例,可以采用并發(fā)的請求排隊的方法,將遷移過程和應(yīng)用請求串行處理,當(dāng)應(yīng)用請求命中正在進(jìn)行遷移的有效數(shù)據(jù)時,該應(yīng)用請求將進(jìn)行等待,直到該數(shù)據(jù)遷移完成后再處理,反之亦然。本領(lǐng)域技術(shù)人員應(yīng)理解,也可以采用其他方法,例如采用仲裁控制機(jī)制或者協(xié)同控制機(jī)制,來進(jìn)行應(yīng)用請求和數(shù)據(jù)遷移的并發(fā)控制。根據(jù)本發(fā)明一個實施例,對于分層的存儲設(shè)備可以實現(xiàn)靈活的遷移策略。例如,對于有緩存空間的存儲設(shè)備,可以將緩存空間中的數(shù)據(jù)和下層的原始數(shù)據(jù)分開進(jìn)行遷移。根據(jù)本發(fā)明的一個實施例,提供一種塊設(shè)備異步數(shù)據(jù)遷移系統(tǒng)。該系統(tǒng)包括遷移源結(jié)點部分(源結(jié)點)、遷移目標(biāo)結(jié)點部分(目標(biāo)結(jié)點)和應(yīng)用服務(wù)器。其中遷移源結(jié)點部分包括源設(shè)備(即源結(jié)點的存儲設(shè)備)和導(dǎo)出模塊;遷移目標(biāo)結(jié)點部分包括目標(biāo)設(shè)備(即目標(biāo)結(jié)點的存儲設(shè)備)、導(dǎo)入模塊、遷移模塊以及整流模塊;應(yīng)用服務(wù)器包括應(yīng)用切換模塊。圖3示出了該系統(tǒng)的架構(gòu)圖,其中應(yīng)用服務(wù)器通過網(wǎng)絡(luò)與源結(jié)點和目標(biāo)結(jié)點連接。一.源設(shè)備和目標(biāo)設(shè)備源設(shè)備是源結(jié)點的存儲設(shè)備,用于存儲源結(jié)點的數(shù)據(jù),這些數(shù)據(jù)中的有效數(shù)據(jù)將被遷移到目標(biāo)結(jié)點中的目標(biāo)設(shè)備。此外,源設(shè)備還維護(hù)記錄數(shù)據(jù)有效性信息的源結(jié)點元數(shù)據(jù)。
目標(biāo)設(shè)備是目標(biāo)結(jié)點的存儲設(shè)備,用于存儲從源設(shè)備遷移過來的有效數(shù)據(jù)。二.導(dǎo)出模塊和導(dǎo)入模塊源結(jié)點的導(dǎo)出模塊與目標(biāo)結(jié)點的導(dǎo)入模塊相配合,用于將源結(jié)點的源設(shè)備以標(biāo)準(zhǔn)塊設(shè)備的語義導(dǎo)出到目標(biāo)結(jié)點,這意味著目標(biāo)結(jié)點可以訪問源設(shè)備上的數(shù)據(jù)資源。在將源結(jié)點的源設(shè)備導(dǎo)出到目標(biāo)結(jié)點后,目標(biāo)結(jié)點可獲取源結(jié)點元數(shù)據(jù)信息。在一個實施例中,目標(biāo)結(jié)點可以例如通過設(shè)備級的ioctl (ioctl是一種獲得設(shè)備信息和向設(shè)備發(fā)送控制參數(shù)的手段)與源結(jié)點的底層設(shè)備進(jìn)行交互以獲取源設(shè)備上的數(shù)據(jù)有效性信息(指示有效數(shù)據(jù)和無效數(shù)據(jù)),以實現(xiàn)數(shù)據(jù)遷移的優(yōu)化。為源結(jié)點的底層設(shè)備提供了很大的靈活性底層設(shè)備可以決定哪些數(shù)據(jù)需要遷移,將這些數(shù)據(jù)通過ioctl命令提供給目標(biāo)結(jié)點,由目標(biāo)結(jié)點執(zhí)行遷移的過程(而對于不支持此ioctl命令的普通設(shè)備來說,將進(jìn)行全盤的數(shù)據(jù)遷移)。三.應(yīng)用切換模塊該模塊處于應(yīng)用服務(wù)器中,用于在源設(shè)備被導(dǎo)出到目標(biāo)結(jié)點后將應(yīng)用切換到目標(biāo)結(jié)點,包括將應(yīng)用請求掛起、進(jìn)行應(yīng)用切換,以及完成切換后再重新處理該應(yīng)用請求。四.遷移模塊目標(biāo)結(jié)點的遷移模塊用于將源設(shè)備中的有效數(shù)據(jù)遷移到目標(biāo)設(shè)備(即從源存儲設(shè)備讀取有效數(shù)據(jù)寫入到目標(biāo)設(shè)備相同的位置上),從而避免無效數(shù)據(jù)遷移而造成的資源浪費。在一個實施例中,首先在node結(jié)構(gòu)的源結(jié)點元數(shù)據(jù)集合中選取需要遷移的數(shù)據(jù)塊,然后從源設(shè)備讀取該數(shù)據(jù)塊,寫入到目標(biāo)設(shè)備,并更改數(shù)據(jù)塊的狀態(tài)為已經(jīng)完成遷移。在一個實例中,IT大小的源設(shè)備只存儲IM大小的數(shù)據(jù),且該存儲設(shè)備維護(hù)有關(guān)于數(shù)據(jù)有效性的元數(shù)據(jù),目標(biāo)結(jié)點可以通過和該存儲設(shè)備交互,實現(xiàn)只遷移這有效的IM數(shù)據(jù)。在一個實施例中, 遷移模塊還維護(hù)用于記錄數(shù)據(jù)的狀態(tài)的目標(biāo)結(jié)點元數(shù)據(jù),該目標(biāo)結(jié)點元數(shù)據(jù)用于標(biāo)記數(shù)據(jù)是否完成了遷移以及數(shù)據(jù)是否有效。目標(biāo)結(jié)點可以將源設(shè)備粒度化,例如,以位圖或hash的方式來組織元數(shù)據(jù)。根據(jù)本發(fā)明一個實施例,在遷移模塊采用node結(jié)構(gòu)(其中,node是一個內(nèi)存結(jié)構(gòu),用來描述遷移設(shè)備一個數(shù)據(jù)塊的信息,該node結(jié)構(gòu)可以表示數(shù)據(jù)塊的塊號,起始和結(jié)束扇區(qū)以及數(shù)據(jù)塊當(dāng)前的狀態(tài))來表示一個數(shù)據(jù)粒度的實施例中,每個數(shù)據(jù)塊標(biāo)記有三種狀態(tài)數(shù)據(jù)無效,數(shù)據(jù)有效需要進(jìn)行遷移和數(shù)據(jù)有效遷移已經(jīng)完成。遷移模塊通過該采用node結(jié)構(gòu)表示數(shù)據(jù)狀態(tài)的目標(biāo)結(jié)點元數(shù)據(jù)來處理應(yīng)用請求。在另一個實施例中,遷移模塊還用于轉(zhuǎn)發(fā)應(yīng)用的請求,對于到來的應(yīng)用請求,首先通過檢索遷移模塊維護(hù)的目標(biāo)結(jié)點元數(shù)據(jù)查找到請求的數(shù)據(jù)狀態(tài),然后根據(jù)數(shù)據(jù)狀態(tài)進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),則將所述應(yīng)用請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到源設(shè)備,再將該讀請求的數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成;如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備,對于寫請求來說,把該寫請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成,以完成處理應(yīng)用請求的語義。應(yīng)用請求和數(shù)據(jù)遷移過程可能形成對node結(jié)構(gòu)的元數(shù)據(jù)的并發(fā)訪問,因此需要對應(yīng)用請求和數(shù)據(jù)遷移進(jìn)行并發(fā)控制。在一個實施例中,遷移模塊采用排隊的方法,將遷移過程和應(yīng)用請求串行處理。當(dāng)應(yīng)用請求命中正在進(jìn)行遷移的數(shù)據(jù)塊時,應(yīng)用請求將進(jìn)行等待,遷移完成后再處理,反之亦然。應(yīng)理解,可以采用其他方法進(jìn)行應(yīng)用請求和數(shù)據(jù)遷移的并發(fā)控制,例如采用仲裁控制機(jī)制或者協(xié)同控制機(jī)制。五.整流模塊整流模塊是一個內(nèi)存級的緩存設(shè)備。整流模塊將到來的應(yīng)用請求進(jìn)行過濾,主要功能語義是對小寫請求進(jìn)行聚合,形成大寫。在一個實施例中,可同時采用延遲寫和補齊讀的方式,將小寫請求聚合成大寫,最后以粒度對齊的大寫請求轉(zhuǎn)發(fā)到遷移模塊。相比現(xiàn)有的異步數(shù)據(jù)遷移方法,本發(fā)明提供的塊設(shè)備異步數(shù)據(jù)遷移方法和系統(tǒng)對使用自動精簡配置的存儲設(shè)備做出優(yōu)化,通過和遷移結(jié)點進(jìn)行交互查詢存儲設(shè)備上的有效數(shù)據(jù)塊,做到只遷移有效數(shù)據(jù),避免無效數(shù)據(jù)的遷移對系統(tǒng)資源造成的浪費。除了可在數(shù)據(jù)遷移時保持應(yīng)用持續(xù)在線,還可以縮短業(yè)務(wù)層感知的遷移時間,且解決遷移的數(shù)據(jù)量過多、遷移時間長、成本高的問題。應(yīng)該注意到并理解,在不脫離后附的權(quán)利要求所要求的本發(fā)明的精神和范圍的情況下,能夠?qū)ι鲜鲈敿?xì)描述的本發(fā)明做出各種修改和改進(jìn)。因此,要求保護(hù)的技術(shù)方案的范圍不受所給出的任何特定示 范教導(dǎo)的限制。
權(quán)利要求
1.一種塊設(shè)備異步數(shù)據(jù)遷移方法,所述方法包括 步驟I)、將源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到目標(biāo)結(jié)點,并且所述目標(biāo)結(jié)點獲得所述源設(shè)備的數(shù)據(jù)有效性信息; 步驟2)、根據(jù)所述源設(shè)備的數(shù)據(jù)有效性信息將所述源設(shè)備上的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備,其中所述源設(shè)備的數(shù)據(jù)有效性信息用于指示所述源設(shè)備上的數(shù)據(jù)是有效數(shù)據(jù)或者是無效數(shù)據(jù),所述有效數(shù)據(jù)指應(yīng)用寫過的數(shù)據(jù),所述無效數(shù)據(jù)指應(yīng)用從未寫過的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,步驟2)中將所述源設(shè)備上的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備包括 步驟2-1)、將所述有效數(shù)據(jù)從所述源設(shè)備讀取到所述目標(biāo)結(jié)點; 步驟2-2)、將所述有效數(shù)據(jù)寫入所述目標(biāo)結(jié)點的目標(biāo)設(shè)備; 步驟2-3)、將所述有效數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。
3.根據(jù)權(quán)利要求1或2所述的方法,步驟2)中還包括 步驟a)、將應(yīng)用從所述源結(jié)點切換到所述目標(biāo)結(jié)點; 步驟b)、所述目標(biāo)結(jié)點根據(jù)所述數(shù)據(jù)有效性信息以及所請求的數(shù)據(jù)是否完成遷移來處理應(yīng)用請求。
4.根據(jù)權(quán)利要求3所述的方法,其中步驟a)包括 步驟a-1)、將應(yīng)用請求掛起; 步驟a-2)、將應(yīng)用從所述源結(jié)點切換到所述目標(biāo)結(jié)點; 步驟a-3)、重新處理所述應(yīng)用請求。
5.根據(jù)權(quán)利要求3或4所述的方法,其中步驟b)包括 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),將所述應(yīng)用請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備; 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述源設(shè)備,再將該讀請求的數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時將該應(yīng)用請求的數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成; 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時將該應(yīng)用請求的數(shù)據(jù)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。
6.根據(jù)權(quán)利要求5所述的方法,其中,將寫請求轉(zhuǎn)發(fā)到目標(biāo)設(shè)備進(jìn)行覆蓋包括 將所述寫請求聚合成粒度對齊的大寫; 再將所述大寫直接寫到目標(biāo)設(shè)備。
7.根據(jù)權(quán)利要求3或4所述的方法,步驟2)中還包括 步驟2-0)、當(dāng)應(yīng)用請求正在訪問要遷移的有效數(shù)據(jù)時,等待應(yīng)用請求完成后再進(jìn)行步驟 2-1); 步驟b)中還包括 當(dāng)應(yīng)用請求命中正在遷移的有效數(shù)據(jù)時,等待該有效數(shù)據(jù)遷移完成后再處理應(yīng)用請求。
8.一種塊設(shè)備異步數(shù)據(jù)遷移系統(tǒng),所述系統(tǒng)包括源結(jié)點和目標(biāo)結(jié)點,其中所述源結(jié)點包括 源設(shè)備,用于存儲源結(jié)點的數(shù)據(jù)且維護(hù)記錄數(shù)據(jù)有效性信息的源結(jié)點元數(shù)據(jù),和 導(dǎo)出模塊,用于與導(dǎo)入模塊配合將所述源設(shè)備以標(biāo)準(zhǔn)塊設(shè)備的語義導(dǎo)出到目標(biāo)結(jié)點; 所述目標(biāo)結(jié)點包括 目標(biāo)設(shè)備,用于存儲從所述源設(shè)備遷移過來的有效數(shù)據(jù), 導(dǎo)入模塊,用于與所述導(dǎo)出模塊配合將所述源設(shè)備以標(biāo)準(zhǔn)塊設(shè)備的語義導(dǎo)出到所述目標(biāo)結(jié)點,和 遷移模塊,用于將所述源設(shè)備中的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備且維護(hù)用于記錄數(shù)據(jù)狀態(tài)的目標(biāo)結(jié)點元數(shù)據(jù); 其中,通過所述導(dǎo)出模塊和所述導(dǎo)入模塊將所述源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到所述目標(biāo)結(jié)點形成所述目標(biāo)設(shè)備,所述目標(biāo)結(jié)點獲得所述源結(jié)點元數(shù)據(jù); 所述遷移模塊根據(jù)源結(jié)點元數(shù)據(jù)將所述源設(shè)備中的有效數(shù)據(jù)遷移至所述目標(biāo)設(shè)備。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述遷移模塊根據(jù)源結(jié)點元數(shù)據(jù)將所述源設(shè)備中的有效數(shù)據(jù)遷移至所述目標(biāo)設(shè)備包括將所述有效數(shù)據(jù)從所述源設(shè)備讀取到目標(biāo)結(jié)點;將所述有效數(shù)據(jù)寫入所述目標(biāo)設(shè)備;以及修改目標(biāo)結(jié)點元數(shù)據(jù)將所述有效數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。
10.根據(jù)權(quán)利要求8或9所述的系統(tǒng),其中所述系統(tǒng)還包括 應(yīng)用切換模塊,用于在所述源設(shè)備被導(dǎo)出到所述目標(biāo)結(jié)點后,將應(yīng)用切換到所述目標(biāo)結(jié)點。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述遷移模塊還用于通過檢索目標(biāo)結(jié)點元數(shù)據(jù)查找所請求的數(shù)據(jù)狀態(tài)來處理應(yīng)用請求 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效遷移已經(jīng)完成的狀態(tài),將所述應(yīng)用請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備; 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)有效需要進(jìn)行遷移的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述源設(shè)備,再將該讀請求的數(shù)據(jù)從源設(shè)備讀取到目標(biāo)結(jié)點;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成; 如果應(yīng)用請求的數(shù)據(jù)處于數(shù)據(jù)無效的狀態(tài),對于讀請求來說,將該讀請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備;對于寫請求來說,將該寫請求轉(zhuǎn)發(fā)到所述目標(biāo)設(shè)備進(jìn)行覆蓋,同時修改目標(biāo)結(jié)點元數(shù)據(jù)將該應(yīng)用請求的數(shù)據(jù)狀態(tài)標(biāo)記為數(shù)據(jù)有效遷移已經(jīng)完成。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括 整流模塊,用于對應(yīng)用的小寫請求進(jìn)行聚合,將小寫請求聚合成粒度對齊的大寫,再將所述大寫請求轉(zhuǎn)發(fā)到遷移模塊。
13.根據(jù)權(quán)利要求8或9所述的系統(tǒng),所述遷移模塊采用排隊的方法,將遷移過程和應(yīng)用請求串行進(jìn)行處理。
全文摘要
本發(fā)明提供一種塊設(shè)備異步數(shù)據(jù)遷移方法和系統(tǒng),所述方法包括1)將源設(shè)備通過網(wǎng)絡(luò)導(dǎo)出到目標(biāo)結(jié)點,并且所述目標(biāo)結(jié)點獲得所述源設(shè)備的數(shù)據(jù)有效性信息;2)根據(jù)所述源設(shè)備的數(shù)據(jù)有效性信息將所述源設(shè)備上的有效數(shù)據(jù)遷移到所述目標(biāo)設(shè)備,從而避免無效數(shù)據(jù)前已造成的資源浪費,節(jié)約了遷移成本。根據(jù)本發(fā)明的一個實施例,在將源設(shè)備導(dǎo)出到目標(biāo)結(jié)點后,可將應(yīng)用從源結(jié)點切換到目標(biāo)結(jié)點。在保證應(yīng)用持續(xù)在線的同時,縮短了業(yè)務(wù)層感知的遷移時間。
文檔編號H04L29/08GK103067506SQ201210585790
公開日2013年4月24日 申請日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者許魯, 劉昌 , 陳方縣 申請人:中國科學(xué)院計算技術(shù)研究所, 天津中科藍(lán)鯨信息技術(shù)有限公司