存儲備份技術(shù)研究論文

時間:2022-11-04 03:28:00

導(dǎo)語:存儲備份技術(shù)研究論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

存儲備份技術(shù)研究論文

摘要:隨著互聯(lián)網(wǎng)絡(luò)飛速發(fā)展,數(shù)據(jù)量呈現(xiàn)海量增長,單機(jī)存儲無法滿足需求,分布式存儲應(yīng)運(yùn)而生并且取得了較大的發(fā)展。系統(tǒng)中的數(shù)據(jù)由于自然災(zāi)害、異常故障等原因會遭到破壞,因而需要對數(shù)據(jù)進(jìn)行備份加以保護(hù)。以基于分布式文件服務(wù)器的存儲備選份恢復(fù)系統(tǒng)為研究對象,探討了分布式存儲下海量數(shù)據(jù)備份恢復(fù)的關(guān)鍵問題:存儲備份恢復(fù)的高效性、一致性和可靠性。

關(guān)鍵詞:備份;存儲;分布式;P2P;技術(shù)

1存儲與備份技術(shù)的高效性

1.1高性能多源下載過程

(1)服務(wù)器根據(jù)相關(guān)信息返回存儲需要下載文件的Slave的具體信息;(2)根據(jù)文件大小和Slave的負(fù)載狀態(tài),選擇合適的Slave建立socket連接對文件進(jìn)行分塊下載;(3)下載完成后把各個文件塊合并成為原始文件。

1.2靜態(tài)下載

在靜態(tài)下載中,不考慮備份文件的大小,服務(wù)器的負(fù)荷量,采取統(tǒng)一的模型進(jìn)行下載。算法如下:(1)得到備份文件所在服務(wù)器的個數(shù)n,以及每個服務(wù)器的IP地址和端口號;(2)得到文件的總大小size,按照文件分割算法,把文件分割為n塊;(3)與每個服務(wù)器建立連接,從每個服務(wù)器上下載一塊文件;(4)下載完成后,把所有文件塊合并成一個完整的文件,存儲在備份介質(zhì)上;(5)保存?zhèn)浞菸募南嚓P(guān)元數(shù)據(jù)信息;(6)文件下載、備份完成。

1.3動態(tài)下載

在動態(tài)下載模型中,要綜合考慮各方面因素,動態(tài)決定文件是否分塊進(jìn)行多源下載,以及文件塊的大小,提高系統(tǒng)資源利用率,進(jìn)而提高備份效率。對于沒有冗余的文件,只能從一個節(jié)點(diǎn)上下載。對于較小的文件,使用單線程下載;對于較大的文件,可以采用多線程下載。對于有多個冗余的文件,可以動態(tài)選取從負(fù)荷量較低的節(jié)點(diǎn)進(jìn)行下載。偽算法表示如下:

首先定義如下變量:文件大小閥值Tl,當(dāng)文件大小大于Tl時采用多源下載;節(jié)點(diǎn)標(biāo)準(zhǔn)負(fù)荷T2,若節(jié)點(diǎn)負(fù)荷大于T2,則節(jié)點(diǎn)處于重負(fù)荷狀態(tài);文件大小size文件冗余數(shù)n。

算法表示如下:

if(文件沒有冗余)

{

無須分塊下載,可以采用多線程從存儲文件的節(jié)點(diǎn)上下載文件;

}

else{

if(文件大小size<閥值T1)

{

無須多源下載,從存儲文件的節(jié)點(diǎn)中選取負(fù)荷最小的節(jié)點(diǎn),下載文件;

}

elsel

得到存儲文件的n個節(jié)點(diǎn)的信息;

從n個節(jié)點(diǎn)上選擇負(fù)荷小于閥值T2的節(jié)點(diǎn),節(jié)點(diǎn)數(shù)目為m;

利用文件分割算法把文件分割為m塊;

與選中的m個節(jié)點(diǎn)建立連接,從每個節(jié)點(diǎn)上下載一個文件塊;

下載完成后,把m個文件塊合并成為完整的文件;

把文件存儲在備份介質(zhì);

}

}

2存儲與備份技術(shù)的一致性

2.1鎖和快照技術(shù)

