1. 程式人生 > >快照技術原理詳解

快照技術原理詳解

一、概念解釋
       像照相機一樣,機器快門一閃,很快就把剛剛的人像停留在了相紙上。儲存系統中的資料“快照”與我們生活中所說的“照片”非常相似,所不同的是,照片的物件不是人,而是資料。如同照片留住了我們過去的摸樣和歲月,快照把資料在某一時刻的映像也保留了下來。因此我們可以根據快照查詢資料在過去某一時刻的映像,常常用來作為增強資料備份系統的一種技術,它可以很大的縮短RTO和RPO兩個指標。
SNIA(儲存網路行業協會)對快照(Snapshot)的定義是:關於指定資料集合的一個完全可用拷貝,該拷貝包括相應資料在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的資料的一個副本,也可以是資料的一個複製品。而從具體的技術細節來講,快照是指向儲存在儲存裝置中的資料的引用標記或指標。 

        磁碟快照(Snapshot)是針對整個磁碟卷冊進行快速的檔案系統備份,與其它備份方式最主要的不同點在於「速度」。進行磁碟快照時,並不牽涉到任何檔案複製動作。就算資料量再大,一般來說,通常可以在一秒之內完成備份動作。
       磁碟快照的基本概念與磁帶備份等機制有非常大的不同。在建立磁碟快照時,並不需要複製資料本身,它所作的只是通知LX Series NAS伺服器將目前有資料的磁碟區塊全部保留起來,不被覆寫。這個通知動作只需花費極短的時間。接下來的檔案修改或任何新增、刪除動作,均不會覆寫原本資料所在的磁碟區塊,而是將修改部分寫入其它可用的磁碟區塊中。所以可以說,資料複製,或者說資料備份,是在平常檔案存取時就做好了,而且對效能影響極低。LX Series NAS檔案系統內部會建立一份資料結構,紀錄磁碟快照備份及目前作用中檔案系統所使用到的磁碟區塊及指標,讓使用者可以同時存取到主要檔案系統及過去的磁碟快照版本。

二、快照技術型別
快照技術的作用:主要是能夠進行線上資料恢復,當儲存裝置發生應用故障或者檔案損壞時可以進行及時資料恢復,將資料恢復成快照產生時間點的狀態。快照的另一個作用是為儲存使用者提供了另外一個數據訪問通道,當原資料進行線上應用處理時,使用者可以訪問快照資料,還可以利用快照進行測試等工作。  因此,所有儲存系統,不論高中低端,只要應用於線上系統,那麼快照就成為一個不可或缺的功能。建立一個快照不同的裝置需要不同的命令,但對於系統來說,基本都包括如下幾個步驟:
  1、首先發起建立指令;
  2、在發起時間點,指令通知作業系統暫停應用程式和檔案系統的操作;
  3、重新整理檔案系統快取,結束所有的讀寫事務;

  4、建立快照點;
  5、建立完成之後,釋放檔案系統和應用程式,系統恢復正常執行。
  現在,快照技術已經超越了簡單的資料保護範疇。我們可以用快照進行高效且無風險的應用軟體測試。用快照資料做測試,不會對生產資料造成任何的破壞。對於資料探勘(data mining)和電子發現(eDiscovery)應用,快照也是理想的測試資料來源。在災難恢復方面,快照是一種非常有效的方法——甚至是首選,非常適合遭到惡意軟體攻擊、人為誤操作和資料損壞等邏輯錯誤發生時的資料恢復。過去我們認為只有磁碟陣列具備快照功能,但事實上磁碟陣列只是其中之一而已。廣義的快照技術通常可有7個不同型別的實現主體:
  1、主機檔案系統(包括伺服器、桌上型電腦、膝上型電腦);
  2、邏輯卷管理器(LVM);
  3、網路附加儲存系統(NAS);
  4、磁碟陣列;
  5、儲存虛擬化裝置;
  6、主機虛擬化管理程式;
  7、資料庫。
  下面將逐項介紹一下在各個系統中快照技術的應用,並對其進行詳細的說明。
  1、基於檔案系統的快照
