數據快照


探究快照技術

一、什么是快照

存儲網絡行業協會對快照的定義是:關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始時間點)的映像,快照可以是其所表示的數據的一個副本,也可以是數據的一個復制品。其實就像照相機一樣,相機快門一閃,記錄下那一時刻。不一樣的就是快照可以恢復到那一時刻,但是我們卻永遠也會不到我們照片中的曾經時刻。

很多的情況是我們對磁盤進行快照,磁盤快照(Snapshot)是針對整個磁盤卷冊進行快速的檔案系統本分,與其他備份方式最主要的不同點在於“速度”,很多種快照技術在進行磁盤快照時並不涉及任何檔案的復制動作,即使數據量再大,一般情況,通常可以在幾秒內完成快照動作。當然也有部分會在快照時候消耗較多的時間,例如克隆快照,下面會介紹到。

二、快照的作用

快照的作用主要是能夠進行在線數據備份與恢復,當存儲設備發生應用故障或者文件損壞時可以進行快速的數據恢復,將數據回滾到夠格可用的時間點的狀態,快照的另一個作用就是為存儲用戶提供另外一個數據訪問通道,當元數據進行在線應用處理時,用戶可以訪問快照數據,還可以利用快照進行測試等工作,所有的存儲系統,不論高中低端,只要應用於在線系統,那么快照就成為一個不可或缺的功能。快照的作用可以如下圖中一個簡單的文件來體現。

 

三、快照的應用及實現

創建一個快照,不同的設備需要不同的命令,但是對於系統來說,基本都包括如下的幾個步驟:

1):發起創建指令

2):在發起時間點指定通知系統停止應用程序和文件系統的操作

3):創建快找點,創建快照空間

4):創建完成之后,釋放文件系統和應用程序,系統恢復正常運行

四、常用到的快照技術

1、克隆(Clone)快照

Clone快照創建的是數據的完整副本,快照的對象可以是一個存儲卷、一個文件系統或者一個LUN,Clone的優點就是具有高可用性,但是缺點也很明顯,就是在創建的時候,數據要完整的復制一份。

使用Clone快照需要面對的一個非常嚴重的問題是每個快照都需要占用和源數據空間一樣大的存儲空間。尤其對快照需求較大、較多的情況,資源成本會非常高。另外就是創建的時候消耗時間較長。

優點:具有高可用性;快照文件可以作為備份使用。

缺點:快照創建時間較長;快照占用空間較大,資源成本較高。

Clone快照創建的時刻,系統的所有的操作都會停止,創建一個和源數據空間大小一樣的快照空間,將數據完整拷貝到快照空間中,快照完成后,系統恢復正常工作,實現過程如下圖所示:

 

 

 

2、鏡像分離(Split mirror)快照

鏡像分離(split mirror)快照也屬於全量快照,這種快照方式比較簡單,先創建一個原始卷的鏡像卷,每次磁盤寫入數據的時候,都會往原始卷和快照卷同時寫入內容,當啟動快照時,則鏡像卷能快速脫離,生成一個快照卷。

優點:鏡像分離的快照生成和恢復方便,速度快,快照操作的時間非常短,僅僅是斷開鏡像卷對所需的時間,通常只有幾毫秒,幾乎不會對上層應用造成影響;創建快照無需額外的工作,而且數據隔離很好,不存在快照卷和原始卷的相互影響;管理簡單,不需要監控目標數據的狀態,而且可以作為數據備份直接保存起來。

缺點:磁盤空間占用比較大,因為每個快照都需要占用和源數據卷同樣的存儲空間,而對於需要多份快照的需求,它需要多個與源數據卷容量相同的鏡像卷;寫數據時同時需要寫兩份,會降低存儲系統的整體性能。

鏡像分離首先會創建鏡像卷,鏡像卷和數據卷同時進行數據寫入,快照執行時刻,鏡像卷進行分離,作為鏡像文件,實現過程如下如所示:

3、寫時拷貝(COW)快照

在創建寫時拷貝(copy-on-write)快照的時候,會創建一個快照空間,在創建COW快照的時候,創建的僅僅是保存源數據空間和快照空間對應關系的指針信息,而不是進行數據的完整拷貝,創建的數據空間中的數據塊為空,快照空間占用的存儲空間也是很小的,因此創建過程很快,對系統的影響很小。

COW會跟蹤數據卷的寫操作和源數據塊的數據變化,當某個位置的數據發生變化時,將舊數據被覆蓋之前,首先會將該塊的舊數據復制到預留的快照空間中,該過程也僅在數據卷對應的數據塊位置第一次發生數據變化的時候進行。

當進行數據回滾的時候,需要將非空塊中的數據,復制到對應的源數據空間的位置,完成數據回滾。

COW快照在創建之后,每個數據塊第一次有新數據寫入都會有等待和數據拷貝的情況。

快照的創建過程:

Step 1: 創建快照指令

Step 2: 生成快照卷

Step 3: 源數據卷中的原始數接收到更新操作指令

Step 4: 將源數據卷中的原始數據拷貝到快照卷中(預留空間), 下次針對這一位置的寫操作將不再執行寫時拷貝操作

Step 5: 更新快照卷指針表

Step 6: 更新源數據卷的原始數據

Step 7: 不斷的重復 Step 3~6, 直到執行下一次快照

優勢: COW 在進行快照操作之前, 不會占用任何的存儲資源, 也不會影響系統性能;創建快照時由於快照卷與源數據卷通過各自的指針表共享同一份物理數據, 而不需要進行全量拷貝所以快照創建速度非常快, 可以瞬間完成。

劣勢: COW 因為創建快照后會的每次寫入操作都需要先將源數據卷中的原始數據拷貝到快照卷中才能開始寫入源數據卷, 所以會降低源數據卷的寫性能。