鎖就是當(dāng)進(jìn)行數(shù)據(jù)備份時,對需要備份的數(shù)據(jù)加鎖,此時禁止對數(shù)據(jù)進(jìn)行修改。由于備份時禁止對數(shù)據(jù)的修改,鎖技術(shù)對數(shù)據(jù)的可用性會造成一定的影響,會影響到系統(tǒng)的效率。快照就是在相當(dāng)短的時間內(nèi)生成原存儲系統(tǒng)的瞬時映像,該映像生成之后,備份就可以根據(jù)該映像來進(jìn)行,而不用擔(dān)心數(shù)據(jù)的不一致性??煺占夹g(shù)的實(shí)現(xiàn)有兩種方式:更新復(fù)制方式和Split-mirror方式。更新復(fù)制技術(shù)就是當(dāng)進(jìn)行快照時,并不立刻復(fù)制數(shù)據(jù),只有當(dāng)數(shù)據(jù)發(fā)生變化時才進(jìn)行復(fù)制。Split-mirror是使用和主存儲系統(tǒng)一樣的快照存儲系統(tǒng),數(shù)據(jù)同時保存在主存儲系統(tǒng)和快照系統(tǒng),此時快照系統(tǒng)就可作為備份數(shù)據(jù)。

2.2在線備份

在分布式文件訪問平臺中,存在著海量的文件,文件的信息較多,若把文件的信息逐個復(fù)制則要浪費(fèi)大量的時間、空間,對系統(tǒng)的可訪問性造成影響。WAFL文件系統(tǒng)使用了更新復(fù)制技術(shù)。當(dāng)創(chuàng)建系統(tǒng)快照時,并不立刻復(fù)制所有文件信息,而是創(chuàng)建新的快照根節(jié)點(diǎn),它與原文件系統(tǒng)根節(jié)點(diǎn)有相同的信息,文件系統(tǒng)中根節(jié)點(diǎn)的子節(jié)點(diǎn)也為快照根節(jié)點(diǎn)的子節(jié)點(diǎn)。此時以快照根節(jié)點(diǎn)為根節(jié)點(diǎn)生成了一棵快照樹,它和原文件系統(tǒng)樹除了根節(jié)點(diǎn)以外,其余部分相同。當(dāng)文件信息需要修改時,創(chuàng)建新的節(jié)點(diǎn),把文件信息賦給此節(jié)點(diǎn),并把節(jié)點(diǎn)作為快照節(jié)點(diǎn)插入快照樹中,同時修改原節(jié)點(diǎn)的信息,具體分為以下情況:

(1)修改文件信息:當(dāng)對文件的基本信息進(jìn)行修改時,如更改文件名稱等,此種情況下比較簡單,偽算法如下:if修改文件)

{

創(chuàng)建新的節(jié)點(diǎn)作為快照節(jié)點(diǎn);

把原節(jié)點(diǎn)的信息復(fù)制到快照節(jié)點(diǎn);

把快照樹中指向原節(jié)點(diǎn)的指針指向快照節(jié)點(diǎn);

快照節(jié)點(diǎn)兒子節(jié)點(diǎn)的指針指向原節(jié)點(diǎn)的兒子節(jié)點(diǎn);

修改原節(jié)點(diǎn)的信息;

}

修改文件信息具體過程如圖3:

(2)移動文件:當(dāng)把文件或者目錄從一個目錄移動到另外一個目錄下時,具體偽算法如下:

if移動文件)

{

創(chuàng)建新的快照節(jié)點(diǎn);

把原節(jié)點(diǎn)的信息復(fù)制到快照節(jié)點(diǎn);

復(fù)制原父目錄的信息,添加到快照樹中;

把快照樹中指向原節(jié)點(diǎn)的指針指向快照節(jié)點(diǎn);

快照節(jié)點(diǎn)兒子節(jié)點(diǎn)的指針指向原節(jié)點(diǎn)的兒子節(jié)點(diǎn);

復(fù)制新父目錄的信息,修改子節(jié)點(diǎn),添加到快照樹中;

修改原節(jié)點(diǎn)的信息,把原節(jié)點(diǎn)移動到新的目錄下;

}

移動文件過程如圖4所示:

(3)新建文件:當(dāng)新建文件時,具體偽算法如下:

if(新建文件)

