Snapshot 技術從根本上改變了對數(shù)據(jù)的備份/恢復、歸檔的操作方式。
備份數(shù)據(jù)可以保護由于用戶誤操作或者硬件故障造成數(shù)據(jù)丟失,對數(shù)據(jù)歸檔(archiving data )可以生成完整的具有一致性的數(shù)據(jù)集合的副本,用于將數(shù)據(jù)恢復在線到將來的某一個時間。備份保護免于故障,歸檔可以使業(yè)務暫停并恢復工作(可以在另外的地點)。
從backup 的數(shù)據(jù)中經(jīng)常會只需恢復某個文件或某個目錄,而不必進行整個文件系統(tǒng)的恢復。 而歸檔archive 往往要完整地進行恢復。容災 Disaster recovery (DR) 和備份和歸檔的特點類似,用于防止故障,更強調(diào)災害、整個建筑災難的情況。類似歸檔,DR 的數(shù)據(jù)必須具有一致性,使作業(yè)可以在容災點繼續(xù)。
對數(shù)據(jù)備份可以包括對項目的歸檔,在另一地的項目歸檔可以用于從災難恢復。
備份和歸檔最重要的問題是速度。當把大量數(shù)據(jù)備份到磁帶或者其他的介質時,由于數(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ù)完整和一致性的問題,備份無法保證是可以恢復的。
NetApp 的Snapshot, SnapMirror 和 SnapRestore™提供給系統(tǒng)管理員有力的解決這些問題的工具。
常常因為用戶錯誤而進行恢復,用戶經(jīng)常意外刪除、覆蓋或其他方式修改了不該改的文件,對于DBA 和SAPDBA,這樣的機會特別容易發(fā)生?,F(xiàn)代系統(tǒng)往往提供了很大的硬件保護,時數(shù)據(jù)在硬件意外時不丟失。
Snapshot 為用戶提供了自己恢復錯誤的能力,不需要依靠系統(tǒng)管理員從磁帶定位,恢復自己的文件。
Snapshot 是當前文件系統(tǒng)的一個只讀的、一致的副本,提供了巧妙的解決在線備份的解決方案。在進行備份前,對文件系統(tǒng)拍快照,快照只需一兩秒就完成。然后把最新的Snapshot 目錄中的數(shù)據(jù)備份。由于快照目錄下的數(shù)據(jù)只讀,永遠不會被改變,所以可以保證備份到磁帶的數(shù)據(jù)的一致性,這樣磁帶備份的速度不會影響數(shù)據(jù)一致性,因為對當前文件系統(tǒng)的改變不會影響到快照的數(shù)據(jù)。用戶當前的文件系統(tǒng)總是可以讀寫的,用戶的作業(yè)不受影響,而備份設備看到在備份前即時做的快照,它穩(wěn)定不變。
這種隨時(在線)生成具有數(shù)據(jù)一致性的、可以恢復的檔案的能力,具有無比重要的價值。
Snapshot 提供了特別方便的方法對關系型數(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ù)一致性的方法是關閉控制數(shù)據(jù)庫的應用程序。備份過程往往包括,關閉應用程序,進行備份,重啟應用程序,停機時間完全取決于備份的速度,從幾分鐘到幾個小時。進行熱備份需要將應用程序、數(shù)據(jù)庫轉換為熱后備模式,備份完成后再轉換回正常運行模式,熱后備模式影響系統(tǒng)的性能,需要盡量縮短熱后備時間。
利用Snapshot 可以把停機時間縮短到幾秒種—-生成Snapshot 的時間。操作方式:停應用,拍照,重起應用,把在Snapshot 目錄里的內(nèi)容倒到備份介質,這種備份的數(shù)據(jù)/歸檔具有數(shù)據(jù)一致性的保證,確保應用程序可以立刻使用。
同樣重要的一點,這些快照可以保存在線存在很長時間,萬一數(shù)據(jù)庫毀壞就可以立刻用來恢復,極大地減少了恢復時間。
磁帶設備的速度比較慢,系統(tǒng)的吞吐量執(zhí)行tar/dump/pkzip 類型的工具只有幾百KB/s,硬盤相對快很多,所以在數(shù)據(jù)中心數(shù)據(jù)臨時dump 到磁盤設備,然后再下帶。隨著磁盤的降價和性能提高,這種方法越來越流行。
Network Appliance 的 VolCopy 功能提供給用戶將數(shù)據(jù)高速整卷遷移到另一臺Filer的方法,速度達到~45 GB/hour。使用VolCopy,用戶可以在另一臺機器FILER 上生成一個完全一樣的文件系統(tǒng),包括原數(shù)據(jù)系統(tǒng)的所有Snapshot。復制時目標系統(tǒng)不可用,一旦復制完成目標系統(tǒng)的數(shù)據(jù)就可在線。VolCopy 提供了一種快速將數(shù)據(jù)從一個卷遷移到新的位置的方法,可用于升級到新的系統(tǒng),或者生成一個副本,副本的數(shù)據(jù)進行磁帶備份而不管源數(shù)據(jù)正在發(fā)生變化,或者用于容災。
Data ONTAP(Filer 的操作系統(tǒng))利用WAFL Snapshot 功能提供了自動的文件系統(tǒng)級的復制功能:SnapMirror。通過SnapMirror 技術,一個源filer 可以將一個或多個文件系統(tǒng)復制到伙伴Filer,使伙伴Filer 上的文件系統(tǒng)與源Filer 的自動生成的Snapshot 同步?;锇镕iler 可以分布在任何地方,可以在同一大樓或者地球的另一邊,只要源和目的之間有網(wǎ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 是否屬于當前文件系統(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 可以十分有效地順序將變化數(shù)據(jù)復制到另一臺設備。
SnapMirror 復制開始時,目標Filer 安排源Filer 拍快照”Snap A”,建立與源Filer的TCP 連接,開始傳輸”Snap A” 文件系統(tǒng)的塊。
數(shù)據(jù)傳輸完成后,目的Filer 上的數(shù)據(jù)十完整的、具有一致性保證的,而且完全等于”Snap A” 文件系統(tǒng),包括與SnapMirror 無關的“Snap A”快照時的SnapShot 的信息。目標Filer 上的數(shù)據(jù)可以被用戶只讀訪問。當“Snap A”傳輸時,源Filer 上的數(shù)據(jù)也正在發(fā)生變化,然而 WAFL 的 copy-on-write 策略保證了所有變化數(shù)據(jù)在傳輸期間寫入到新的“Snap A”以外的block。
為了保證目標Filer 自動復制源Filer,變化的塊也要傳往目標Filer。目標filer 安排源filer 進行另一個Snapshot,”Snap B”,然后建立另一條TCP 連接傳輸兩次快照期間變化的數(shù)據(jù)。
當目標Filer 接受完成SnapB,其數(shù)據(jù)是具有數(shù)據(jù)一致性且等于源Filer 的SnapB,SnapA會被刪除,新一輪傳輸又再啟動。
SnapMirror 通過在目標Filer 上的一個簡單的配置文件控制, /etc/snapmirror.conf, 設定Snapshot 的發(fā)生間隔和數(shù)據(jù)傳輸?shù)臅r間。 該文件包含下列格式的命令行:
srcfiler:srcvol dstfiler:dstvol schedule
srcfiler, srcvol, dstfiler 和dstvol 分別代表source filer, source volume,destination filer, 和destination volume 的名稱。管理員利用后面的變量值控制復制傳輸?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)絡允許的最大帶寬傳輸。
在源Filer 上的配置文件/etc/snapmirror ,控制只有指定的Filer 才可以進行復制。提供復制的安全性。