快照(Snapshot)技術發展綜述
劉愛貴
摘要:傳統數據備份技術存在備份窗口、恢復時間目標RTO和恢復時間點RPO過長的問題,無法滿足企業關鍵性業務的數據保護需求,因此產生了數據快照技術。本文對快照技術的概念、特點、實現技術和發展現狀進行了概括性闡述,並對其未來的發展進行了展望。
關鍵詞:快照,備份,復制,鏡像,寫時復制,指針重映射
作者簡介:劉愛貴,研究方向為網絡存儲、數據挖掘和分布式計算;畢業於中科院,目前就職於賽門鐵克@Symantec,從事存儲軟件研發。Email: Aigui.Liu@gmail.com
注:作者學識和經驗水平有限,如有錯誤或不當之處,敬請批評指正。
PDF格式下載:http://download.csdn.net/source/1613486
一、 引言
隨着計算機技術和網絡技術的不斷發展,信息技術水平不斷得到提高。人類進入稱為信息社會的二十一世紀后,諸如數字通信、數字多媒體、電子商務、搜索引擎、數字圖書館、天氣預報、地質勘探、科學研究等海量數據型應用的涌現,各種信息呈現爆炸式的增長趨勢,存儲成為信息計算技術的中心。應用對存儲系統的要求不斷提高,存儲容量不斷升級,從GigaByte到TeraByte、 PetaByte、ExaByte,愈顯巨大。圖靈獎獲得者Jim Gray提出一個新的經驗定律:網絡環境下每18個月生產的數據量等於有史以來的數據量之和。與此同時,現代企業對計算機的依賴性嚴重增強,信息數據逐漸成為企業賴以生存的基礎,數據損壞或丟失將給企業帶來巨大的損失。由於黑客、病毒、硬件設備的失效以及火災、地震等自然災害的原因,使系統和數據信息遭到破壞甚至毀滅,如果不及時地進行恢復,將對企業造成巨大的損失,所以備份容災技術顯得尤為重要。尤其,9.11等事件造成的災難性后果使人們更加深刻地認識到數據信息的價值和意義,日益重視數據的保護。
在過去的20多年中,雖然計算機技術取得了巨大的發展,但是數據備份技術卻沒有長足進步。數據備份操作代價和成本仍然比較高,並且消耗大量時間和系統資源,數據備份的恢復時間目標和恢復點目標比較長。傳統地,人們一直采用數據復制、備份、恢復等技術來保護重要的數據信息,定期對數據進行備份或復制。由於數據備份過程會影響應用性能,並且非常耗時,因此數據備份通常被安排在系統負載較輕時進行(如夜間)。另外,為了節省存儲空間,通常結合全量和增量備份技術。
顯然,這種數據備份方式存在一個顯著的不足,即備份窗口問題。在數據備份期間,企業業務需要暫時停止對外提供服務。隨着企業數據量和數據增長速度的加快,這個窗口可能會要求越來越長,這對於關鍵性業務系統來說是無法接受的。諸如銀行、電信等機構,信息系統要求24x7不間斷運行,短時的停機或者少量數據的丟失都會導致巨大的損失。因此,就需要將數據備份窗口盡可能地縮小,甚至縮小為零,數據快照(Snapshot)、持續數據保護(CDP, Continuous Data Protection)等技術,就是為了滿足這樣的需求而出現的數據保護技術。
二、 快照概念
快照(Snapshot)是某個數據集在某一特定時刻的鏡像,也稱為即時拷貝,它是這個數據集的一個完整可用的副本。存儲網絡行業協會SNIA對快照的定義是[1]:關於指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數據的一個副本(duplicate),也可以是數據的一個復制品(replicate)。
快照具有很廣泛的應用,例如作為備份的源、作為數據挖掘的源、作為保存應用程序狀態的檢查點,甚至就是作為單純的數據復制的一種手段等。創建快照的方法也有很多種,按照SNIA的定義[2],快照技術主要分為鏡像分離(split mirror) 、改變塊(changed block)、 並發(concurrent) 三大類。后兩種在實現時通常使用指針重映射(pointer remapping)和寫時拷貝(copy on write)技術。changed block 方式的靈活性及使用存儲空間的高效性,使得它成為快照技術的主流。
第一種快照是鏡像分離。在即時拷貝之前構建數據鏡像,當出現一個完整的可供復制的鏡像時,就可以通過瞬間“分離”鏡像來產生即時拷貝。這種技術的優點是速度快,創建快照無須額外工作。但缺點也很顯明,首先它不靈活,不能在任意時刻進行快照;其次,它需要一個與數據卷容量相同的鏡像卷;再者,連續地鏡像數據變化影響存儲系統的整體性能。
第二種快照是改變塊[3]。快照創建成功后,源和目標共享同一份物理數據拷貝,直到數據發生寫操作,此時源或目標將被寫向新的存儲空間。共享的數據單元可是塊、扇區、扇道或其他的粒度級別。為了記錄和追蹤塊的變化和復制信息,需要一個位圖(bitmap),它用於確定實際拷貝數據的位置,以及確定從源還是目標來獲取數據。
第三種快照是並發[3]。它與改變塊非常相似,但它總是物理地拷貝數據。當即時拷貝執行時,沒有數據被復制。取而代之,它創建一個位圖來記錄數據的復制情況,並在后台進行真正的數據物理復制。
三、 不同存儲層次的快照實現
“計算機科學中的任何問題,都可以通過增加間接層次來解決”-Butler Lampson,1992年圖靈獎獲得者。對於快照技術,我們可以在存儲系統中的不同層次來實現,可以在磁盤陣列、文件系統、卷管理器、NAS系統或備份系統中來實現。
圖1 存儲系統棧與快照實現
存儲棧由一組硬件和軟件組件組成,為運行在主機操作系統上的應用系統提供物理存儲介質,如圖1所示。快照可以采用很多不同實現方式,也可以在存儲棧中的不同層次來實現,大致分為軟件層和硬件層兩類,也可分為基於控制器的快照和基於主機的快照兩類[4]。
基於控制器的快照,在存儲設備層或硬件層中實現,由存儲系統硬件提供商管理並集成於磁盤陣列中。這種快照在LUN級(塊級)完成,獨立與操作系統和文件系統。基於主機的快照,在設備驅動和文件系統級之間實現,通常由文件系統、卷管理器或第三方軟件來執行。這種快照不依賴存儲硬件,但卻依賴於文件系統和卷管理軟件。該快照作用於邏輯數據視圖,這與基於控制器的快照的不同,它作用與物理數據。
在以上各個存儲層次中,物理存儲層和卷管理器是最適合實現快照的兩個組件,它們可以方便地利用物理存儲,是當前主流的實現層次。文件系統層實現快照是一個可行的選擇,然而諸如數據庫等應用會直接選擇使用邏輯卷來實現快照,因為在文件系統層它們不能被快照技術所管理。一般來說,沒有必要在應用層實現快照,對於備份機制,可以利用下層的文件系統或卷管理器接口來實現,但需要應用暫時停頓以保證快照數據一致性。總的來說,基於軟件層的快照易於操作,且提供比較好的恢復粒度,而基於硬件層的快照往往更高的性能和容錯性。
目前,存儲廠商提供了在不同存儲層次實現快照的存儲產品。快照在存儲子系統中實現的有IBM TotalStorage Disk Systems、NetApp NAS 、EMC Symmetrix,在虛擬化層中實現的有IBM Total Storage SAN Volume Controller,在卷管理器中實現的有Veritas Volume Manager、Linux LVM、IBM Tivoli Storage Manager LVSA、Microsoft® Windows® 2003 VSS System provider,在文件系統中實現的有AIX JFS2、IBM TotalStorage SAN File System、IBM General Parallel File System、IBM N series、NetApp filers、Veritas File System。
四、 快照實現方式及技術
快照技術能夠實現數據的即時影像,快照影像可以支持在線備份。全量快照是實現所有數據的一個完整的只讀副本,為了降低快照所占用的存儲空間,人們提出了寫時復制(COW ,Copy-On-Write)和寫重定向(ROW,Redirect on Write)快照技術。另外,還出現了其他一些快照技術的實現方式,如日志、持續數據保護等,可以提升快照的相關性能。
1、 鏡像分離(Split Mirror)
鏡像分裂快照技術在快照時間點到來之前,首先要為源數據卷創建並維護一個完整的物理鏡像卷:同一數據的兩個副本分別保存在由源數據卷和鏡像卷組成的鏡像對上。在快照時間點到來時,鏡像操作被停止,鏡像卷轉化為快照卷,獲得一份數據快照。快照卷在完成數據備份等應用后,將與源數據卷重新同步,重新成為鏡像卷。對於要同時保留多個連續時間點快照的源數據卷,必須預先為其創建多個鏡像卷,當第一個鏡像卷被轉化為快照卷作為數據備份后,初始創建的第二個鏡像卷立即與源數據卷同步,與源數據卷成為新的鏡像對。鏡像分裂快照操作的時間非常短,僅僅是斷開鏡像卷對所需的時間,通常只有幾毫秒,這樣小的備份窗口幾乎不會對上層應用造成影響,但是這種快照技術缺乏靈活性,無法在任意時間點為任意的數據卷建立快照。另外,它需要一個或者多個與源數據卷容量相同的鏡像卷,同步鏡像時還會降低存儲系統的整體性能。[5]
2、 寫時復制(COW, Copy On Write)
圖2 寫時復制快照
寫時復制快照使用預先分配的快照空間進行快照創建,在快照時間點之后,沒有物理數據復制發生,僅僅復制了原始數據物理位置的元數據。因此,快照創建非常快,可以瞬間完成。然后,快照副本跟蹤原始卷的數據變化(即原始卷寫操作),一旦原始卷數據塊發生首次更新,則先將原始卷數據塊讀出並寫入快照卷,然后用新數據塊覆蓋原始卷(如圖2)。寫時復制,因此而得名。
這種快照技術在創建快照時才建立快照卷,但只需分配相對少量的存儲空間,用於保存快照時間點之后源數據卷中被更新的數據。每個源數據卷都具有一個數據指針表,每條記錄保存着指向對應數據塊的指針。在創建快照時,存儲子系統為源數據卷的指針表建立一個副本,作為快照卷的數據指針表。當快照時間點結束時,快照建立了一個可供上層應用訪問的邏輯副本,快照卷與源數據卷通過各自的指針表共享同一份物理數據。快照創建之后,當源數據卷中某數據將要被更新時,為了保證快照操作的完整性,使用寫時復制技術。對快照卷中數據的訪問,通過查詢數據指針表,根據對應數據塊的指針確定所訪問數據的物理存儲位置。
寫時復制技術確保復制操作發生在更新操作之前,使快照時間點后的數據更新不會出現在快照卷上,保證了快照操作的完整性。寫時復制快照在快照時間點之前,不會占用任何的存儲資源,也不會影響系統性能;而且它在使用上非常靈活,可以在任意時間點為任意數據卷建立快照。在快照時間點產生的“備份窗口”的長度與源數據卷的容量成線性比例,一般為幾秒鍾,對應用影響甚微,但為快照卷分配的存儲空間卻大大減少;復制操作只在源數據卷發生更新時才發生,因此系統開銷非常小。但是由於快照卷僅僅保存了源數據卷被更新的數據,此快照技術無法得到完整的物理副本,碰到需要完整物理副本的應用就無能為力了,而且如果更新的數據數量超過保留空間,快照就將失效。
3、 指針重映射(Pointer Remapping)
圖3 指針重映射快照
這種實現方式與寫時復制非常相似,區別在於對於原始數據卷的首次寫操作將被重定向到預留的快照空間。該快照維持的是指向所有源數據的指針和拷貝數據。當數據被重寫時,將會給更新過的數據選擇一個新的位置,同時指向該數據的指針也被重新映射,指向更新后的數據。如果拷貝是只讀的,那么指向該數據的指針就根本不會被修改。重定向寫操作提升了快照I/O性能,只需一次寫操作,直接將新數據寫入快照卷,同時更新位圖映射指針;而寫時拷貝需要一次讀和兩次寫操作,即將原始卷數據塊讀入並寫入快照卷,然后將更新數據寫入原始卷。
不難發現,快照卷保存的是原始副本,而原始卷保存的則是快照副本。這導致刪除快照前需要將快照卷中的數據同步至原始卷,而且當創建多個快照后,原始數據的訪問、快照卷和原始卷數據的追蹤以及快照的刪除將變得異常復雜。此外,快照副本依賴與原始副本,原始副本數據集很快變得分散。
4、 日志文件架構(Log-structured file architecture)
這種形式的快照技術利用日志文件來記錄原始數據卷的寫操作。所有針對原始數據卷的寫操作都記錄在日志系統中,相當於每次數據變化均會生成快照。因此,這與數據庫系統事務或文件系統日志非常相似,可以根據需要,從日志恢復數據或者回滾事務到任意合理狀態。嚴格意義講,這種方式不能稱之為快照,但的確能達到快照的目標,不少文件系統實現了這種功能,如ZFS、JFS、EXT3、NTFS等。
5、 克隆快照(Copy on write with background copy)
前面提到的快照,基本上都不會生成完整的快照副本,無法滿足完整物理數據副本的業務需求。克隆快照可生成與源數據卷一致的鏡像快照,它充分利用了寫時拷貝和鏡像分離兩種快照技術的優點。快照時間點時,它先使用寫時拷貝方式快速產生快照副本,然后在后台啟動一個拷貝進程來執行源數據卷至快照卷的塊級數據拷貝任務。一旦復制完成,就可以通過鏡像分離技術獲得一個克隆快照。克隆快照同樣繼承了鏡像分離快照的缺點,除了需要一個與源數據卷容量相等的快照卷外,還會一定程度上影響存儲系統的整體性能。
6、 持續數據保護(Continuous data protection)
以上幾種快照技術均存在共同的不足之處,即不能在任意點創建任意多的快照。日志型快照雖然沒有上述不足,但卻依賴與具體的文件系統,無法直接應用到使用不同文件系統的應用,對於非基於文件系統的數據應用無能為力。
持續數據保護[6],也稱連續備份,它自動持續捕捉源數據卷數據塊的變化,並連續完整地記錄這些數據塊版本。每一次數據塊變化都會被記錄,生成瞬間快照,這與其他快照技術在快照時間點上創建快照是不同的。因為寫操作都被記錄保存下來,因此能夠動態地訪問任意一個時間點的數據狀態,提供了細粒度的數據恢復,可以實現瞬間和即時的恢復,有效拉近恢復點目標。數據塊級的持續數據保護技術的優點是與應用的藕合比較松,性能和效率比較高,系統連續不間斷運行,不存在快照窗口問題。它的缺點是對存儲空間的要求比較高,這也是限制數據塊級持續數據保護技術廣泛應用的根本原因。
表1[4]從不同角度對以上幾種快照技術進行了分析對比。
|
鏡像分離 |
指針重映射 |
寫時復制 |
日志文件 |
克隆快照 |
持續數據保護 |
快照是否依賴源數據卷? |
NO |
YES |
YES |
YES |
ONLY |
YES |
空間效率 |
NO |
YES |
YES |
YES |
NO |
YES |
源數據卷系統CPU和I/O負載 |
LOW/HIGH |
HIGH/NONE |
HIGH/NONE |
HIGH |
LOW |
|
源數據卷寫負載 |
NONE |
NONE |
HIGH |
HIGH |
HIGH |
HIGH |
邏輯數據錯誤保護機制 |
YES |
YES |
YES |
YES |
YES |
YES |
源數據卷物理介質故障保護機制 |
YES |
NONE |
NONE |
NONE |
YES |
|
表1 快照技術一覽及對比
五、 案例分析
目前,幾乎所有存儲廠商的存儲產品都支持快照,這成了事實上的行業標准,不具備快照功能的產品無法參與市場的競爭。不同廠商的快照實現方式各不相同,各有技術優勢,也有不足之處,用戶可以根據應用數據的特點來選擇不同的方案。下面簡要介紹當前主流存儲廠商的快照技術。
1、 EMC TimeFinder
EMC TimeFinder [7][8]提供本地存儲復制,以提高應用程序可用性和數據恢復速度。利用 EMC Symmetrix 系統,提供了很高的部署靈活性和大規模可擴展性以滿足任何服務級別要求。TimeFinder 幫助企業執行備份,加載數據倉庫,並在不停機的情況下輕松提供用於應用程序測試和開發的數據。
TimeFinder最早僅支持鏡像分離快照,隨后又增加了寫時復制快照支持。因此,目前它可以同時支持以上兩種快照技術。TimeFinder鏡像分離快照,支持每個生產設備最多可有 16 個副本;TimeFinder寫時復制快照,支持每個生產設備最多可有 128 個副本。
TimderFinder快照在存儲子系統層次實現,獨立於主機、操作系統、應用和數據庫系統,它可以幫助企業管理備份窗口,實現瞬間數據復制,並且有效降低備份對應用和主機性能的影響。
2、 IBM FlashCopy
FlashCopy[4]是基於卷實現的快照技術,主要用於邏輯卷的時間點復制。FlashCopy屬於克隆快照,利用了寫時拷貝和鏡像分離兩種快照技術的優點。目前,FlashCopy的后台復制操作是可選的,即支持寫時復制快照(即不選擇復制),幫助用戶高效利用存儲空間。FlashCopy主要用於IBM磁盤陣列系統,尤其是中高端企業級應用系統。
選擇復制情況下,即為標准的FlashCopy。首先在存儲子系統分配一個與原始卷容量相同的快照卷,然后使用寫時復制技術創建快照卷,並創建一個追蹤數據復制的位圖,這個過程是瞬間完成的。之后,后台復制進程被啟動,執行從原始卷到快照卷的塊級數據拷貝。在復制期間,對原始卷的數據更新按照寫時復制技術處理,即先將數據復制到快照卷再進行原始卷更新,並對位圖信息進行更新。復制一旦完成,則使用鏡像分離技術獲得一個完整可用的快照副本,可以獨立用於相關應用。
3、 HDS ShadowImage
ShowImage[9]是基於存儲子系統實現的鏡像分離快照方案,可提供即時、不停機的信息共享和接入,幫助提供決策支持,完成測試和開發,或優化磁帶備份操作。此外,ShadowImage 還使備份可以在生產的同時進行,因此可提高可創收應用的可用性。ShadowImage軟件的基於磁盤的復制可在數據毀壞后提供非常迅速的恢復。
ShowImage是存儲系統內部的數據復制技術,磁盤的鏡像功能對於主機系統是透明的,異步方式數據復制技術不會增加主機I/O響應時間;可以定義生產數據邏輯卷與備份邏輯卷的鏡像復制關系,以異步方式實時的保持2個邏輯卷的數據同步;可產生一個或多個與生產卷P-Vol完全相同的一個備份鏡像卷S-Vol,備份鏡像卷中的數據和生產卷中的數據完全相同。HDS ShadowImage生成的份鏡像卷,可以提供給客戶其他的應用主機作為審計、分析,同時還可以用於對生產卷進行備份恢復。
4、 NetApp Snapshot
NetApp快照技術[10]是基於其WAFL(Write Anywhere File Layout)文件系統實現的。WAFL文件系統的特點是:所有數據塊(卷信息除外)可寫至任意位置,不存在覆蓋寫操作,因為所有的寫操作都寫在新塊上。NetApp創建的快照是靜態只讀的WAFL卷視圖,可以實現多版本的文件、目錄層次、LUN和應用數據。Snapshot可以在線創建,每個WAFL卷最多可達255個,不會對應用運行和性能產生影響。而且,這些快照對用戶是可見的,可由用戶驅動進行數據恢復。
圖4展示了SnapShot的工作原理,它與寫重定向快照基本相同。WAFL文件系統可以理解成數據塊樹狀結構,其根部的數據結構描述了inode文件信息。這份inode文件信息則包含了對文件系統中所有inode的描述,它包含諸如空閑塊圖和空閑inode圖等元數據信息。圖(a)可視為整個文件系統的概貌圖,其上部展現的就是根數據結構。WAFL通過復制根數據結構創建新的數據拷貝SnapShot。根數據結構只有128比特,並且不需要復制額外的數據塊,一個新的SnapShot幾乎不耗費額外的磁盤存儲空間,直到用戶修改或者刪除文件系統中的數據。
圖4 NetApp Snapshot原理
5、 Veritas Snapshot
Veritas為不同級別的快照提供了多種實現方式,提供卷級(VxVM, Veritas Volume Manager)和文件系統級(VxFS, Veritas File System)兩大類快照,具體細分為五種快照類型,分別是卷級的鏡像分離快照、空間優化快照、完全即時快照以及文件系統級的文件系統快照、檢查點快照[11]。按照實現技術,它們又可分為鏡像分離、寫時復制、克隆快照三種類型。這里簡要介紹一下文件系統級的兩種快照。
圖5 Veritas快照:文件系統快照和檢查點快照
卷級快照捕捉數據塊變化,而Veritas文件系統快照則捕捉文件內容和元數據變化。文件系統快照通常發生在文件系統操作邊界,當文件發生變化時,快照會自動感知這些變化,在文件系統事務之前或之后進行快照操作,不在事務期間進行。兩種文件系統級快照工作原理如圖5所示。
文件系統快照(圖5左)是VxFS文件系統的非持久的只讀快照,它采用寫時復制技術,只支持單一數據卷。這種快照沒有包含全部文件系統映像數據和元數據,不能離線用於其他應用處理。VxFS維護一個內存映射圖,用於表示文件系統卷上數據塊地址與快照卷上文件塊地址的映射關系,快照卷保存文件系統數據和元數據塊變化前的映像。
檢查點快照(圖5右)與快照文件系統相同,也采用寫時復制技術,區別在於:快照是持久的,除非進行刪除;快照是可寫的,比文件系統快照應用更為廣泛;快照卷不是必須的,可使用文件系統自身空閑存儲空間;可應用於從多卷文件系統,多個快照之間可以保持協調。
六、 結論與展望
快照技術是對傳統數據備份與復制技術的重大革新,解決了備份窗口問題,有效拉近了恢復時間目標和恢復時間點目標,成為了事實上的存儲行業標准。本文對快照在實現方式和相關技術作了較為全面詳細的闡述,並簡要介紹了當前主流存儲廠商的快照技術和存儲產品。
快照技術發明以來,人們進行了大量意義重大的改進。快照窗口不斷縮小,從幾秒到瞬間完成;幾乎可以在任意時刻創建快照,粒度越來越細,數量不斷增大;快照性能大幅提升,對主機、應用的影響降低至微;快照靈活性、可擴展性、可管理性不斷增強。然而,人們對技術的進步要求從來都是沒有止境的。針對當前的各種解決方案,在綜合性能、靈活性、管理性方面,快照技術仍然存在很大的改進空間。存儲廠商不斷推出新的快照存儲產品或新的版本,是最有力的證明。
近年來,存儲技術的發展日新月異,面向對象存儲、固態硬盤、存儲虛擬化、重復數據刪除,新的存儲架構、技術和解決方案不斷涌現。這些可能會對快照技術的變革產生更加深遠的影響,為快照技術的發展創造更加寬廣的空間。我們可以預測,未來快照技術在空間效率、快照對象粒度(文件、文件集)、虛擬化存儲支持以及性能和用戶體驗方面有長足的進步,在數據復制和備份領域將有更加廣泛的應用前景。
參考文獻:
[1] Snapshot. http://www.snia.org/education/dictionary/s/#snapshot
[2] Point in time copy. http://www.snia.org.cn/dic.php?word=p
[3] Alain AzagIIry, Michael E Factor, Julian Satran. Point-in-time copy: Yesterday, Today and Tomorrow[C]. College Park, USA: the 19th IEEE Symposium on Mass Storage Systems. 2002:259-270.
[4] Snapshot. http://www.ibm.com/developerworks/tivoli/library/t-snaptsm1/index.html
[5] 袁曉銘, 林安. 幾種主流快照技術的分析比較. 微處理機, 2008年第1期.
[6] 王樹鵬, 雲曉春, 郭莉. 持續數據保護(CDP)技術的發展綜述. 信息技術快報, 2008年第6卷第6期.
[7] EMC TimeFinder. http://china.emc.com/products/detail/software/timefinder.htm
[8] EMC TimeFinder. http://china.emc.com/collateral/software/data-sheet/1700-timefinder.pdf
[9] HDS ShadowImage. http://www.hds.com/cn/products/storage-software/shadowimage-in-system-replication.html
[10] NetApp Snapshot. http://www.netapp.com/us/products/platform-os/snapshot.html
[11] Veritas Snapshot.http://eval.symantec.com/mktginfo/enterprise/yellowbooks/using_local_copy_services_03_2006.en-us.pdf