[點晴永久免費OA]了解服務(wù)器存儲快照原理:選擇最優(yōu)的備份方案
1. 什么是快照 SNIA(存儲網(wǎng)絡(luò)行業(yè)協(xié)會)對快照(Snapshot)的定義是:關(guān)于指定數(shù)據(jù)集合的一個完全可用拷貝,該拷貝包括相應(yīng)數(shù)據(jù)在某個時間點(拷貝開始的時間點)的映像??煺湛梢允瞧渌硎镜臄?shù)據(jù)的一個副本也可以是數(shù)據(jù)的一個復(fù)制品。 快照的價值有以下三點: 快速備份/恢復(fù):快照可迅速生成,并可用作傳統(tǒng)備份和歸檔的數(shù)據(jù)源,縮小甚至消除了數(shù)據(jù)備份窗口,快照存儲在磁盤上,可以快速直接存取,大大提高數(shù)據(jù)恢復(fù)的速度。 保存多個恢復(fù)點目標:基于磁盤的快照使存儲設(shè)備有靈活和頻繁的恢復(fù)點,可以快速通過不同時間點的快照恢復(fù)數(shù)據(jù)。 重新定義數(shù)據(jù)用途:快照提供一份接近實況數(shù)據(jù)的拷貝,可供測試、歸檔、查詢使用,既保護生產(chǎn)系統(tǒng)又賦予備份數(shù)據(jù)新的用途。 根據(jù)實現(xiàn)方式的不同,最常用快照可以分成兩類: 寫時復(fù)制(COW:Copy On Write); 寫時重定向(ROW:Redirect On Write)。 2. 圖解COW技術(shù) 在做快照前,服務(wù)器往存儲設(shè)備寫入數(shù)據(jù)將直接覆蓋原來數(shù)據(jù)塊,如下圖所示,數(shù)據(jù)'p’寫入數(shù)據(jù)塊1中,將覆蓋原有數(shù)據(jù)'b’。 創(chuàng)建快照時,COW 快照需要消耗一些存儲空間建立快照卷。當我們?yōu)橐粋€數(shù)據(jù)卷創(chuàng)建一個快照之后這些預(yù)留的空間用來存放被變化數(shù)據(jù)更新的舊數(shù)據(jù)。COW快照在初始化的過程中僅僅創(chuàng)建用來描述源數(shù)據(jù)塊位置的指針信息(元數(shù)據(jù)),而不是完整的將源數(shù)據(jù)塊拷貝過來。因此初始化的過程幾乎可以在瞬間完成,對系統(tǒng)的影響也很小。 COW 快照會跟蹤數(shù)據(jù)卷的寫操作和數(shù)據(jù)塊變化。當某個數(shù)據(jù)塊發(fā)生改變時,在將舊的數(shù)據(jù)覆蓋之前,首先將該塊的舊數(shù)據(jù)復(fù)制到預(yù)留的快照卷,該步驟僅在數(shù)據(jù)卷相應(yīng)數(shù)據(jù)塊位置發(fā)生第一次寫操作請求時進行。這個處理過程確??煺粘鰜淼臄?shù)據(jù)與發(fā)起快照的那個精確時間點保持完全一致。 需要注意的是,根據(jù)COW的機制,快照創(chuàng)建以后,如果有對原卷的數(shù)據(jù)修改,修改的數(shù)據(jù)第一次被修改的時候就把數(shù)據(jù)COPY到快照卷里。如下圖所示若塊6內(nèi)容再發(fā)生變化就不會被保存,因為它們所位置的數(shù)據(jù)已經(jīng)不是第一次改變。這樣做是為了保證恢復(fù)數(shù)據(jù)時能夠恢復(fù)到啟用快照時的數(shù)據(jù)狀態(tài)(即源數(shù)據(jù)卷對應(yīng)位置是數(shù)據(jù)塊6內(nèi)容是'g'時的狀態(tài))。 如果需要訪問某個時間點的快照數(shù)據(jù)時將組合索引/日志和源卷,對沒有改變過的塊直接從數(shù)據(jù)卷讀取,對已經(jīng)改變并被復(fù)制的塊則從快照空間讀取。從快照被創(chuàng)建那一刻開始,每個快照都會跟蹤記錄描述塊改變的元數(shù)據(jù)信息。 如果要恢復(fù)上一次快照點的數(shù)據(jù),如下圖所示將讀取源卷上的數(shù)據(jù)'apcdefhi’和快照卷上的數(shù)據(jù)'g'組合成'apcdefghi'數(shù)據(jù)。由于塊1上的數(shù)據(jù)是'b’是在快照前改寫成'p’的,所以無法恢復(fù)。 3. 圖解ROW技術(shù) 在做快照前,服務(wù)器往存儲設(shè)備寫入數(shù)據(jù)將直接覆蓋原來數(shù)據(jù)塊,如下圖所示,數(shù)據(jù)'p'寫入數(shù)據(jù)塊1中,將覆蓋原有數(shù)據(jù)'b'。 創(chuàng)建快照時,ROW 快照需要消耗一些存儲空間建立快照卷。當為一個數(shù)據(jù)卷創(chuàng)建一個快照之后,這些預(yù)留的空間用來存放新寫入的數(shù)據(jù)。 ROW 快照對于原始數(shù)據(jù)卷的首次寫操作將被重定向到預(yù)留的快照空間。該快照維持的是指向所有源數(shù)據(jù)的指針和拷貝數(shù)據(jù)。當數(shù)據(jù)被重寫時,將會給更新過的數(shù)據(jù)選擇一個新的位置,同時指向該數(shù)據(jù)的指針也被重新映射,指向更新后的數(shù)據(jù)。如果拷貝是只讀的,那么指向該數(shù)據(jù)的指針就根本不會被修改。 如下圖所示新數(shù)據(jù)'z’替換'g’,源卷塊6中的'g’不變,新數(shù)據(jù)'z’直接寫入到快照空間中。 需要恢復(fù)某個時間點的快照數(shù)據(jù)時,只需讀取源卷數(shù)據(jù)即可。如下圖所示將讀取原卷上的數(shù)據(jù)'apcdefghi’。由于塊1上的數(shù)據(jù)是'b’是在快照前改寫成'p’的,所以無法恢復(fù)。 4. 對比分析 “ROW 重定向?qū)憽迸c“COW 復(fù)制寫”是相對的概念,ROW可以避免兩次寫操作引起的性能損失。ROW 同COW一樣在空間利用方面效率非常高。ROW把對數(shù)據(jù)卷的寫請求重定向給了快照預(yù)留的存儲空間,而寫操作的重定向設(shè)計則把需要兩次寫才能完成的操作減少為一次寫。COW的兩次寫操作包括將舊數(shù)據(jù)寫入快照卷和在數(shù)據(jù)卷寫入新數(shù)據(jù)。而ROW只有寫入新數(shù)據(jù)一步。 COW最大的問題是對寫性能有影響。第一次修改原卷,需要復(fù)制數(shù)據(jù),因此需要多一次讀寫的數(shù)據(jù)塊遷移過程。這會造成應(yīng)用需要等待較長時間。但原卷數(shù)據(jù)的布局沒有任何改變,因此對讀性能沒有任何影響。 ROW 最大的問題是對讀性能影響比較大。ROW寫的時候性能基本沒有損耗,只是修改指針,實現(xiàn)效率很高。但多次讀寫后,原卷的數(shù)據(jù)就分散到各個地方,對于連續(xù)讀寫的性能不如COW。 5. 總結(jié) 兩種快照都有優(yōu)劣,需要根據(jù)自身業(yè)務(wù)情況選擇最優(yōu)的方案。 該文章在 2024/7/16 12:32:06 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |