Snapshot 技術(shù)從根本上改變了對數(shù)據(jù)的備份/恢復(fù)、歸檔的操作方式。
備份數(shù)據(jù)可以保護由于用戶誤操作或者硬件故障造成數(shù)據(jù)丟失,對數(shù)據(jù)歸檔(archiving data )可以生成完整的具有一致性的數(shù)據(jù)集合的副本,用于將數(shù)據(jù)恢復(fù)在線到將來的某一個時間。備份保護免于故障,歸檔可以使業(yè)務(wù)暫停并恢復(fù)工作(可以在另外的地點)。
從backup 的數(shù)據(jù)中經(jīng)常會只需恢復(fù)某個文件或某個目錄,而不必進行整個文件系統(tǒng)的恢復(fù)。 而歸檔archive 往往要完整地進行恢復(fù)。容災(zāi) Disaster recovery (DR) 和備份和歸檔的特點類似,用于防止故障,更強調(diào)災(zāi)害、整個建筑災(zāi)難的情況。類似歸檔,DR 的數(shù)據(jù)必須具有一致性,使作業(yè)可以在容災(zāi)點繼續(xù)。
對數(shù)據(jù)備份可以包括對項目的歸檔,在另一地的項目歸檔可以用于從災(zāi)難恢復(fù)。
備份和歸檔最重要的問題是速度。當(dāng)把大量數(shù)據(jù)備份到磁帶或者其他的介質(zhì)時,由于數(shù)據(jù)量很大,備份本身就對系統(tǒng)產(chǎn)生了很大的工作負荷,使得系統(tǒng)性能下降,備份必須盡快完成以避免對用戶產(chǎn)生影響。所以備份工作一般在下班時間,對于24×7 的環(huán)境,則沒有下班時間,“BACKUP WINDOW”越來越小。
對備份速度的主要限制是由于磁帶機的速度,現(xiàn)代磁帶機的速度一般每秒幾兆字節(jié),幾百GB 的數(shù)據(jù)就需要多臺高速磁帶機并行處理。數(shù)據(jù)的一致性是另一個問題,為防止正在備份的文件被修改,簡單的備份程序會鎖定文件處于不可寫狀態(tài),而這只能通過offline或single user mode 進行。
備份程序雖然試圖解決在線備份的問題,但是用戶仍然面臨數(shù)據(jù)完整和一致性的問題,備份無法保證是可以恢復(fù)的。
NetApp 的Snapshot, SnapMirror 和 SnapRestore™提供給系統(tǒng)管理員有力的解決這些問題的工具。
常常因為用戶錯誤而進行恢復(fù),用戶經(jīng)常意外刪除、覆蓋或其他方式修改了不該改的文件,對于DBA 和SAPDBA,這樣的機會特別容易發(fā)生?,F(xiàn)代系統(tǒng)往往提供了很大的硬件保護,時數(shù)據(jù)在硬件意外時不丟失。
Snapshot 為用戶提供了自己恢復(fù)錯誤的能力,不需要依靠系統(tǒng)管理員從磁帶定位,恢復(fù)自己的文件。
Snapshot 是當(dāng)前文件系統(tǒng)的一個只讀的、一致的副本,提供了巧妙的解決在線備份的解決方案。在進行備份前,對文件系統(tǒng)拍快照,快照只需一兩秒就完成。然后把最新的Snapshot 目錄中的數(shù)據(jù)備份。由于快照目錄下的數(shù)據(jù)只讀,永遠不會被改變,所以可以保證備份到磁帶的數(shù)據(jù)的一致性,這樣磁帶備份的速度不會影響數(shù)據(jù)一致性,因為對當(dāng)前文件系統(tǒng)的改變不會影響到快照的數(shù)據(jù)。用戶當(dāng)前的文件系統(tǒng)總是可以讀寫的,用戶的作業(yè)不受影響,而備份設(shè)備看到在備份前即時做的快照,它穩(wěn)定不變。
這種隨時(在線)生成具有數(shù)據(jù)一致性的、可以恢復(fù)的檔案的能力,具有無比重要的價值。
Snapshot 提供了特別方便的方法對關(guān)系型數(shù)據(jù)庫文件( 包括DBM 文件、email/messaging 數(shù)據(jù)庫,如Exchange 和Notes,動態(tài)WEB 頁面內(nèi)容數(shù)據(jù)庫,不僅是傳統(tǒng)的RDBM,像Oracle, Sybase, SQLServer 等)。
傳統(tǒng)的方式在備份前保證數(shù)據(jù)一致性的方法是關(guān)閉控制數(shù)據(jù)庫的應(yīng)用程序。備份過程往往包括,關(guān)閉應(yīng)用程序,進行備份,重啟應(yīng)用程序,停機時間完全取決于備份的速度,從幾分鐘到幾個小時。進行熱備份需要將應(yīng)用程序、數(shù)據(jù)庫轉(zhuǎn)換為熱后備模式,備份完成后再轉(zhuǎn)換回正常運行模式,熱后備模式影響系統(tǒng)的性能,需要盡量縮短熱后備時間。
利用Snapshot 可以把停機時間縮短到幾秒種—-生成Snapshot 的時間。操作方式:停應(yīng)用,拍照,重起應(yīng)用,把在Snapshot 目錄里的內(nèi)容倒到備份介質(zhì),這種備份的數(shù)據(jù)/歸檔具有數(shù)據(jù)一致性的保證,確保應(yīng)用程序可以立刻使用。
同樣重要的一點,這些快照可以保存在線存在很長時間,萬一數(shù)據(jù)庫毀壞就可以立刻用來恢復(fù),極大地減少了恢復(fù)時間。
磁帶設(shè)備的速度比較慢,系統(tǒng)的吞吐量執(zhí)行tar/dump/pkzip 類型的工具只有幾百KB/s,硬盤相對快很多,所以在數(shù)據(jù)中心數(shù)據(jù)臨時dump 到磁盤設(shè)備,然后再下帶。隨著磁盤的降價和性能提高,這種方法越來越流行。
Network Appliance 的 VolCopy 功能提供給用戶將數(shù)據(jù)高速整卷遷移到另一臺Filer的方法,速度達到~45 GB/hour。使用VolCopy,用戶可以在另一臺機器FILER 上生成一個完全一樣的文件系統(tǒng),包括原數(shù)據(jù)系統(tǒng)的所有Snapshot。復(fù)制時目標系統(tǒng)不可用,一旦復(fù)制完成目標系統(tǒng)的數(shù)據(jù)就可在線。VolCopy 提供了一種快速將數(shù)據(jù)從一個卷遷移到新的位置的方法,可用于升級到新的系統(tǒng),或者生成一個副本,副本的數(shù)據(jù)進行磁帶備份而不管源數(shù)據(jù)正在發(fā)生變化,或者用于容災(zāi)。
Data ONTAP(Filer 的操作系統(tǒng))利用WAFL Snapshot 功能提供了自動的文件系統(tǒng)級的復(fù)制功能:SnapMirror。通過SnapMirror 技術(shù),一個源filer 可以將一個或多個文件系統(tǒng)復(fù)制到伙伴Filer,使伙伴Filer 上的文件系統(tǒng)與源Filer 的自動生成的Snapshot 同步?;锇镕iler 可以分布在任何地方,可以在同一大樓或者地球的另一邊,只要源和目的之間有網(wǎng)絡(luò)連接和復(fù)之?dāng)?shù)據(jù)需要的帶寬。
SnapMirror 在WAFL 里的對block 進行操作,效率很高。文件系統(tǒng)是由磁盤中的塊組成的,Snapshot 文件系統(tǒng)一個固化的版本,表示文件系統(tǒng)拍照時的狀態(tài)。
WAFL 利用內(nèi)部的塊映射表(block map file)記錄了哪些塊屬于哪些不同的Snapshot,block map file 記錄每個BLOCK 是否屬于當(dāng)前文件系統(tǒng)或是某個快照。 如下表,BLOCK 28854的數(shù)據(jù)在Active File System 和Snapshot 1 中,而snapshot2,3,…20 都沒有用這塊。
WAFL block map file 使得SnapMirror 很容易確定兩個Snapshot 的數(shù)據(jù)變化(增量),例如上表, block 28856 不在Snapshot 1, 卻在Snapshot 2。.假如Snapshot 2 在Snapshot 1 之后拍的, block 28856 一定Snapshot 1 拍完后假如到Snapshot2 的,而 block 28854在Snapshot 1 里,但Snapshot 2 里沒有,所以是Snapshot 1 拍完后刪除的。通過比較兩個快照的不同, SnapMirror 可以十分有效地順序?qū)⒆兓瘮?shù)據(jù)復(fù)制到另一臺設(shè)備。
SnapMirror 復(fù)制開始時,目標Filer 安排源Filer 拍快照”Snap A”,建立與源Filer的TCP 連接,開始傳輸”Snap A” 文件系統(tǒng)的塊。
數(shù)據(jù)傳輸完成后,目的Filer 上的數(shù)據(jù)十完整的、具有一致性保證的,而且完全等于”Snap A” 文件系統(tǒng),包括與SnapMirror 無關(guān)的“Snap A”快照時的SnapShot 的信息。目標Filer 上的數(shù)據(jù)可以被用戶只讀訪問。當(dāng)“Snap A”傳輸時,源Filer 上的數(shù)據(jù)也正在發(fā)生變化,然而 WAFL 的 copy-on-write 策略保證了所有變化數(shù)據(jù)在傳輸期間寫入到新的“Snap A”以外的block。
為了保證目標Filer 自動復(fù)制源Filer,變化的塊也要傳往目標Filer。目標filer 安排源filer 進行另一個Snapshot,”Snap B”,然后建立另一條TCP 連接傳輸兩次快照期間變化的數(shù)據(jù)。
當(dāng)目標Filer 接受完成SnapB,其數(shù)據(jù)是具有數(shù)據(jù)一致性且等于源Filer 的SnapB,SnapA會被刪除,新一輪傳輸又再啟動。
SnapMirror 通過在目標Filer 上的一個簡單的配置文件控制, /etc/snapmirror.conf, 設(shè)定Snapshot 的發(fā)生間隔和數(shù)據(jù)傳輸?shù)臅r間。 該文件包含下列格式的命令行:
srcfiler:srcvol dstfiler:dstvol schedule
srcfiler, srcvol, dstfiler 和dstvol 分別代表source filer, source volume,destination filer, 和destination volume 的名稱。管理員利用后面的變量值控制復(fù)制傳輸?shù)奶匦?。例如throttle value,閾值,限制Filer 間的數(shù)據(jù)傳輸最高帶寬kilobytes per second。
Schedule 參數(shù)由4 個獨立變量組成,minutes,hours,days of the month,和days of the week,表示傳輸發(fā)生的時間。
例如, /etc/snapmirror.conf 如下的一項:
sf:sv df:dv 2000 30 8,12,16,20 * 1,2,3,4,5
將使得目標volume 在 8:30am, 12:30pm, 4:30pm 和8:30pm, 每周一到周五,進行同步,閾值是2000 KB/S 或2 Megabytes/Second,兩臺filer 間的最大數(shù)據(jù)傳輸帶寬。*表示所有的月。
srcfiler:srcvol dstfiler:dstvol – * * * *
指示目標卷盡快與源卷同步,-表示以網(wǎng)絡(luò)允許的最大帶寬傳輸。
在源Filer 上的配置文件/etc/snapmirror ,控制只有指定的Filer 才可以進行復(fù)制。提供復(fù)制的安全性。