存儲(chǔ)備份技術(shù)研究論文
時(shí)間:2022-11-04 03:28:00
導(dǎo)語(yǔ):存儲(chǔ)備份技術(shù)研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:隨著互聯(lián)網(wǎng)絡(luò)飛速發(fā)展,數(shù)據(jù)量呈現(xiàn)海量增長(zhǎng),單機(jī)存儲(chǔ)無(wú)法滿足需求,分布式存儲(chǔ)應(yīng)運(yùn)而生并且取得了較大的發(fā)展。系統(tǒng)中的數(shù)據(jù)由于自然災(zāi)害、異常故障等原因會(huì)遭到破壞,因而需要對(duì)數(shù)據(jù)進(jìn)行備份加以保護(hù)。以基于分布式文件服務(wù)器的存儲(chǔ)備選份恢復(fù)系統(tǒng)為研究對(duì)象,探討了分布式存儲(chǔ)下海量數(shù)據(jù)備份恢復(fù)的關(guān)鍵問(wèn)題:存儲(chǔ)備份恢復(fù)的高效性、一致性和可靠性。
關(guān)鍵詞:備份;存儲(chǔ);分布式;P2P;技術(shù)
1存儲(chǔ)與備份技術(shù)的高效性
1.1高性能多源下載過(guò)程
(1)服務(wù)器根據(jù)相關(guān)信息返回存儲(chǔ)需要下載文件的Slave的具體信息;(2)根據(jù)文件大小和Slave的負(fù)載狀態(tài),選擇合適的Slave建立socket連接對(duì)文件進(jìn)行分塊下載;(3)下載完成后把各個(gè)文件塊合并成為原始文件。
1.2靜態(tài)下載
在靜態(tài)下載中,不考慮備份文件的大小,服務(wù)器的負(fù)荷量,采取統(tǒng)一的模型進(jìn)行下載。算法如下:(1)得到備份文件所在服務(wù)器的個(gè)數(shù)n,以及每個(gè)服務(wù)器的IP地址和端口號(hào);(2)得到文件的總大小size,按照文件分割算法,把文件分割為n塊;(3)與每個(gè)服務(wù)器建立連接,從每個(gè)服務(wù)器上下載一塊文件;(4)下載完成后,把所有文件塊合并成一個(gè)完整的文件,存儲(chǔ)在備份介質(zhì)上;(5)保存?zhèn)浞菸募南嚓P(guān)元數(shù)據(jù)信息;(6)文件下載、備份完成。
1.3動(dòng)態(tài)下載
在動(dòng)態(tài)下載模型中,要綜合考慮各方面因素,動(dòng)態(tài)決定文件是否分塊進(jìn)行多源下載,以及文件塊的大小,提高系統(tǒng)資源利用率,進(jìn)而提高備份效率。對(duì)于沒(méi)有冗余的文件,只能從一個(gè)節(jié)點(diǎn)上下載。對(duì)于較小的文件,使用單線程下載;對(duì)于較大的文件,可以采用多線程下載。對(duì)于有多個(gè)冗余的文件,可以動(dòng)態(tài)選取從負(fù)荷量較低的節(jié)點(diǎn)進(jìn)行下載。偽算法表示如下:
首先定義如下變量:文件大小閥值Tl,當(dāng)文件大小大于Tl時(shí)采用多源下載;節(jié)點(diǎn)標(biāo)準(zhǔn)負(fù)荷T2,若節(jié)點(diǎn)負(fù)荷大于T2,則節(jié)點(diǎn)處于重負(fù)荷狀態(tài);文件大小size文件冗余數(shù)n。
算法表示如下:
if(文件沒(méi)有冗余)
{
無(wú)須分塊下載,可以采用多線程從存儲(chǔ)文件的節(jié)點(diǎn)上下載文件;
}
else{
if(文件大小size<閥值T1)
{
無(wú)須多源下載,從存儲(chǔ)文件的節(jié)點(diǎn)中選取負(fù)荷最小的節(jié)點(diǎn),下載文件;
}
elsel
得到存儲(chǔ)文件的n個(gè)節(jié)點(diǎn)的信息;
從n個(gè)節(jié)點(diǎn)上選擇負(fù)荷小于閥值T2的節(jié)點(diǎn),節(jié)點(diǎn)數(shù)目為m;
利用文件分割算法把文件分割為m塊;
與選中的m個(gè)節(jié)點(diǎn)建立連接,從每個(gè)節(jié)點(diǎn)上下載一個(gè)文件塊;
下載完成后,把m個(gè)文件塊合并成為完整的文件;
把文件存儲(chǔ)在備份介質(zhì);
}
}
2存儲(chǔ)與備份技術(shù)的一致性
2.1鎖和快照技術(shù)
鎖就是當(dāng)進(jìn)行數(shù)據(jù)備份時(shí),對(duì)需要備份的數(shù)據(jù)加鎖,此時(shí)禁止對(duì)數(shù)據(jù)進(jìn)行修改。由于備份時(shí)禁止對(duì)數(shù)據(jù)的修改,鎖技術(shù)對(duì)數(shù)據(jù)的可用性會(huì)造成一定的影響,會(huì)影響到系統(tǒng)的效率??煺站褪窃谙喈?dāng)短的時(shí)間內(nèi)生成原存儲(chǔ)系統(tǒng)的瞬時(shí)映像,該映像生成之后,備份就可以根據(jù)該映像來(lái)進(jìn)行,而不用擔(dān)心數(shù)據(jù)的不一致性。快照技術(shù)的實(shí)現(xiàn)有兩種方式:更新復(fù)制方式和Split-mirror方式。更新復(fù)制技術(shù)就是當(dāng)進(jìn)行快照時(shí),并不立刻復(fù)制數(shù)據(jù),只有當(dāng)數(shù)據(jù)發(fā)生變化時(shí)才進(jìn)行復(fù)制。Split-mirror是使用和主存儲(chǔ)系統(tǒng)一樣的快照存儲(chǔ)系統(tǒng),數(shù)據(jù)同時(shí)保存在主存儲(chǔ)系統(tǒng)和快照系統(tǒng),此時(shí)快照系統(tǒng)就可作為備份數(shù)據(jù)。
2.2在線備份
在分布式文件訪問(wèn)平臺(tái)中,存在著海量的文件,文件的信息較多,若把文件的信息逐個(gè)復(fù)制則要浪費(fèi)大量的時(shí)間、空間,對(duì)系統(tǒng)的可訪問(wèn)性造成影響。WAFL文件系統(tǒng)使用了更新復(fù)制技術(shù)。當(dāng)創(chuàng)建系統(tǒng)快照時(shí),并不立刻復(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)。此時(shí)以快照根節(jié)點(diǎn)為根節(jié)點(diǎn)生成了一棵快照樹,它和原文件系統(tǒng)樹除了根節(jié)點(diǎn)以外,其余部分相同。當(dāng)文件信息需要修改時(shí),創(chuàng)建新的節(jié)點(diǎn),把文件信息賦給此節(jié)點(diǎn),并把節(jié)點(diǎn)作為快照節(jié)點(diǎn)插入快照樹中,同時(shí)修改原節(jié)點(diǎn)的信息,具體分為以下情況:
(1)修改文件信息:當(dāng)對(duì)文件的基本信息進(jìn)行修改時(shí),如更改文件名稱等,此種情況下比較簡(jiǎ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)的信息;
}
修改文件信息具體過(guò)程如圖3:
(2)移動(dòng)文件:當(dāng)把文件或者目錄從一個(gè)目錄移動(dòng)到另外一個(gè)目錄下時(shí),具體偽算法如下:
if移動(dòng)文件)
{
創(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)移動(dòng)到新的目錄下;
}
移動(dòng)文件過(guò)程如圖4所示:
(3)新建文件:當(dāng)新建文件時(shí),具體偽算法如下:
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);
快照樹中指向原來(lái)父目錄的指針指向副本;
新建節(jié)點(diǎn)插在文件系統(tǒng)樹中父目錄節(jié)點(diǎn)下;
}
}
新建文件過(guò)程如圖5所示:
2.3備份的實(shí)現(xiàn)
在創(chuàng)建好快照樹之后,就可以進(jìn)行在線備份??煺諛浔4娴男畔⒕褪情_始備份瞬間所有文件的信息,進(jìn)行在線備份時(shí),首先從快照樹的根節(jié)點(diǎn)開始,逐個(gè)訪問(wèn)節(jié)點(diǎn),按順序?qū)煺諛溥M(jìn)行遍歷、備份,保證了數(shù)據(jù)的一致性,并且可以在備份的同時(shí)允許對(duì)數(shù)據(jù)進(jìn)行修改,不影響用戶的訪問(wèn)。
3存儲(chǔ)與備份的可靠性
在分布式系統(tǒng)中存儲(chǔ)著海量的數(shù)據(jù),數(shù)據(jù)量大,備份的時(shí)間較長(zhǎng),在備份的過(guò)程中可能會(huì)出現(xiàn)錯(cuò)誤情況或者發(fā)生意外的中斷。因此備份過(guò)程中需要隨時(shí)記錄備份的進(jìn)度,這樣在備份發(fā)生錯(cuò)誤或者異常時(shí),下次備份能夠在上次備份的出錯(cuò)點(diǎn)繼續(xù)進(jìn)行,實(shí)行斷點(diǎn)備份,而不用重新開始備份。斷點(diǎn)備份過(guò)程中,使用日志表來(lái)記錄備份過(guò)程,把每次備份的信息寫入日志表。日志表如表1:
3.1偽算法
if(日志表為空)
{
無(wú)須查找斷點(diǎn)位置,直接開始備份,備份時(shí)把每一個(gè)文件的備份信息添加
到日志表;
}
else{
while(日志表尚未查找完畢)
{
對(duì)于表中每一項(xiàng),查找此項(xiàng)對(duì)應(yīng)文件在樹中的具體位置;
if(此文件尚未備份完成)
記錄此文件,即為斷點(diǎn)位置;
}
當(dāng)日志表查找完成后,即可得到未備份完成的文件;
從斷點(diǎn)位置開始繼續(xù)備份,并把文件備份信息添加到日志表;
}
本次備份完成后把日志表清空
名稱定義
ID文件獨(dú)一無(wú)二的ID
TYPE備份類型,可以是完全備份、增量備份、差量備份
STARY_TIME開始備份時(shí)間
FINISHED是否完成
ISFOLDER是否為文件夾
PARENTID文件父節(jié)點(diǎn)ID
3.2算法復(fù)雜度
若日志表中的記錄個(gè)數(shù)為K,文件總數(shù)為N。則對(duì)于每一個(gè)記錄項(xiàng),要查找其在文件樹中的位置,當(dāng)前一個(gè)記錄項(xiàng)查找到時(shí),由于遍歷的順序性,后一個(gè)記錄項(xiàng)可以從前一個(gè)的位置繼續(xù)向后查找,這樣,可以保證K個(gè)記錄項(xiàng)查找次數(shù)為K,也即為O(n)。當(dāng)備份發(fā)生錯(cuò)誤或者中斷時(shí),通過(guò)此算法,能夠在相當(dāng)少的時(shí)間內(nèi),找到斷點(diǎn)位置,下一次備份時(shí)可以直接從斷點(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ì)算機(jī)工程與應(yīng)用,2007,(12).
[3]劉天時(shí),趙正.一種通用數(shù)據(jù)庫(kù)數(shù)據(jù)整理方法[J].計(jì)算機(jī)工程,2007,(2).
[4]韓德志,謝長(zhǎng)生,李懷陽(yáng).存儲(chǔ)備份技術(shù)探析[J].計(jì)算機(jī)應(yīng)用研究,2006,(5).
[5]謝川.數(shù)據(jù)備份技術(shù)的初探[J].中國(guó)科技信息,2006,(12).