應用場景: COW 快照技術在創建快照后的一次數據更新操作實際上需要一次讀操作(讀源數據卷的數據)和兩次寫操作(寫源數據卷與寫快照卷), 所以, COW 更適合於應用對存儲設備讀多寫少的場景。

除此之外, 如果一個應用容易出現對存儲設備的寫入熱點(只針對某個有限范圍內的數據進行寫操作), 也是較較理想的選擇。因為其數據更改都局限在一個范圍內, 對同一份數據的多次寫操作只會出現一次寫時復制操作。實現過程如下圖所示。

4、寫時重定向(ROW)快照

寫時重定向(redirect-on-write)是和COW相近的概念,但是避免兩次寫操作的性能損失問題,ROW和COW的空間利用效率很高。ROW快照在創建的時候,也是創建一個數據塊為空的數據空間以及保存源數據空間和快照空間的指針信息,相比於COW的復雜數據寫入過程,ROW的寫入過程只要一步就可以完成,ROW的數據卷存放的是上一個快照時間點的舊數據,新數據則通過指針信息找到快照空間中相對應的位置進行寫入。但是這種模式也有一個比較麻煩的問題就是快照的刪除,被刪除的快照上的數據必須先復制到對應的數據空間之后,快照才會刪除。

優點:快照的創建時間較短;快照空間占用存儲空間較小;數據寫入較快,性能較好。

缺點:快照刪除時候,要將快照空間數據復制到源數據卷,消耗時間較長。

如果在創建快照之后, 對源數據卷的數據進行了更新操作的話, 並不會像 COW 似得直接修改源數據卷原始數據, 而是再開辟一個新的空間用於存放用於更新原始數據的新的數據,具體步驟如下:

Step 1: 創建快照

Step 2: 將自上次快照以來所有的重定向寫數據所對應在源數據卷中的數據復制出來生成這個時間點的快照, 然后再將這些重定向寫數據寫回到源數據卷中的相應位置

Step 3: 源數據卷中的原始數據接收到更新操作指令

Step 4: 開辟一個新的數據存儲卷(預留空間)

Step 5: 將源數據卷數據指針表中被更新原始數據的指針重定向到新開辟的數據存儲卷

Step 6: 寫入更新數據到新開辟的存儲空間中

Step 7: 重復 Step 3~6, 直到下一次執行快照

讀操作是否需要讀重定向, 則根據讀取數據的位置是否有過自上次快照以來的寫重定向, 必須對有過寫重定向的位置進行讀重定向, 反之就不需要了。

ROW的快照方式的一個很大的問題就是快照的刪除,要將快照空間的數據復制到數據卷。快照的刪除過程如下:

Step 1: 操作系統暫停工作

Step 2: 快照空間中非空塊中的數據按照指針表將數據復制到源數據卷中對應的空間中

Step 3:釋放快照空間。

 

 

五、快照的方式

具體使用快照時,存儲管理員可以有三種形式,即冷快照拷貝、暖快照拷貝和熱快照拷貝。
  冷快照拷貝:進行冷快照拷貝是保證系統可以被完全恢復的最安全的方式。在進行任何大的配置變化或維護過程之前和之后,一般都需要進行冷拷貝,以保證完全的恢復原狀(rollback)。冷拷貝還可以與克隆技術相結合復制整個服務器系統,以實現各種目的,如擴展、制作生產系統的復本供測試/開發之用以及向二層存儲遷移。
  暖快照拷貝:暖快照拷貝利用服務器的掛起功能。當執行掛起行動時,程序計數器被停止,所有的活動內存都被保存在引導硬盤所在的文件系統中的一個臨時文件(.vmss文件)中,並且暫停服務器應用。在這個時間點上,復制整個服務器(包括內存內容文件和所有的LUN以及相關的活動文件系統)的快照拷貝。在這個拷貝中,機器和所有的數據將被凍結在完成掛起操作時的處理點上。
  當快照操作完成時,服務器可以被重新啟動,在掛起行動開始的點上恢復運行。應用程序和服務器過程將從同一時間點上恢復運行。從表面上看,就好像在快照活動期間按下了一個暫停鍵一樣。對於服務器的網絡客戶機看來,就好像網絡服務暫時中斷了一下一樣。對於適度加載的服務器來說,這段時間通常在30到120秒。
  熱快照拷貝:在這種狀態下,發生的所有的寫操作都立即應用在一個虛擬硬盤上,系統的文件以保持高度的一致性。服務器提供讓持續的虛擬硬盤處於熱備份模式的工具,以通過添加REDO日志文件在硬盤子系統層上復制快照拷貝。

六、快照和傳統備份的區別

總的來說,就一句話:快照是數據存儲的某一時刻的狀態記錄;備份則是數據存儲的某一個時刻的副本。這是兩種完全不同的概念。

1、備份的數據安全性更好:如果原始數據損壞,很多快照回滾是無法恢復出正確的數據的,而備份可以。

2、快照的速度比備份快得多:生成快照的速度比備份速度快的多。也因為這個原因,為了回避因為備份時間帶來的各種問題(例如IO占用、數據一致性等)很多備份軟件是先生成快照,然后按照快照所記錄的對應關系去讀取底層數據來生成備份。

3、占用空間不同:備份會占用雙倍的存儲空間,而快照所占用的存儲空間則取決於快照的數量以及數據變動情況。極端情況下,快照可能會只占用1%不到的存儲空間,也可能會占用數十倍的存儲空間。(PS:不過如果同一份數據,同時做相同數量的快照和增量備份的話,備份還是會比快照占用的存儲空間多得多。)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM