存儲快照

存儲快照

存儲網路行業協會SNIA(StorageNetworking Industry Association)對快照(Snapshot)的定義是:關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數據的一個副本,也可以是數據的一個複製品。

基本介紹

  • 中文名:存儲快照
  • 外文名:StorageNetworking Industry Association
  • 優點:能夠進行線上數據備份與恢復
  • 簡稱為:寫時複製
什麼是快照技術,快照的作用,快照的實現方式,快照的實現層次,趨勢,

什麼是快照技術

存儲網路行業協會SNIA(StorageNetworking Industry Association)對快照(Snapshot)的定義是:關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數據的一個副本,也可以是數據的一個複製品。

快照的作用

快照的作用主要是能夠進行線上數據備份與恢復。當存儲設備發生套用故障或者檔案損壞時可以進行快速的數據恢復,將數據恢復某個可用的時間點的狀態。快照的另一個作用是為存儲用戶提供了另外一個數據訪問通道,當原數據進行線上套用處理時,用戶可以訪問快照數據,還可以利用快照進行測試等工作。所有存儲系統,不論高中低端,只要套用於線上系統,那么快照就成為一個不可或缺的功能。

快照的實現方式

當前實現快照有主要有兩種技術,一種是第一次寫時複製(Copy OnFirst Write,COFW),有時簡稱為寫時複製(CopyOn Write,COW)。即在數據第一次寫入到某個存儲位置時,首先將原有的內容讀取出來,寫到另一位置處(為快照保留的存儲空間,此文中我們稱為快照空間),然後再將數據寫入到存儲設備中。而下次針對這一位置的寫操作將不再執行寫時複製操作。這種技術常在計算機相關的技術中經常初使用,其基本原理大同小異,只是面向的對象不同,適用的場合不一樣。
從COW 的執行過程我們可以知道,這種實現方式在第一次寫入某個存儲位置時需要完成一個讀操作(讀原位置的數據),兩個寫操作(寫原位置與寫快照空間),如果寫入頻繁,那么這種方式將非常消耗IO時間。因此可推斷,如果預計某個卷上的I/O多數以讀操作為主,寫操作較少,這種方式的快照實現技術是一個較理想的選擇,因為快照的完成需要較少的時間。除此之外,如果一個套用易出現寫入熱點,即只針對某個有限範圍內的數據進行寫操作,那么COW的快照實現方式也是較較理想的選擇。因為其數據更改都局限在一個範圍內,對同一份數據的多次寫操作只會出現一次寫時複製操作。下圖是寫時複製的示意圖:
但是這種方式的缺點也是非常明顯的。如果寫操作過於分散且頻繁,那么 COW造成的開銷則是不可忽略的,有時甚至是無法接受的。因此在套用時,則需要綜合評估套用系統的使用場景,以判斷這種方式的快照是否適用。
圖1 寫時複製示意圖圖1 寫時複製示意圖
快照實現技術中的另一種技術是 I/O 重定向(I/O Redirect)。即將讀寫操作重新定向到另一個存儲空間中。在一個快照生成期間,所有的寫操作將被重定向到另一個介質,而讀操作是否需要讀重定向,則需要根據讀取的位置是否有過自上次快照以來的寫重定向,必須對有過寫重定向的位置進行讀重定向,否則不需要進行讀定向。當要創建一個快照時,則將自上次快照以來所有的重定向寫數據所對應在源介質中的數據複製出來生成這個時間點的快照,然後再將這些重定向寫數據寫回到源介質中的相應位置上,從而完成一個快照生成過程。下圖中顯示了IO重定向的執行過程。
從上面的過程來看,關鍵的性能影響在於快照生成時的四次I/O操作(一次讀源介質,一次寫快照數據,一次讀快照介質,一次寫源介質),另一個則是重定向的計算工作。這種方式雖然看起來最後生成快照時的I/O操作較多,但是考慮到這個操作是在生成快照時才會發生,特別是快照生成時可以對I/O操作進行排序,可以使得對介質的讀寫得到較好的最佳化,因此使影響很小。而對於重定向的計算操作對於當下的計算能力來說,不會成為一個性能的瓶頸問題。因此這種快照實現方式在非快照執行期間的影響甚小。因此這種方式比較適合Write-Intensive(寫密集)類型的存儲系統。下圖是快照生成過程的示意圖:
圖2&amp圖2&amp
SNIA 將快照的實現方式表述為:鏡像分離(split mirror)、改變塊(changed block)、並發(concurrent)三大類。後兩種在實現時其實質就是寫時複製及I/O重定向。對於 split mirror的方式,由於其靈活性以及開銷問題,在實際的存儲系統中,並不實用。
圖3 快照生成圖圖3 快照生成圖

快照的實現層次

計算機的存儲結構是一個類似於 TCP/IP 一樣的棧結構。棧中包括硬體與軟體部分。棧中不同層為上層提供服務,同時利用下層的接口(如下圖)。因此在實現上,快照可以在不同的棧層上實現。但是不同的層其效果及特點是不一樣的。
一般來說,在套用層不太合適實現快照功能。因為不同的套用是千差萬別的,因此需要針對不同的套用實現快照功能,這個代價也太高了。但在套用層實現快照也並不是說一無用處,如在套用層實現快照的一個典型的例子就是 vmWare 虛擬化軟體中的快照功能。只是這種快照功能套用在存儲系統中不現實。
其次在檔案系統層實現快照與套用也是具有同樣的缺點,就是需要針對不同的檔案系統實現快照功能,這樣的代價也很大。實現的快照的功能的檔案系統基本上都是一些專用系統專為某個特定功能實現的檔案系統。在這個層級上實現快照,缺乏靈活性和可擴展性。這個比較典型的例子就是ZFS。
而較為適宜實現快照功能的層應該為卷管理層以及物理層。在這兩個層中都不與特定的套用及檔案系統相關。這裡比較典型的例子有Linux 的LVM。而在硬體層次上實現快照又通常有許多種,在這個層次上實現的快照一般為專用系統,好處是性能是各個方式中最好的。但是在這個層次上實現的快照也有一個不可避免的缺點,那就是由於不與特定的套用及檔案系統關聯,因此其就無法理解上層的套用邏輯,也就無法保證每個快照都處於數據一致性狀態的。但是這個缺點是可以通過其他的方式減少或者解決的,比如在生成快照之前先對數據進行刷新操作,或者在恢復快照時對檔案系統進行一致性檢查等。

趨勢

存儲快照會取代備份嗎?
第一代存儲快照解決方案並不想取代備份。有更方便的功能比什麼都重要。現代快照解決方案可以當作備份的替代品,只要他們採取措施保護數據。記住,快照和數據副本不一樣。今天的技術幾乎不可能在幾秒鐘之內創建多位元組卷的副本。存儲快照不創建真正的數據副本。
因此,為了使快照解決方案能真正取代傳統備份,那么就需要一種能同時保護快照和原始數據的方法。通常,這意味著需要把數據和快照複製到一個鏡像位置。

相關詞條

熱門詞條

聯絡我們