很多檔案系統都支援快照功能,微軟的Windows NTFS有VSS卷影拷貝服務(Volume Shadow Copy Services, Vista稱作Shadow Copy);Sun Solaris的最新檔案系統ZFS(Zettabyte File System);Apple公司的Mac OS X 10.6(雪豹);Novell NetWare 4.11(或更高版本)的Novell Storage Services (NSS) ; Novell SUSE Linux作業系統下的OES-Linux等等。
  “免費”是檔案系統快照的優勢之一,因為它整合在檔案系統內部;另一個優點是非常好用,最新版檔案系統的快照功能通常使用起來很簡單。不利的一方面是,每個檔案系統都必須獨立進行管理,當系統數量激增時,管理工作會變得非常繁重。想象一下,如果我們要做快照複製的話,需要給每一個檔案系統都配置一套複製關係,而且還只能複製該檔案系統自己的快照。此外,不同檔案系統所提供的快照種類、快照頻率、預留空間等引數也可能不一樣,當然也包括設定、操作和管理上的差異。總之,需要管理的伺服器和檔案系統越多,複雜程度就越高。
  2、基於LVM(邏輯卷管理器)的快照
  帶有快照功能的LVM也很多,比如惠普HP-UX作業系統的 Logical Volume Manager;Linux平臺的Logical Volume Manager 和Enterprise Volume Management System系統 ;微軟Windows 2000及後續版本自帶的Logical Disk Manager系統;SUN Solaris 10作業系統的ZFS;以及賽門鐵克公司的Veritas Volume Manager(注:Veritas Volume Manager是賽門鐵克Veritas Storage Foundation產品的一部分)。
  我們可以建立跨多個檔案系統的LVM快照。像賽門鐵克的Veritas Volume Manager可以支援大多數常見的作業系統和檔案系統。LVM通常還包括儲存多路徑和儲存虛擬化等功能。
  使用LVM時,通常要付出額外的成本,包括為每臺伺服器購買license(許可證)和維護費。而且,像基於檔案系統的快照一樣,我們可能還要面對系統之間的協調問題和複雜的技術實施問題。
  3、基於NAS的快照
  NAS本質上就是一個經過優化的、或是專門定製的檔案系統,執行在特定的裝置上,或整合在儲存裝置裡。大多數中端和企業級NAS系統都提供快照功能,其中既有使用專有作業系統的裝置,也包括大量基於Microsoft Windows Storage Server軟體的各種NAS。
  通過網路連線到NAS的計算機系統都可以使用這種標準的通用快照,包括物理伺服器、虛擬機器、桌上型電腦和膝上型電腦。它也非常容易操作和管理。基於NAS的快照往往同Windows Volume Shadow Copy Services(卷影複製服務VSS)、備份伺服器和備份Agent等軟體整合在一起使用。一些NAS廠商還為非Windows平臺的資料應用系統開發了Agent代理程式。其他一些與NAS快照有關的技術還包括重複資料刪除(EMC公司,FalconStor軟體公司和NetApp的產品),有些廠商甚至提供了帶有自動精簡配置功能的快照,目的是讓快照佔用的空間變得更少。
  但是,使用便利的工具和附加功能也需要成本,軟體license和維護費相當昂貴,一般是按照機器數量和磁碟卷容量來計算。大多數公司的資料量增長很快,需要使用NAS快照的地方也越來越多,因此,操作和管理也將更復雜。
  4、基於磁碟陣列的快照
  大多數磁碟陣列的軟體系統裡都含有快照功能。基於磁碟陣列的快照與基於NAS的快照有非常相似的優點,即所有與磁碟陣列相連的計算機系統都可以使用這種標準的通用快照功能,包括物理伺服器、虛擬機器、桌上型電腦和膝上型電腦等等。快照的實施、操作和管理也都很簡單。像NAS一樣,很多磁碟陣列的快照功能也可以被Windows VSS、備份伺服器和備份Agent等軟體直接呼叫。一些磁碟陣列廠商還有可供非Windows平臺應用系統使用的Agent代理程式。
  基於磁碟陣列的快照也有一些缺點:license和維護費用昂貴;對非Windows平臺的應用程式支援有限;磁碟陣列的數量越多,快照的管理也就越複雜。
  5、基於儲存虛擬化裝置的快照
  這裡所說的儲存虛擬化裝置主要用於SAN光纖網路環境,不同於基於檔案(NFS)應用的網路裝置,像F5 Network公司的Acopia ARX產品就是排除在這個範疇之外的。主要的儲存虛擬化軟硬體裝置(或融合了虛擬化功能的儲存系統)包括:Cloverleaf Communication公司的Intelligent Storage Networking System (iSN);DataCore Software公司的 SANsymphony和SANmelody;EMC的Celerra Gateway blades;FalconStor公司的IPStor;HP的XP系列儲存;HDS的Universal Storage Platform V/VM;IBM的SAN Volume Controller;LSI的StoreAge Storage Virtualization Manager (SVM)以及NetApp的V-Series storage controllers等等。
  磁碟陣列和NAS快照所具備的優點在儲存虛擬化裝置上同樣能夠體現,而且某些方面還能做的更好。我們可以將來自不同廠商的很多儲存裝置聚集在少量的幾個控制點或單一控制點上進行管理,提供通用的標準化快照。這樣做最大程度的簡化了快照的管理操作成本和學習成本。
  儲存虛擬化快照的缺點與上述型別相比則有些不同。使用儲存虛擬化裝置會導致I/O延遲的增加,即使是採用旁路架構的設計,最終還是會影響應用程式的響應時間。增加儲存虛擬化裝置還會使故障分析變得更加困難,潛在的還可能激化廠商之間對故障責任的推諉。從另一個角度看,雖然增加額外的虛擬化儲存硬體或軟體要產生一定的費用,但是與每個儲存系統都獨立購買快照功能相比,它的軟體license和維護費用都要低一些。
  6、基於主機虛擬化軟體的快照
  隨著伺服器虛擬化應用的普及,基於主機虛擬化管理軟體(hypervisor)的快照技術也逐漸流行起來。像Citrix公司的 XenServer、微軟的Hyper – V、SUN的xVM Ops Center、以及VMware的ESX和vSphere4等主機虛擬化產品都支援快照功能。
  在主機虛擬化軟體層實現快照的優點是簡單直接。由於同虛擬機器管理軟體繫結在一起,因此可以為所有的虛擬機器 (VMs) 提供統一的快照,並且還可以同微軟的VSS整合,隨時呼叫。相對而言,基於虛擬機器的快照很容易部署、使用和管理。
  但是,如果非要找出不喜歡這種快照的理由?我想應該是每一套虛擬機器軟體的快照需要單獨管理;而且當我們在非Windows平臺下使用這種快照技術時,必須針對整個VM。這意味著我們只能做粗粒度的資料恢復,還要消耗更多的恢復時間。這種快照是在Windows作業系統外部建立,所以它不能架構在應用軟體感知的層面,導致快照出來的映像資料有可能是不一致狀態。
  7、基於資料庫的快照
  在資料庫中,快照動作被稱為“snapshot isolation(快照隔離)”。像Oracle和PostgreSQL這樣的資料庫需要做快照隔離以確保所有的交易命令序列化,就好像被一個個隔開一樣,然後再逐個執行。其他的一些資料庫也支援快照隔離,但並不要求將交易序列化。在一般情況下,資料庫備份工具會利用快照隔離的功能,用快照來恢復崩潰(出現一致性問題)的資料表。
  針對資料庫內部資料和基於該資料庫的相關應用,使用資料庫自帶的快照比較有效。
  相反,資料庫快照的重要缺欠就是覆蓋的範圍非常有限,其作用僅限於特定的資料庫內部和資料庫相關的應用,無法管理同在一臺伺服器上的檔案系統、檔案類應用或其他資料庫,更不用說管理到其他的伺服器了。有時候我們不得不通過其他層次的快照技術來解決資料庫之外的資料保護問題,這樣,操作和管理將變得有些複雜。
  不同型別的快照及工作原理
  通常,我們會提到6種類型的快照技術:
  1、Copy-on-write 複製寫
  2、Redirect-on-write 重定向寫
  3、Clone or split mirror 克隆或映象
  4、Copy-on-write with background copy後臺拷貝的複製寫
  5、Incremental 增量快照
  6、Continuous data protection 持續資料保護
  複製寫和重定向寫快照
  Copy-on-write (COW) 複製寫快照
  COW快照需要消耗一些儲存空間--建立快照卷。當我們為一個數據卷建立一個快照之後,這些預留的空間用來存放被變化資料更新的舊資料。COW快照在初始化的過程中僅僅建立用來描述源資料塊位置的指標資訊(元資料),而不是完整的將源資料塊拷貝過來。因此初始化的過程幾乎可以在瞬間完成,對系統的影響也很小。
  COW快照會跟蹤資料卷的寫操作和資料塊變化。當某個資料塊發生改變時,在將舊的資料覆蓋之前,首先將該塊的舊資料複製到預留的快照卷,該步驟僅在資料卷相應資料塊位置發生第一次寫操作請求時進行。這個處理過程確保快照出來的資料與發起快照的那個精確時間點保持完全一致。這個過程也描述了“copy on write”這個名字的含義。
  如果我們需要訪問某個時間點的快照資料,對沒有改變過的塊直接從資料卷讀取;對已經改變並被複制的塊則從快照空間讀取。從快照被建立那一刻開始,每個快照都會跟蹤記錄描述塊改變的元資料資訊。
  COW快照的主要優勢在於空間的高效利用,因為快照卷只需要保留髮生過變化的資料塊,與資料卷相比要小得多。但是我們也知道COW快照有個缺點,它會引起資料卷效能的下降,這是因為建立快照之後,對資料卷的寫操作會增加一個等待的過程 --即舊資料塊複製到快照卷的過程。另外一個關鍵問題是每個快照卷必須依賴一個完整的資料卷。
  Redirect-on-write (ROW) 重定向寫快照
  “ROW重定向寫”與“COW複製寫”是相對的概念,它可以避免兩次寫操作引起的效能損失。ROW同COW一樣在空間利用方面效率非常高。那是什麼讓ROW快照避免了寫效能的損耗?其中的原因是ROW把對資料卷的寫請求重定向給了快照預留的儲存空間,而寫操作的重定向設計則把需要兩次寫才能完成的操作減少為一次寫。我們知道COW的兩次寫包括:1、將舊資料寫入快照卷;2、在資料卷寫入新資料。而ROW只有寫入新資料一步。
  使用ROW快照,資料卷存放的是上一個快照時間點的舊資料,新資料最終存放在預留的快照空間。這裡也有一個複雜的問題,就是快照的刪除。被刪除的快照上的資料必須被複制到原始資料卷,並且做一致性回退。建立的快照越多,維護快照的複雜度也會以指數級別上升。這些複雜性包括對原始資料的訪問、快照資料和原始資料卷的跟蹤、以及快照刪除後的資料調整。另一個直接引發的嚴重問題是,原始資料集中會產生大量的碎片。 
  克隆或分割映象快照與後臺拷貝的複製寫快照
  Clone or split-mirror 克隆或分割映象快照
  Clone(或split-mirror)快照所建立的是資料的完整副本。Clone(或split-mirror)快照的物件可以是一個儲存卷、一個檔案系統或者是一個LUN(logical unit number 邏輯單元號)。Clone快照的優點是它們具有高可用性;缺點是所有的資料都要完整的複製一份,複製的過程也不可能在瞬間完成。我們可以分割一對保持同步狀態的映象捲來啟用Clone快照,分割的過程瞬間即可完成。然而,當映象被分割成Clone快照之後,資料卷也就失去了他的同步映象。
  使用Clone快照需要面對的一個非常嚴重的問題是每個快照都需要和資料卷一樣大的儲存空間。尤其是當我們在任何時刻都需要保持一份以上Clone卷的情況,這個成本會非常高。另一個缺點是影響效能,因為在映象卷之間保持寫同步需要一定的系統開銷。
  Copy-on-write with background copy 後臺拷貝的複製寫快照
  Copy-on-write with background copy快照有兩個生成步驟:首先建立一個瞬時即可生成的COW快照;然後利用後臺程序將資料卷的資料複製到快照空間,最後生成一份資料卷的克隆或映象。
  建立這種快照的目的是發揮COW快照的優勢,同時儘量遮蔽它的不足。因此,這種快照常常被形容為COW和Clone快照的混合體。
  增量快照與持續資料保護
  (Incremental)增量快照
  增量快照的特點是可以跟蹤資料卷和快照卷的變化。當一個新的增量快照生成之後,舊的快照資料將被重新整理。第一個快照和隨後建立的每一個增量快照資料上都有時間戳標記,利用時間戳我們能夠將快照資料回滾到任意的一個時間點。增量快照技術能夠加快後續快照的生成速度,而且僅僅在名義上多消耗了一點空間而已。由此,我們可以提高建立快照的頻率,也能讓快照保留得更久一點。
  增量快照的不足之處是它需要依靠上面所提到的其他基礎技術來建立第一個快照 (COW、ROW、clone/split mirror、copy-on-write with background copy) 。如果用Clone方式,那麼第一個快照需要較長的初始化時間;如果用COW方式,資料卷的效能會降低。
  持續資料保護(CDP)
  CDP的出現是為了實現零資料丟失的RPO指標,以及瞬時資料恢復的RTO指標。它本身與同步資料映象很類似,不同之處在於CDP還可以對軟性災難進行恢復。包括人為誤操作、惡意軟體攻擊、意外刪除、資料損壞等情況。
  持續資料保護頗像頻率很高的增量快照。它會捕獲並複製任何時刻發生的資料變化,並且給這些資料塊打上時間戳。CDP本質上相當於每個時刻都建立一份增量快照,提供細粒度的精確資料恢復。有些CDP產品同時提供基於時間和基於事件(例如應用程序升級事件)兩種粒度的恢復方式。還有一個理解CDP概念的好方法就是將它看成一個快照的journal日誌。
  對於郵件系統、資料庫和基於資料庫的應用來說,CDP是一個極好的保護方案,能將資料回滾到任意的歷史時間點,恢復過程也簡便、迅速。最有代表性的CDP產品是飛康公司的IPStor,它是一個集成了CDP功能的儲存系統兼儲存虛擬化裝置。
  隨著越來越多的資料需要保護,備份視窗也變得越來越緊張,因此需要快照技術來幫助我們解決備份問題。在現實的應用環境中,快照利用的是否恰當對資料保護的等級和恢復的速度有著很大的影響。儘管各型別快照之間存在的技術差異不太容易理解,但無論如何,快照技術都將在資料保護領域和日常儲存管理中扮演重要的角色。 
