什么是快照:
[編者按]不知道讀者是否有拍攝大頭照的機會,,機器快門一閃,很快就把剛剛的人像停留在了相紙上,。存儲系統(tǒng)中的數(shù)據(jù)“快照”與我們生活中所說的“照片”非常相似,,所不同的是,照片的對象不是人,,而是數(shù)據(jù),。 如同照片留住了我們過去的摸樣和歲月,快照把數(shù)據(jù)在某一時刻的映像也保留了下來,。因此我們可以根據(jù)快照查找數(shù)據(jù)在過去某一時刻的映像,,常常用來作為增強數(shù)據(jù)備份系統(tǒng)的一種技術(shù),它可以很大的縮短RTO和RPO兩個指標,。作為存儲備份領(lǐng)域的最為基礎(chǔ)的概念之一,,本文將詳細講述快照的作用、如何實現(xiàn),、以及不同的快照類型,。 “快照”通常被定義為一組文件、目錄或卷在某個特定時間點的副本,。“快照”的含義與它所捕獲的是一些特定數(shù)據(jù)在某個時間點的映像,。快照技術(shù)的出現(xiàn)最初是為了解決一些備份的難題,,其中我們經(jīng)常遇到的包括以下幾點: 需要備份的數(shù)據(jù)量太大,,以至于無法在有限的時間段內(nèi)完成備份; 所有上述常見的備份問題其實都可以用快照技術(shù)來解決。但是,,我們也不能單純的將快照視為解決所有問題的靈丹妙藥,,因為快照技術(shù)還有待進一步完善。(例如“快照的一致性問題”) 快照技術(shù)的概述介紹 創(chuàng)建一個快照不同的設(shè)備需要不同的命令,,但對于系統(tǒng)來說,,基本都包括如下幾個步驟: 1、首先發(fā)起創(chuàng)建指令; 現(xiàn)在,,快照技術(shù)已經(jīng)超越了簡單的數(shù)據(jù)保護范疇,。我們可以用快照進行高效且無風險的應(yīng)用軟件測試。用快照數(shù)據(jù)做測試,,不會對生產(chǎn)數(shù)據(jù)造成任何的破壞,。對于數(shù)據(jù)挖掘(data mining)和電子發(fā)現(xiàn)(eDiscovery)應(yīng)用,快照也是理想的測試數(shù)據(jù)源,。在災(zāi)難恢復(fù)方面,,快照是一種非常有效的方法——甚至是首選,非常適合遭到惡意軟件攻擊,、人為誤操作和數(shù)據(jù)損壞等邏輯錯誤發(fā)生時的數(shù)據(jù)恢復(fù),。 基于文件系統(tǒng)和LVM的快照 過去我們認為只有磁盤陣列具備快照功能,但事實上磁盤陣列只是其中之一而已,。廣義的快照技術(shù)通??捎?/font>7個不同類型的實現(xiàn)主體: 1、主機文件系統(tǒng)(包括服務(wù)器,、臺式機,、筆記本電腦); 下面將逐項給大家介紹一下在各個系統(tǒng)中快照技術(shù)的應(yīng)用,并對其進行詳細的說明,。 基于文件系統(tǒng)的快照 很多文件系統(tǒng)都支持快照功能,,微軟的Windows NTFS有VSS卷影拷貝服務(wù)(Volume Shadow Copy Services, Vista稱作Shadow Copy);Sun Solaris的最新文件系統(tǒng)ZFS(Zettabyte File System);Apple公司的Mac OS X 10.6(雪豹);Novell NetWare 4.11(或更高版本)的Novell Storage Services (NSS) ; Novell SUSE Linux操作系統(tǒng)下的OES-Linux等等,。 “免費”是文件系統(tǒng)快照的優(yōu)勢之一,,因為它集成在文件系統(tǒng)內(nèi)部;另一個優(yōu)點是非常好用,最新版文件系統(tǒng)的快照功能通常使用起來很簡單,。不利的一方面是,,每個文件系統(tǒng)都必須獨立進行管理,當系統(tǒng)數(shù)量激增時,,管理工作會變得非常繁重,。想象一下,如果我們要做快照復(fù)制的話,,需要給每一個文件系統(tǒng)都配置一套復(fù)制關(guān)系,而且還只能復(fù)制該文件系統(tǒng)自己的快照,。此外,,不同文件系統(tǒng)所提供的快照種類、快照頻率,、預(yù)留空間等參數(shù)也可能不一樣,,當然也包括設(shè)置、操作和管理上的差異,??傊枰芾淼姆?wù)器和文件系統(tǒng)越多,,復(fù)雜程度就越高,。 基于LVM(邏輯卷管理器)的快照 帶有快照功能的LVM也很多,比如惠普HP-UX操作系統(tǒng)的 Logical Volume Manager;Linux平臺的Logical Volume Manager 和Enterprise Volume Management System系統(tǒng) ;微軟Windows 2000及后續(xù)版本自帶的Logical Disk Manager系統(tǒng);SUN Solaris 10操作系統(tǒng)的ZFS;以及賽門鐵克公司的Veritas Volume Manager(注:Veritas Volume Manager是賽門鐵克Veritas Storage Foundation產(chǎn)品的一部分),。 我們可以創(chuàng)建跨多個文件系統(tǒng)的LVM快照,。像賽門鐵克的Veritas Volume Manager可以支持大多數(shù)常見的操作系統(tǒng)和文件系統(tǒng)。LVM通常還包括存儲多路徑和存儲虛擬化等功能,。 使用LVM時,,通常要付出額外的成本,包括為每臺服務(wù)器購買license(許可證)和維護費,。而且,,像基于文件系統(tǒng)的快照一樣,,我們可能還要面對系統(tǒng)之間的協(xié)調(diào)問題和復(fù)雜的技術(shù)實施問題。 基于NAS和磁盤陣列的快照 基于NAS的快照 NAS本質(zhì)上就是一個經(jīng)過優(yōu)化的,、或是專門定制的文件系統(tǒng),,運行在特定的設(shè)備上,或集成在存儲設(shè)備里,。大多數(shù)中端和企業(yè)級NAS系統(tǒng)都提供快照功能,,其中既有使用專有操作系統(tǒng)的設(shè)備,也包括大量基于Microsoft Windows Storage Server軟件的各種NAS,。 通過網(wǎng)絡(luò)連接到NAS的計算機系統(tǒng)都可以使用這種標準的通用快照,,包括物理服務(wù)器、虛擬機,、臺式機和筆記本電腦,。它也非常容易操作和管理?;?/font>NAS的快照往往同Windows Volume Shadow Copy Services(卷影復(fù)制服務(wù)VSS),、備份服務(wù)器和備份Agent等軟件集成在一起使用。一些NAS廠商還為非Windows平臺的數(shù)據(jù)應(yīng)用系統(tǒng)開發(fā)了Agent代理程序,。其他一些與NAS快照有關(guān)的技術(shù)還包括重復(fù)數(shù)據(jù)刪除(EMC公司,,FalconStor軟件公司和NetApp的產(chǎn)品),有些廠商甚至提供了帶有自動精簡配置功能的快照,,目的是讓快照占用的空間變得更少,。 但是,使用便利的工具和附加功能也需要成本,,軟件license和維護費相當昂貴,,一般是按照機器數(shù)量和磁盤卷容量來計算。大多數(shù)公司的數(shù)據(jù)量增長很快,,需要使用NAS快照的地方也越來越多,,因此,操作和管理也將更復(fù)雜,。 基于磁盤陣列的快照 大多數(shù)磁盤陣列的軟件系統(tǒng)里都含有快照功能,。基于磁盤陣列的快照與基于NAS的快照有非常相似的優(yōu)點,,即所有與磁盤陣列相連的計算機系統(tǒng)都可以使用這種標準的通用快照功能,,包括物理服務(wù)器、虛擬機,、臺式機和筆記本電腦等等,。快照的實施,、操作和管理也都很簡單,。像NAS一樣,,很多磁盤陣列的快照功能也可以被Windows VSS、備份服務(wù)器和備份Agent等軟件直接調(diào)用,。一些磁盤陣列廠商還有可供非Windows平臺應(yīng)用系統(tǒng)使用的Agent代理程序,。 基于磁盤陣列的快照也有一些缺點:license和維護費用昂貴;對非Windows平臺的應(yīng)用程序支持有限;磁盤陣列的數(shù)量越多,快照的管理也就越復(fù)雜,。 基于存儲虛擬化的快照 基于存儲虛擬化設(shè)備的快照 這里所說的存儲虛擬化設(shè)備主要用于SAN光纖網(wǎng)絡(luò)環(huán)境,,不同于基于文件(NFS)應(yīng)用的網(wǎng)絡(luò)設(shè)備,像F5 Network公司的Acopia ARX產(chǎn)品就是排除在這個范疇之外的,。主要的存儲虛擬化軟硬件設(shè)備(或融合了虛擬化功能的存儲系統(tǒng))包括: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快照所具備的優(yōu)點在存儲虛擬化設(shè)備上同樣能夠體現(xiàn),而且某些方面還能做的更好,。我們可以將來自不同廠商的很多存儲設(shè)備聚集在少量的幾個控制點或單一控制點上進行管理,,提供通用的標準化快照。這樣做最大程度的簡化了快照的管理操作成本和學習成本,。 存儲虛擬化快照的缺點與上述類型相比則有些不同,。使用存儲虛擬化設(shè)備會導(dǎo)致I/O延遲的增加,即使是采用旁路架構(gòu)的設(shè)計,,最終還是會影響應(yīng)用程序的響應(yīng)時間,。增加存儲虛擬化設(shè)備還會使故障分析變得更加困難,潛在的還可能激化廠商之間對故障責任的推諉,。從另一個角度看,,雖然增加額外的虛擬化存儲硬件或軟件要產(chǎn)生一定的費用,但是與每個存儲系統(tǒng)都獨立購買快照功能相比,,它的軟件license和維護費用都要低一些。 基于主機虛擬化軟件的快照 隨著服務(wù)器虛擬化應(yīng)用的普及,,基于主機虛擬化管理軟件(hypervisor)的快照技術(shù)也逐漸流行起來,。像Citrix公司的 XenServer、微軟的Hyper – V,、SUN的xVM Ops Center,、以及VMware的ESX和vSphere4等主機虛擬化產(chǎn)品都支持快照功能。 在主機虛擬化軟件層實現(xiàn)快照的優(yōu)點是簡單直接,。由于同虛擬機管理軟件綁定在一起,,因此可以為所有的虛擬機 (VMs) 提供統(tǒng)一的快照,并且還可以同微軟的VSS集成,,隨時調(diào)用,。相對而言,基于虛擬機的快照很容易部署,、使用和管理,。 但是,,如果非要找出不喜歡這種快照的理由我想應(yīng)該是每一套虛擬機軟件的快照需要單獨管理;而且當我們在非Windows平臺下使用這種快照技術(shù)時,必須針對整個VM,。這意味著我們只能做粗粒度的數(shù)據(jù)恢復(fù),,還要消耗更多的恢復(fù)時間。這種快照是在Windows操作系統(tǒng)外部創(chuàng)建,,所以它不能架構(gòu)在應(yīng)用軟件感知的層面,,導(dǎo)致快照出來的映像數(shù)據(jù)有可能是不一致狀態(tài)。 基于數(shù)據(jù)庫的快照 在數(shù)據(jù)庫中,,快照動作被稱為“snapshot isolation(快照隔離)”,。像Oracle和PostgreSQL這樣的數(shù)據(jù)庫需要做快照隔離以確保所有的交易命令序列化,就好像被一個個隔開一樣,,然后再逐個執(zhí)行,。其他的一些數(shù)據(jù)庫也支持快照隔離,但并不要求將交易序列化,。在一般情況下,,數(shù)據(jù)庫備份工具會利用快照隔離的功能,用快照來恢復(fù)崩潰(出現(xiàn)一致性問題)的數(shù)據(jù)表,。 針對數(shù)據(jù)庫內(nèi)部數(shù)據(jù)和基于該數(shù)據(jù)庫的相關(guān)應(yīng)用,,使用數(shù)據(jù)庫自帶的快照比較有效。 相反,,數(shù)據(jù)庫快照的重要缺欠就是覆蓋的范圍非常有限,,其作用僅限于特定的數(shù)據(jù)庫內(nèi)部和數(shù)據(jù)庫相關(guān)的應(yīng)用,無法管理同在一臺服務(wù)器上的文件系統(tǒng),、文件類應(yīng)用或其他數(shù)據(jù)庫,,更不用說管理到其他的服務(wù)器了。有時候我們不得不通過其他層次的快照技術(shù)來解決數(shù)據(jù)庫之外的數(shù)據(jù)保護問題,,這樣,,操作和管理將變得有些復(fù)雜。
快照的實現(xiàn)原理:
不同類型的快照及工作原理 通常,,我們會提到6種類型的快照技術(shù): 1,、Copy-on-write 復(fù)制寫 復(fù)制寫和重定向?qū)懣煺?/span> Copy-on-write (COW) 復(fù)制寫快照 COW快照需要消耗一些存儲空間--建立快照卷,。當我們?yōu)橐粋€數(shù)據(jù)卷創(chuàng)建一個快照之后,這些預(yù)留的空間用來存放被變化數(shù)據(jù)更新的舊數(shù)據(jù),。COW快照在初始化的過程中僅僅創(chuàng)建用來描述源數(shù)據(jù)塊位置的指針信息(元數(shù)據(jù)),,而不是完整的將源數(shù)據(jù)塊拷貝過來,。因此初始化的過程幾乎可以在瞬間完成,對系統(tǒng)的影響也很小,。 COW快照會跟蹤數(shù)據(jù)卷的寫操作和數(shù)據(jù)塊變化,。當某個數(shù)據(jù)塊發(fā)生改變時,在將舊的數(shù)據(jù)覆蓋之前,,首先將該塊的舊數(shù)據(jù)復(fù)制到預(yù)留的快照卷,,該步驟僅在數(shù)據(jù)卷相應(yīng)數(shù)據(jù)塊位置發(fā)生第一次寫操作請求時進行。這個處理過程確??煺粘鰜淼臄?shù)據(jù)與發(fā)起快照的那個精確時間點保持完全一致,。這個過程也描述了“copy on write”這個名字的含義。 如果我們需要訪問某個時間點的快照數(shù)據(jù),,對沒有改變過的塊直接從數(shù)據(jù)卷讀取;對已經(jīng)改變并被復(fù)制的塊則從快照空間讀取,。從快照被創(chuàng)建那一刻開始,每個快照都會跟蹤記錄描述塊改變的元數(shù)據(jù)信息,。 COW快照的主要優(yōu)勢在于空間的高效利用,,因為快照卷只需要保留發(fā)生過變化的數(shù)據(jù)塊,與數(shù)據(jù)卷相比要小得多,。但是我們也知道COW快照有個缺點,,它會引起數(shù)據(jù)卷性能的下降,這是因為創(chuàng)建快照之后,,對數(shù)據(jù)卷的寫操作會增加一個等待的過程 --即舊數(shù)據(jù)塊復(fù)制到快照卷的過程,。另外一個關(guān)鍵問題是每個快照卷必須依賴一個完整的數(shù)據(jù)卷。 Redirect-on-write (ROW) 重定向?qū)懣煺?/span> “ROW重定向?qū)?/font>”與“COW復(fù)制寫”是相對的概念,,它可以避免兩次寫操作引起的性能損失,。ROW同COW一樣在空間利用方面效率非常高。那是什么讓ROW快照避免了寫性能的損耗其中的原因是ROW把對數(shù)據(jù)卷的寫請求重定向給了快照預(yù)留的存儲空間,,而寫操作的重定向設(shè)計則把需要兩次寫才能完成的操作減少為一次寫,。我們知道COW的兩次寫包括:1、將舊數(shù)據(jù)寫入快照卷;2,、在數(shù)據(jù)卷寫入新數(shù)據(jù),。而ROW只有寫入新數(shù)據(jù)一步,。 使用ROW快照,,數(shù)據(jù)卷存放的是上一個快照時間點的舊數(shù)據(jù),新數(shù)據(jù)最終存放在預(yù)留的快照空間,。這里也有一個復(fù)雜的問題,,就是快照的刪除。被刪除的快照上的數(shù)據(jù)必須被復(fù)制到原始數(shù)據(jù)卷,,并且做一致性回退,。創(chuàng)建的快照越多,,維護快照的復(fù)雜度也會以指數(shù)級別上升。這些復(fù)雜性包括對原始數(shù)據(jù)的訪問,、快照數(shù)據(jù)和原始數(shù)據(jù)卷的跟蹤,、以及快照刪除后的數(shù)據(jù)調(diào)整。另一個直接引發(fā)的嚴重問題是,,原始數(shù)據(jù)集中會產(chǎn)生大量的碎片,。 克隆或分割鏡像快照與后臺拷貝的復(fù)制寫快照 Clone or split-mirror 克隆或分割鏡像快照 Clone(或split-mirror)快照所創(chuàng)建的是數(shù)據(jù)的完整副本。Clone(或split-mirror)快照的對象可以是一個存儲卷,、一個文件系統(tǒng)或者是一個LUN(logical unit number 邏輯單元號),。Clone快照的優(yōu)點是它們具有高可用性;缺點是所有的數(shù)據(jù)都要完整的復(fù)制一份,復(fù)制的過程也不可能在瞬間完成,。我們可以分割一對保持同步狀態(tài)的鏡像卷來啟用Clone快照,,分割的過程瞬間即可完成。然而,,當鏡像被分割成Clone快照之后,,數(shù)據(jù)卷也就失去了他的同步鏡像。 使用Clone快照需要面對的一個非常嚴重的問題是每個快照都需要和數(shù)據(jù)卷一樣大的存儲空間,。尤其是當我們在任何時刻都需要保持一份以上Clone卷的情況,,這個成本會非常高。另一個缺點是影響性能,,因為在鏡像卷之間保持寫同步需要一定的系統(tǒng)開銷,。 Copy-on-write with background copy 后臺拷貝的復(fù)制寫快照 Copy-on-write with background copy快照有兩個生成步驟:首先創(chuàng)建一個瞬時即可生成的COW快照;然后利用后臺進程將數(shù)據(jù)卷的數(shù)據(jù)復(fù)制到快照空間,最后生成一份數(shù)據(jù)卷的克隆或鏡像,。 創(chuàng)建這種快照的目的是發(fā)揮COW快照的優(yōu)勢,,同時盡量屏蔽它的不足。因此,,這種快照常常被形容為COW和Clone快照的混合體,。 增量快照與持續(xù)數(shù)據(jù)保護 (Incremental)增量快照 增量快照的特點是可以跟蹤數(shù)據(jù)卷和快照卷的變化。當一個新的增量快照生成之后,,舊的快照數(shù)據(jù)將被刷新,。第一個快照和隨后創(chuàng)建的每一個增量快照數(shù)據(jù)上都有時間戳標記,利用時間戳我們能夠?qū)⒖煺諗?shù)據(jù)回滾到任意的一個時間點,。增量快照技術(shù)能夠加快后續(xù)快照的生成速度,,而且僅僅在名義上多消耗了一點空間而已。由此,,我們可以提高創(chuàng)建快照的頻率,,也能讓快照保留得更久一點。 增量快照的不足之處是它需要依靠上面所提到的其他基礎(chǔ)技術(shù)來創(chuàng)建第一個快照 (COW、ROW,、clone/split mirror,、copy-on-write with background copy) 。如果用Clone方式,,那么第一個快照需要較長的初始化時間;如果用COW方式,,數(shù)據(jù)卷的性能會降低。 持續(xù)數(shù)據(jù)保護(CDP) CDP的出現(xiàn)是為了實現(xiàn)零數(shù)據(jù)丟失的RPO指標,,以及瞬時數(shù)據(jù)恢復(fù)的RTO指標,。它本身與同步數(shù)據(jù)鏡像很類似,不同之處在于CDP還可以對軟性災(zāi)難進行恢復(fù),。包括人為誤操作,、惡意軟件攻擊、意外刪除,、數(shù)據(jù)損壞等情況,。 持續(xù)數(shù)據(jù)保護頗像頻率很高的增量快照。它會捕獲并復(fù)制任何時刻發(fā)生的數(shù)據(jù)變化,,并且給這些數(shù)據(jù)塊打上時間戳,。CDP本質(zhì)上相當于每個時刻都創(chuàng)建一份增量快照,提供細粒度的精確數(shù)據(jù)恢復(fù),。有些CDP產(chǎn)品同時提供基于時間和基于事件(例如應(yīng)用程序升級事件)兩種粒度的恢復(fù)方式,。還有一個理解CDP概念的好方法就是將它看成一個快照的journal日志。 對于郵件系統(tǒng),、數(shù)據(jù)庫和基于數(shù)據(jù)庫的應(yīng)用來說,,CDP是一個極好的保護方案,能將數(shù)據(jù)回滾到任意的歷史時間點,,恢復(fù)過程也簡便,、迅速。最有代表性的CDP產(chǎn)品是飛康公司的IPStor,,它是一個集成了CDP功能的存儲系統(tǒng)兼存儲虛擬化設(shè)備,。 隨著越來越多的數(shù)據(jù)需要保護,備份窗口也變得越來越緊張,,因此需要快照技術(shù)來幫助我們解決備份問題,。在現(xiàn)實的應(yīng)用環(huán)境中,快照利用的是否恰當對數(shù)據(jù)保護的等級和恢復(fù)的速度有著很大的影響,。盡管各類型快照之間存在的技術(shù)差異不太容易理解,,但無論如何,快照技術(shù)都將在數(shù)據(jù)保護領(lǐng)域和日常存儲管理中扮演重要的角色,。 特別注意:快照的一致性問題 如果用快照來處理結(jié)構(gòu)化數(shù)據(jù),,可能會存在一些問題。結(jié)構(gòu)化數(shù)據(jù)涉及到數(shù)據(jù)庫,,以及數(shù)據(jù)庫類應(yīng)用(例如郵件系統(tǒng),、ERP或CRM等等)。許多產(chǎn)品中的快照并不能與這些應(yīng)用程序集成或被直接調(diào)用,。有一種可能的情況是,,在我們創(chuàng)建快照的瞬間,數(shù)據(jù)庫恰好不在靜止狀態(tài)(緩存正在刷新,、寫操作事務(wù)尚未完成,、索引和元數(shù)據(jù)正在更新等等),此刻生成的快照數(shù)據(jù)是不一致的,,很有可能無法正常使用,。 在微軟的Windows Server平臺上,這個問題要簡單得多,,利用Windows Volume Shadow Copy Services (VSS)和它的API,,數(shù)據(jù)庫應(yīng)用程序可以集成并調(diào)用快照工具。VSS是專門為結(jié)構(gòu)化數(shù)據(jù)應(yīng)用設(shè)計的服務(wù)框架,,可以驅(qū)動數(shù)據(jù)庫等應(yīng)用進入數(shù)據(jù)一致性的靜止狀態(tài),,在快照開始初始化之前,完成刷新緩存,、結(jié)束寫操作以及系統(tǒng)狀態(tài)的更新,。 遺憾的是,目前在Linux和Unix操作系統(tǒng)平臺上還沒有類似VSS的服務(wù)或API,。VMware公司的vCenter storage API可以說是一個部分解決方案,。快照的發(fā)起者可以通過vCenter storage API給vCenter發(fā)出一個指令,,讓虛擬機進入靜止狀態(tài),,然后再執(zhí)行快照。但這個時候,,快照由于沒有通過應(yīng)用程序感知,,也許會存在不一致的問題。 這里還有一個好辦法,,可以不通過Windows VSS,,獲得數(shù)據(jù)庫的一致性快照。這個辦法需要備份軟件的配合,。將快照的API同備份軟件集成,,就可以從備份服務(wù)器端驅(qū)動備份軟件的數(shù)據(jù)庫代理Agent。Agent備份代理程序可以驅(qū)動數(shù)據(jù)庫進入靜止狀態(tài),,然后反向讓備份服務(wù)器通知快照工具開始執(zhí)行創(chuàng)建快照的操作,。這也是一個比較有效的辦法,。 |
|
來自: saintfei > 《挨踢技術(shù)》