快照技術詳解,看這一篇就夠了

時間:2019-12-19 欄目:技術前沿

編者按:

本文轉自架構師技術聯盟,原作者晗狄。在災難恢復方面,快照是一種有效的,甚至可以說是首選的方法。文中作者通過對不同快照技術及其工作原理的詳細說明,全面地向讀者講解了快照技術相關問題及快照一致性問題,并對快照技術實際應用給出了建議。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

快照技術一般被定義為一組文件或目錄或者是卷在某個特定的時間點上的副本。 它所能捕獲到的是一些特定數據在特定時間點上的映像。 快照技術的出現是為了解決我們經常碰到的一些備份上的問題。

  • 需要備份的數據量太大,以至于無法在有限的時間段內完成備份。
  • 從一個未被備份的目錄中向一個已經備份過的目錄移動文件,經常會導致備份失敗發生;
  • 由于備份時一些文件正在進行寫操作,所以有些備份的數據不能使用。
  • 熱備份嚴重影響應用系統的性能,等等。

所有上述常見的備份問題其實都可以用快照技術來解決。但是,我們也不能單純的將快照視為解決所有問題的靈丹妙藥,因為快照技術還有待進一步完善。(例如“快照的一致性問題”)

一、快照技術的概述介紹

創建一個快照不同的設備需要不同的命令,但對于系統來說,基本都包括如下幾個步驟:

  • 首先發起創建指令
  • 在發起時間點,指令通知操作系統暫停應用程序和文件系統的操作
  • 刷新文件系統緩存,結束所有的讀寫事務
  • 創建快照點
  • 創建完成之后,釋放文件系統和應用程序,系統恢復正常運行。

現在,快照技術已經超越了簡單的數據保護范疇。我們可以用快照進行高效且無風險的應用軟件測試。用快照數據做測試,不會對生產數據造成任何的破壞。對于數據挖掘(Data Mining)和電子發現(eDiscovery)應用,快照也是理想的測試數據源。

在災難恢復方面,快照是一種非常有效的方法——甚至是首選,非常適合遭到惡意軟件攻擊、人為誤操作和數據損壞等邏輯錯誤發生時的數據恢復。

1.1基于文件系統和LVM的快照

過去我們認為只有磁盤陣列具備快照功能,但事實上磁盤陣列只是其中之一而已。廣義的快照技術通常可有7個不同類型的實現主體:

  • 主機文件系統(包括服務器、臺式機、筆記本電腦)
  • 邏輯卷管理器(LVM)
  • 網絡附加存儲系統(NAS)
  • 磁盤陣列
  • 存儲虛擬化設備
  • 主機虛擬化管理程序
  • 數據庫

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(許可證)和維護費。而且,像基于文件系統的快照一樣,我們可能還要面對系統之間的協調問題和復雜的技術實施問題。

1.2基于NAS和磁盤陣列的快照

1)基于NAS的快照

NAS本質上就是一個經過優化的、或是專門定制的文件系統,運行在特定的設備上,或集成在存儲設備里。大多數終端和企業級NAS系統都提供快照功能,其中既有使用專有操作系統的設備,也包括大量基于Microsoft Windows Storage Server軟件的各種NAS。

通過網絡連接到NAS的計算機系統都可以使用這種標準的通用快照,包括物理服務器、虛擬機、臺式機和筆記本電腦。它也非常容易操作和管理。基于NAS的快照往往同Volume Shadow Copy Services (VSS)、備份服務器和備份Agent等軟件集成在一起使用。

一些NAS廠商還為非Windows平臺的數據應用系統開發了Agent代理程序。其他一些與NAS快照有關的技術還包括重復數據刪除(EMC公司,FalconStor軟件公司和NetApp的產品),有些廠商甚至提供了帶有自動精簡配置功能的快照,目的是讓快照占用的空間變得更少。

但是,使用便利的工具和附加功能也需要成本,軟件license和維護費相當昂貴,一般是按照機器數量和磁盤卷容量來計算。大多數公司的數據量增長很快,需要使用NAS快照技術的地方也越來越多,因此,操作和管理也將更復雜。

2)基于磁盤陣列的快照

大多數磁盤陣列的軟件系統里都含有快照功能。基于磁盤陣列的快照與基于NAS的快照有非常相似的優點,即所有與磁盤陣列相連的計算機系統都可以使用這種標準的通用快照功能,包括物理服務器、虛擬機、臺式機和筆記本電腦等等。

快照的實施、操作和管理也都很簡單。像NAS一樣,很多磁盤陣列的快照功能也可以被Windows VSS、備份服務器和備份Agent等軟件直接調用。一些磁盤陣列廠商還有可供非Windows平臺應用系統使用的Agent代理程序。

基于磁盤陣列的快照存在的缺點是license和維護費用昂貴,對非Windows平臺的應用程序支持有限,磁盤陣列的數量越多,快照的管理也就越復雜。

1.3基于存儲虛擬化的快照技術

1)基于存儲設備的快照