三、特別注意:快照的一致性問題
  如果用快照來處理結構化資料,可能會存在一些問題。結構化資料涉及到資料庫,以及資料庫類應用(例如郵件系統、ERP或CRM等等)。許多產品中的快照並不能與這些應用程式整合或被直接呼叫。有一種可能的情況是,在我們建立快照的瞬間,資料庫恰好不在靜止狀態(快取正在重新整理、寫操作事務尚未完成、索引和元資料正在更新等等),此刻生成的快照資料是不一致的,很有可能無法正常使用。
  在微軟的Windows Server平臺上,這個問題要簡單得多,利用Windows Volume Shadow Copy Services (VSS)和它的API,資料庫應用程式可以整合並呼叫快照工具。VSS是專門為結構化資料應用設計的服務框架,可以驅動資料庫等應用進入資料一致性的靜止狀態,在快照開始初始化之前,完成重新整理快取、結束寫操作以及系統狀態的更新。
  遺憾的是,目前在Linux和Unix作業系統平臺上還沒有類似VSS的服務或API。VMware公司的vCenter storage API可以說是一個部分解決方案。快照的發起者可以通過vCenter storage API給vCenter發出一個指令,讓虛擬機器進入靜止狀態,然後再執行快照。但這個時候,快照由於沒有通過應用程式感知,也許會存在不一致的問題。
