什麼是存儲快照技術?
存儲快照技術主要是在作業系統以及存儲技術上實現的一種記錄某一時間系統狀態的技術。近來,Oracle等資料庫廠家以及Vmware等虛擬化產品也把這種技術引入各自的數據保護當中。
存儲中使用快照技術由於其廣泛的實用性成為應用最廣泛的。本文主要探討的是各種不同的存儲快照技術。
SINA對於快照的定義是:關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數據的一個副本,也可以是數據的一個複製品。
由此我們可以看到快照的一些特性:
- 數學建模中通常包含指針技術
- 快照一旦生成,一定是記錄了某一個時間點的系統的完全狀態。
為什麼要使用存儲快照技術
- 瞬時備份:在不產生備份窗口的情況下,可以幫助客戶創建一致性的磁碟快照,每個磁碟快照都可以認為是一次對數據的全備份。從而實現常規備份軟體無法實現的分鐘級別的RPO。
- 快速恢復:用戶可以依據存儲管理員的定製,定時自動創建快照,通過磁碟差異回退,快速回滾到指定的時間點上來。通過這種回滾在很短的時間內可以完成。大大的提高了業務系統RTO的水平。
- 應用測試:用戶可以使用快照產生的虛擬硬碟的數據對新的應用或者新的作業系統版本進行測試,這樣可以避免對生產數據造成損害,也不會影響到目前正在運行的應用。
- 報表列印等資源消耗較大的業務的分離:用戶可以將指定時間點的快照虛擬硬碟分配給一個新的伺服器,從而實現將報表列印等對於伺服器核心業務會產生較大影響的剝離。使核心業務伺服器運行更加平穩有效快速的運行。
- 降低數據備份對於系統性能的影響: 通常數據備份是在業務伺服器上完成的。每次發起數據備份必然對當前業務系統運行性能造成影響。通過快照虛擬硬碟的提取後,備份工作可以轉移到其他伺服器上。從而實現了零備份窗口(針對應用主機),零影響的理想數據備份。
傳統的存儲快照技術(copy-on-write)
傳統的存儲快照技術以IBM Flashcopy/HDS Shadowimage等為代表,這類技術由於自動生成的能力不足,防禦意外的能力比較弱,一般不用於自動備份,而是用於系統更新之前的一種計劃內數據保存方式。
傳統存儲快照技術是基於時間點的複製,能夠在一個存儲單元中建立數據的完全卷拷貝。如果生產系統此時對某一個數據集合進行頻繁的修改,在這種情況下產生一個時間點一致拷貝是比較困難的。當進行快照時,快照的源卷將會被凍結幾秒鐘;當快照拷貝的位圖建立之後,源卷才可以繼續進行I/O操作。當位圖建立後,後臺拷貝需要進行一段時間,但是在目標卷上看來,拷貝已經完成了。
基於寫重定向的存儲快照技術(Redirect Write)
通過寫重定向來實現數據快照技術主要在NETAPP公司的存儲和NAS中使用,NETAPP稱為Snapshot,由於Snapshot只能提供只讀的卷,如果需要對快照虛擬磁碟進行寫操作,還需要配合Flexclone技術實現。
SnapShot是WAFL文件系統「任意位置寫入」功能帶來的一項突出優勢。 一份SnapShot是文件系統的在線只讀拷貝。創建文件系統的一份SnapShot僅僅需要幾秒種的時間,並且除非原始文件被刪除或者更改,數據快照並不佔用額外的磁碟空間。只有修改活動文件系統中的數據塊並寫入磁碟中新的位置時,SnapShot才會佔用額外的磁碟空間。
基於首次寫入變更的存儲快照技術(Copy-On-First Write)
基於首次寫入變更的存儲快照技術是由傳統的Copy on write發展而來的,通過整合不同時間的不同快照,使他們之間建立關聯性,從而迴避了傳統快照技術的在多個快照時對於性能和個數的影響。
這類技術主要是以美國飛康公司為代表的。飛康公司稱之為Timemark。飛康Timemark 是一種基於時間點的和可定製策略的存儲數據快照保護技術。Timemark可以按照客戶要求定時的周期產生或者按照策略進行生成,每個數據卷可達到255個快照。由於Delta增量空間只有在數據變更的時候才會被佔用,255個快照(相當於255份數據版本)只需要非常有限的空間就可以實現。另外,飛康近來發明了「錄像」(Journal) 技術,任何一秒鐘的數據可以迅速變成一個新的快照,使快照技術登上了一個新的高度。
快照技術的比較
傳統的存儲快照技術主要是針對每個存儲資源時間點狀態的單一保護。雖然同一存儲資源也可以實現幾份乃至十幾份的快照,但是快照之間彼此是沒有關聯性的。正是由於這個缺陷,是當存儲管理員對同一存儲資源需要多個時間點的多份快照時,傳統的存儲快照技術遇到以下問題:
- 存儲容量問題:傳統快照技術通常是一份快照就需要一份磁碟空間,當客戶需要的快照數量上百個之後,產生數百倍的空間佔用,顯然單一存儲的空間局限性問題將暴露的非常突出。同時,其價格也將變得非常昂貴。因而(+微信關注網絡世界),一般並不用於多份數據快照。實際上,這類快照技術的快照數量本身就十分少(如8個),也不會用於多個時間點的自動快照機制。
- 存儲性能問題:由於不同時間產生的傳統存儲快照之間沒有關聯性,假如需要生成多個快照,一個磁碟塊的寫入很可能向多個快照空間發出保存當前時間點原始數據的指令,例如產生10個快照的話,就要將一份原始數據同樣寫入10個快照區域,這樣產生的寫懲罰十分驚人,而且資料庫還需要產生短時凍結,大大降低系統性能。舉例:一個系統中有12份快照,當一個數據需要寫入時,在存儲中將產生13個寫操作和1個讀操作。其對存儲性能的影響根本無法被接受。
Redirect Write技術和Copy-On-First Write技術都可以在少量的空間內實現高達255份快照。但是由於實現機理不同,所以呈現出不同的性能特性,有著不同的使用領域。
Redirect write的Snapshot技術在數據寫入是沒有任何性能影響,但是由於破壞了原有數據在磁碟上的連續分配,如果應用程式在數據寫入後存在大量連續讀操作(如報表業務等),則會降低讀性能,導致業務相應時間變長。此外,快照數據只能提供讀操作,不能寫入數據。對於大量業務環境並不符合要求。為了實現對虛擬快照磁碟的可讀寫訪問,必然要使用Flexclone技術,因此每次寫都會變成兩次寫,產生對寫性能的影響,並且破壞了數據在磁碟上的連續分布。因此,我們認為Redirect Write技術比較適合寫入數據量遠遠大於讀數據量的應用系統,或者向NAS這種用來做歸檔和備份存儲產品。但是對於當前絕大多數讀寫比3:1到10:1的數據中心級別的系統來講,可能對業務系統產生性能影響。
Copy-On-First Write對於讀操作和以前是一樣的,沒有任何影響。對於寫操作,至多可能產生2次寫和一次讀操作。對於讀寫比3:1到10:1的數據中心級別的系統,通常至多產生5%的影響。客戶可以通過犧牲很小的性能實現數據安全性的極大提高。因此,Copy-On-First Write快照技術更適合在數據中心等高端系統中幫助客戶實現數據保護功能。