這里所說的存儲虛擬化設備主要用于SAN光纖網絡環境,不同于基于文件(NFS)應用的網絡設備,像F5 Network公司的Acopia ARX產品就是排除在這個范疇之外的。主要的存儲虛擬化軟硬件存儲設備(或融合了虛擬化功能的存儲系統)都支持快照能力。

磁盤陣列和NAS快照所具備的優點在存儲虛擬化設備上同樣能夠體現,而且某些方面還能做的更好。我們可以將來自不同廠商的很多存儲設備聚集在少量的幾個控制點或單一控制點上進行管理,提供通用的標準化快照。這樣做最大程度的簡化了快照的管理操作成本和學習成本。

存儲虛擬化快照的缺點與上述類型相比則有些不同。使用存儲虛擬化設備會導致I/O延遲的增加,即使是采用旁路架構的設計,最終還是會影響應用程序的響應時間。增加存儲虛擬化設備還會使故障分析變得更加困難,潛在的還可能激化廠商之間對故障責任的推諉。

從另一個角度看,雖然增加額外的虛擬化存儲硬件或軟件要產生一定的費用,但是與每個存儲系統都獨立購買快照功能相比,它的軟件license和維護費用都要低一些。

2)基于主機虛擬化軟件的快照

隨著服務器虛擬化應用的普及,基于主機虛擬化管理軟件(Hypervisor)的快照技術也逐漸流行起來。像Citrix公司的 XenServer、微軟的Hyper – V、SUN的xVM Ops Center、以及VMware的ESX和vSphere4等主機虛擬化產品都支持快照功能。

在主機虛擬化軟件層實現快照的優點是簡單直接。由于同虛擬機管理軟件綁定在一起,因此可以為所有的虛擬機 (VMs) 提供統一的快照,并且還可以同微軟的VSS集成,隨時調用。相對而言,基于虛擬機的快照很容易部署、使用和管理。

但是,如果非要找出不喜歡這種快照的理由?我想應該是每一套虛擬機軟件的快照需要單獨管理;而且當我們在非Windows平臺下使用這種快照技術時,必須針對整個VM。

這意味著我們只能做粗粒度的數據恢復,還要消耗更多的恢復時間。這種快照是在Windows操作系統外部創建,所以它不能架構在應用軟件感知的層面,導致快照出來的映像數據有可能是不一致狀態。

1.4基于數據庫的快照

在數據庫中,快照動作被稱為“SnapShot Isolation (快照隔離)”。像Oracle和PostgreSQL這樣的數據庫需要做快照隔離以確保所有的交易命令序列化,就好像被一個個隔開一樣,然后再逐個執行。其他的一些數據庫也支持快照隔離,但并不要求將交易序列化。在一般情況下,數據庫備份工具會利用快照隔離的功能,用快照來恢復崩潰(出現一致性問題)的數據表。

針對數據庫內部數據和基于該數據庫的相關應用,使用數據庫自帶的快照比較有效。

相反,數據庫快照的重要缺欠就是覆蓋的范圍非常有限,其作用僅限于特定的數據庫內部和數據庫相關的應用,無法管理同在一臺服務器上的文件系統、文件類應用或其他數據庫,更不用說管理到其他的服務器了。有時候我們不得不通過其他層次的快照技術來解決數據庫之外的數據保護問題,這樣,操作和管理將變得有些復雜。

二、不同類型的快照及工作原理

通常,我們會提到6種類型的快照技術:

  • Copy-on-write 復制寫
  • Redirect-on-write 重定向寫
  • Clone or split mirror 克隆或鏡像
  • Copy-on-write with background copy后臺拷貝的復制寫
  • Incremental 增量快照
  • Continuous data protection 持續數據保護

2.1復制寫和重定向寫快照

1)Copy-on-write (COW) 復制寫快照技術

COW快照需要消耗一些存儲空間–建立快照卷。當我們為一個數據卷創建一個快照之后,這些預留的空間用來存放被變化數據更新的舊數據。COW快照在初始化的過程中僅僅創建用來描述源數據塊位置的指針信息(元數據),而不是完整的將源數據塊拷貝過來。因此初始化的過程幾乎可以在瞬間完成,對系統的影響也很小。

COW快照會跟蹤數據卷的寫操作和數據塊變化。當某個數據塊發生改變時,在將舊的數據覆蓋之前,首先將該塊的舊數據復制到預留的快照卷,該步驟僅在數據卷相應數據塊位置發生第一次寫操作請求時進行。

這個處理過程確保快照出來的數據與發起快照的那個精確時間點保持完全一致。這個過程也描述了“Copy On Write”這個名字的含義。

如果我們需要訪問某個時間點的快照數據,對沒有改變過的塊直接從數據卷讀取;對已經改變并被復制的塊則從快照空間讀取。從快照被創建那一刻開始,每個快照都會跟蹤記錄描述塊改變的元數據信息。