這裡還有一個好辦法,可以不通過Windows VSS,獲得資料庫的一致性快照。這個辦法需要備份軟體的配合。將快照的API同備份軟體整合,就可以從備份伺服器端驅動備份軟體的資料庫代理Agent。Agent備份代理程式可以驅動資料庫進入靜止狀態,然後反向讓備份伺服器通知快照工具開始執行建立快照的操作。這也是一個比較有效的辦法。 

四、快照技術使用方法
具體使用快照時,儲存管理員可以有三種形式,即冷快照拷貝、暖快照拷貝和熱快照拷貝。
  冷快照拷貝:進行冷快照拷貝是保證系統可以被完全恢復的最安全的方式。在進行任何大的配置變化或維護過程之前和之後,一般都需要進行冷拷貝,以保證完全的恢復原狀(rollback)。冷拷貝還可以與克隆技術相結合複製整個伺服器系統,以實現各種目的,如擴充套件、製作生產系統的複本供測試/開發之用以及向二層儲存遷移。
  暖快照拷貝:暖快照拷貝利用伺服器的掛起功能。當執行掛起行動時,程式計數器被停止,所有的活動記憶體都被儲存在引導硬碟所在的檔案系統中的一個臨時檔案(.vmss檔案)中,並且暫停伺服器應用。在這個時間點上,複製整個伺服器(包括記憶體內容檔案和所有的LUN以及相關的活動檔案系統)的快照拷貝。在這個拷貝中,機器和所有的資料將被凍結在完成掛起操作時的處理點上。
  當快照操作完成時,伺服器可以被重新啟動,在掛起行動開始的點上恢復執行。應用程式和伺服器過程將從同一時間點上恢復執行。從表面上看,就好像在快照活動期間按下了一個暫停鍵一樣。對於伺服器的網路客戶機看來,就好像網路服務暫時中斷了一下一樣。對於適度載入的伺服器來說,這段時間通常在30到120秒。
  熱快照拷貝:在這種狀態下,發生的所有的寫操作都立即應用在一個虛擬硬碟上,系統的檔案以保持高度的一致性。伺服器提供讓持續的虛擬硬碟處於熱備份模式的工具,以通過新增REDO日誌檔案在硬碟子系統層上覆制快照拷貝。
  一旦REDO日誌被啟用,複製包含伺服器檔案系統的LUN的快照是安全的。在快照操作完成後,可以發出另一個命令,這個命令將REDO日誌處理提交給下面的虛擬硬碟檔案。當提交活動完成時,所有的日誌項都將被應用,REDO檔案將被刪除。在執行這個操作過程中,會出現處理速度的略微下降,不過所有的操作將繼續執行。但是,在多數情況下,快照程序幾乎是瞬間完成的,REDO的建立和提交之間的時間非常短。熱快照操作過程從表面上看基本上察覺不到伺服器速度下降。在最差情況下,它看起來就是網路擁塞或超載的CPU可能造成的一般伺服器速度下降。在最好情況下,不會出現可察覺到的影響。 

五、快照與映象、複製的區別
映象、快照和複製是三種不同的功能
  映象是通過從一個I/O建立兩個I/O來複制資料。磁碟映象通過OS或卷管理軟體在主系統上建立。磁碟映象是依靠平臺和本地連線特性的本地選件。映象可用於DAS和SAN並且大多數NAS支援它。儲存轉發式映象磁碟子系統(例如,EMC SRDF, IBM PPRC, Hitachi TrueCopy)主要用於SAN產品。  複製是通過網路傳輸資料物件(檔案、表格等)。傳輸是從系統到系統進行的,而不是在儲存裝置之間或子系統之間進行。複製一般也針對具體平臺,因此用於Windows 2000複製產品的執行方式與Unix平臺存在很大不同。