{

創(chuàng)建新的節(jié)點(diǎn),并給節(jié)點(diǎn)賦予相應(yīng)的文件信息;

在文件系統(tǒng)樹中找到節(jié)點(diǎn)的父目錄;

if(若父目錄己經(jīng)創(chuàng)建了副本),

{

把創(chuàng)建的節(jié)點(diǎn)插在文件系統(tǒng)樹中父目錄節(jié)點(diǎn)下;

}

else{

父目錄創(chuàng)建副本;

副本賦予相應(yīng)的信息;

父目錄副本兒子節(jié)點(diǎn)即為父目錄的兒子節(jié)點(diǎn);

快照樹中指向原來父目錄的指針指向副本;

新建節(jié)點(diǎn)插在文件系統(tǒng)樹中父目錄節(jié)點(diǎn)下;

}

}

新建文件過程如圖5所示:

2.3備份的實(shí)現(xiàn)

在創(chuàng)建好快照樹之后,就可以進(jìn)行在線備份??煺諛浔4娴男畔⒕褪情_始備份瞬間所有文件的信息,進(jìn)行在線備份時,首先從快照樹的根節(jié)點(diǎn)開始,逐個訪問節(jié)點(diǎn),按順序?qū)煺諛溥M(jìn)行遍歷、備份,保證了數(shù)據(jù)的一致性,并且可以在備份的同時允許對數(shù)據(jù)進(jìn)行修改,不影響用戶的訪問。

3存儲與備份的可靠性

在分布式系統(tǒng)中存儲著海量的數(shù)據(jù),數(shù)據(jù)量大,備份的時間較長,在備份的過程中可能會出現(xiàn)錯誤情況或者發(fā)生意外的中斷。因此備份過程中需要隨時記錄備份的進(jìn)度,這樣在備份發(fā)生錯誤或者異常時,下次備份能夠在上次備份的出錯點(diǎn)繼續(xù)進(jìn)行,實(shí)行斷點(diǎn)備份,而不用重新開始備份。斷點(diǎn)備份過程中,使用日志表來記錄備份過程,把每次備份的信息寫入日志表。日志表如表1:

3.1偽算法

if(日志表為空)

{

無須查找斷點(diǎn)位置,直接開始備份,備份時把每一個文件的備份信息添加

到日志表;

}

else{

while(日志表尚未查找完畢)

{

對于表中每一項,查找此項對應(yīng)文件在樹中的具體位置;

if(此文件尚未備份完成)

記錄此文件,即為斷點(diǎn)位置;

}

當(dāng)日志表查找完成后,即可得到未備份完成的文件;

從斷點(diǎn)位置開始繼續(xù)備份,并把文件備份信息添加到日志表;

}

本次備份完成后把日志表清空

名稱定義

ID文件獨(dú)一無二的ID

TYPE備份類型,可以是完全備份、增量備份、差量備份

STARY_TIME開始備份時間

FINISHED是否完成

ISFOLDER是否為文件夾

PARENTID文件父節(jié)點(diǎn)ID

3.2算法復(fù)雜度

若日志表中的記錄個數(shù)為K,文件總數(shù)為N。則對于每一個記錄項,要查找其在文件樹中的位置,當(dāng)前一個記錄項查找到時,由于遍歷的順序性,后一個記錄項可以從前一個的位置繼續(xù)向后查找,這樣,可以保證K個記錄項查找次數(shù)為K,也即為O(n)。當(dāng)備份發(fā)生錯誤或者中斷時,通過此算法,能夠在相當(dāng)少的時間內(nèi),找到斷點(diǎn)位置,下一次備份時可以直接從斷點(diǎn)位置繼續(xù)進(jìn)行,實(shí)現(xiàn)斷點(diǎn)備份,保證了備份的可靠性。

參考文獻(xiàn)

[1]牛云,徐慶.數(shù)據(jù)備份與災(zāi)難恢復(fù)[M].北京:機(jī)械工業(yè)出版社,2007.

[2]張聯(lián)峰,劉乃安,張玉清.P2P技術(shù)[J].計算機(jī)工程與應(yīng)用,2007,(12).

[3]劉天時,趙正.一種通用數(shù)據(jù)庫數(shù)據(jù)整理方法[J].計算機(jī)工程,2007,(2).

[4]韓德志,謝長生,李懷陽.存儲備份技術(shù)探析[J].計算機(jī)應(yīng)用研究,2006,(5).

[5]謝川.數(shù)據(jù)備份技術(shù)的初探[J].中國科技信息,2006,(12).