COW快照的主要優勢在于空間的高效利用,因為快照卷只需要保留發生過變化的數據塊,與數據卷相比要小得多。但是我們也知道COW快照有個缺點,它會引起數據卷性能的下降,這是因為創建快照之后,對數據卷的寫操作會增加一個等待的過程 –即舊數據塊復制到快照卷的過程。另外一個關鍵問題是每個快照卷必須依賴一個完整的數據卷。

2)Redirect-on-write (ROW) 重定向寫快照

“ROW重定向寫”與“COW復制寫”是相對的概念,它可以避免兩次寫操作引起的性能損失。ROW同COW一樣在空間利用方面效率非常高。那是什么讓ROW快照避免了寫性能的損耗?

其中的原因是ROW把對數據卷的寫請求重定向給了快照預留的存儲空間,而寫操作的重定向設計則把需要兩次寫才能完成的操作減少為一次寫。我們知道COW的兩次寫包括:

  • 將舊數據寫入快照卷
  • 在數據卷寫入新數據。而ROW只有寫入新數據一步。

使用ROW快照,數據卷存放的是上一個快照時間點的舊數據,新數據最終存放在預留的快照空間。這里也有一個復雜的問題,就是快照的刪除。被刪除的快照上的數據必須被復制到原始數據卷,并且做一致性回退。創建的快照越多,維護快照的復雜度也會以指數級別上升。

這些復雜性包括對原始數據的訪問、快照數據和原始數據卷的跟蹤、以及快照刪除后的數據調整。另一個直接引發的嚴重問題是,原始數據集中會產生大量的碎片。

2.2克隆和后臺拷貝快照技術

1)克隆或分割鏡像快照

Clone(或Split-Mirror) 快照所創建的是數據的完整副本。Clone(或Split-Mirror) 快照的對象可以是一個存儲卷、一個文件系統或者是一個LUN (logical unit number 邏輯單元號)。

Clone快照的優點是它們具有高可用性;缺點是所有的數據都要完整的復制一份,復制的過程也不可能在瞬間完成。我們可以分割一對保持同步狀態的鏡像卷來啟用Clone快照,分割的過程瞬間即可完成。然而,當鏡像被分割成Clone快照之后,數據卷也就失去了他的同步鏡像。

使用Clone快照需要面對的一個非常嚴重的問題是每個快照都需要和數據卷一樣大的存儲空間。尤其是當我們在任何時刻都需要保持一份以上Clone卷的情況,這個成本會非常高。另一個缺點是影響性能,因為在鏡像卷之間保持寫同步需要一定的系統開銷。

2)后臺拷貝的復制寫快照

該快照有兩個生成步驟,首先創建一個瞬時即可生成的COW快照;然后利用后臺進程將數據卷的數據復制到快照空間,最后生成一份數據卷的克隆或鏡像。

創建這種快照的目的是發揮COW快照的優勢,同時盡量屏蔽它的不足。因此,這種快照常常被形容為COW和Clone快照的混合體。

2.3增量快照與持續數據保護

1)(Incremental)增量快照

增量快照的特點是可以跟蹤數據卷和快照卷的變化。當一個新的增量快照生成之后,舊的快照數據將被刷新。第一個快照和隨后創建的每一個增量快照數據上都有時間戳標記,利用時間戳我們能夠將快照數據回滾到任意的一個時間點。增量快照技術能夠加快后續快照的生成速度,而且僅僅在名義上多消耗了一點空間而已。由此,我們可以提高創建快照的頻率,也能讓快照保留得更久一點。

增量快照的不足之處是它需要依靠上面所提到的其他基礎技術來創建第一個快照 。如果用Clone方式,那么第一個快照需要較長的初始化時間;如果用COW方式,數據卷的性能會降低。

2)持續數據保護(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備份代理程序可以驅動數據庫進入靜止狀態,然后反向讓備份服務器通知快照工具開始執行創建快照的操作。這也是一個比較有效的辦法。

及時響應,快速服務,為您保駕續航

立即注冊

銷售咨詢:400-0078-655
緊急報修:400-0078-655
投訴熱線:021-61679076
技術QQ群:532148075
歡迎加入!
請先完成圖形驗證

驗  證  碼:

隱私聲明
當您在本網站進行合作伙伴注冊登記,本網站將收集您的相關信息,并保存記錄。本網站收集的個人信息包括但不限于:姓名、地址、公司、所在地區、電話號碼以及電子郵件地址等。您主動提供的信息越多及越準確,我們就能夠更好地為您提供有關服務。
咨詢·購買
星际争霸战在线客服 绝地求生比赛比分直播 云南11选5 2019年上证指数半年线是多少目前大盘年线 娃哈哈股票登记 湖北11选5开奖走 江苏麻将66徐州麻将 吉林科乐麻将群群号 东北穷胡麻将技巧 茅台股票 青海体彩十一选五开奖结果 篮球即时比分90 法国对葡萄牙比分预测 河北20选5 东方6十1开奖结果中奖 竞彩足球比分直播360比分直播 足球比赛比分预测