天天看點

快照介紹和原理

一、快照

1.1 照的概念

存儲網絡行業協會(SNIA)對快照的定義是:對指定資料集合的一個完全可用拷貝,該拷貝包含源資料在拷貝時間點的靜态影像。  
快照可以是資料再現的一個副本或者複制。對于檔案系統來說,檔案系統快照是檔案系統的一個即時拷貝,它包含了檔案系統在快照生成時刻所有的資訊,本身也是一個完整可用的副本。
           

建立一個快照不同的裝置需要不同的指令,但對于系統來說,基本都包括如下幾個步驟:

1、首先發起建立指令

2、在發起時間點,指令通知作業系統暫停應用程式和檔案系統的操作

3、重新整理檔案系統緩存,結束所有的讀寫事務

4、建立快照點

5、建立完成之後,釋放檔案系統和應用程式,系統恢複正常運作。

1.2 快照在不同層級的實作

在IT裝置的不同層級都會有相應的産品去實作快照,而且不同的存儲産品也經常會使用多種技術實作快照。

快照介紹和原理

廣義的快照技術通常可有7個不同類型的實作主體:

1、主機檔案系統(包括伺服器、桌上型電腦、筆記本電腦)
2、邏輯卷管理器(LVM)
3、網絡附加存儲系統(NAS)
4、磁盤陣列
5、存儲虛拟化裝置
6、主機虛拟化管理程式
7、資料庫。
           

基于檔案系統和LVM的快照

1.2.1 基于檔案系統的快照

很多檔案系統都支援快照功能,免費是檔案系統快照的優勢之一,因為它內建在檔案系統内部;另一個優點是非常好用,最新版檔案系統的快照功能通常使用起來很簡單。但存在的劣勢是每個檔案系統都必須獨立進行管理,當系統數量激增時,管理工作會變得非常繁重

1.2.2 基于LVM邏輯卷管理器快照

我們可以建立跨多個檔案系統的LVM快照。像賽門鐵克的Veritas Volume Manager可以支援大多數常見的作業系統和檔案系統。LVM通常還包括存儲多路徑和存儲虛拟化等功能。

基于NAS和磁盤陣列的快照

1.2.3 基于NAS的快照

NAS本質上就是一個經過優化的、或是專門定制的檔案系統,運作在特定的裝置上,或內建在儲存設備裡。

通過網絡連接配接到NAS的計算機系統都可以使用這種标準的通用快照,包括實體伺服器、虛拟機、桌上型電腦和筆記本電腦。它也非常容易操作和管理

1.2.4 基于磁盤陣列的快照

基于磁盤陣列的快照與基于NAS的快照有非常相似的優點,即所有與磁盤陣列相連的計算機系統都可以使用這種标準的通用快照功能。

基于存儲虛拟化的快照技術

1.2.5 基于儲存設備的快照

這裡所說的存儲虛拟化裝置主要用于SAN光纖網絡環境,不同于基于檔案(NFS)應用的網絡裝置,像F5 Network公司的Acopia ARX産品就是排除在這個範疇之外的。主要的存儲虛拟化軟硬體儲存設備(或融合了虛拟化功能的存儲系統)都支援快照能力。

1.2.6 基于主機虛拟化軟體的快照

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

1.2.7 基于資料庫的快照

在資料庫中,快照動作被稱為“SnapShot Isolation(快照隔離)”,這點在SQL Server中應用比較多(其6個事物隔離級别中的一個就是snapshot isolation)

1.3 快照的分類

快照分類的方式有很多種,比如按照是全量還是增量來區分為全量快照、增量快照。比較也可以分為實體快照和邏輯快照。

這裡按照常用的快照技術分類:

  • Clone or split mirror 克隆或鏡像分離
  • Copy-on-write with background copy 背景拷貝的複制寫
  • 寫時拷貝 (Copy-On-Write),COW
  • 寫時重定向 (Redirect-On-Write),ROW

二、快照實作原理

2.1 Clone or split mirror 克隆或鏡像分離

Clone(或Split-Mirror)快照所建立的是資料的完整副本。

  • clone:顧名思義,就是完整複制資料,需要在沒有寫入的時候複制,這樣資料才具有一緻性。
  • split mirror:
    如下圖,先建立一個原始卷的鏡像卷,每次寫磁盤的時候,都會往原始卷和快照卷同時寫入内容,當啟動快照時,則鏡像卷能快速脫離,生成一個快照卷。  
    然後重新建立一個原始卷的鏡像卷,等待下次快照。           
    快照介紹和原理
可以看到這種方案最大的缺點是很費磁盤空間,每個快照都需要占用和原始卷同樣的空間,而且寫資料時同時寫兩份,對寫入性能影響比較大。
優點是快照生成和恢複都友善,而且資料隔離很好,不存在快照卷和原始卷的互相影響。
           

2.2 Copy-on-write with background copy 背景拷貝的複制寫

該快照有兩個生成步驟,首先建立一個瞬時即可生成的COW快照,然後利用背景程序将資料卷的資料複制到快照空間,最後生成一份資料卷的克隆或鏡像。

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

2.3 COW快照(copy on write)

2.3.1 COW快照原理:
  1. 每個源資料卷都具有一張資料指針表(中繼資料),簡稱源資料指針表,表記錄就是指向相應源資料塊的位址指針。
  2. 在建立快照時,存儲子系統會建立源資料指針表的一個副本(中繼資料拷貝),作為快照卷的資料指針表,簡稱快照資料指針表。
  3. 在建立快照之後,這個快照就相當于一個可供上層應用通路的存儲邏輯副本,快照卷與源資料卷通過各自的指針表共享同一份實體資料。
  4. 當源資料卷中任意資料将要被改寫時,COW會在原始資料修改之前進行拷貝到快照卷中,然後将新資料寫入到源資料塊中覆寫原始資料,并且将原始資料在快照卷中的新位址更新到快照資料指針表記錄中,使快照時間點後更新的資料不會出現在快照卷中。
2.3.2 圖解原理
快照介紹和原理
  1. 在建立快照時,會同時建立快照卷和快照資料指針表。快照卷隻需要很少的存儲空間;
  2. 更改資料時,會拷貝舊資料到快照卷,源資料會被覆寫,快照指針表的位址會更新;插入新資料,自然是不會對快照卷有影響。
  3. 再次建立快照,會再次拷貝源資料指針表,新的修改會記錄到舊的快照卷和新的快照卷。
2.3.3 優缺點
  • 優點:原始卷實體塊連續,沒有碎片
  • 缺點:降低源資料卷的寫性能,每首次更新資料,至少進行兩次寫操作。
2.3.4 注意
  • 隻有首次對原始資料進行更改的資料會被拷貝到快照卷;
  • 源資料指針表至此至終都不會發生變化;
  • 如果執行了多次快照,那麼對一個資料的修改會有多次寫操作,導緻

    讀寫延時較大;

2.4 ROW快照(redirect on write)

2.4.1 ROW快照原理
  1. ROW 的實作原理與 COW 非常相似,差別在于ROW 對原始資料卷的首次寫操作,會将新資料重定向到預留的快照卷中,而非 COW 一般會使用新資料将原始資料覆寫。
  2. 是以,ROW 快照中的原始資料依舊保留在源資料卷中,并且為了保證快照資料的完整性,在建立快照時,源資料卷狀态會由讀寫變成隻讀的。
2.4.2 圖解原理
快照介紹和原理
  1. 建立快照時,也會copy一份源資料指針表作為快照資料指針表,此時兩張表的指針記錄都相同;
  2. 發生了寫操作,那麼新資料會直接被寫入到快照卷中,然後再更新源資料指針表的記錄,使其指向新資料所在的快照卷位址;
  3. 再次建立快照,會再次copy一份源資料指針表,新的修改會寫入到新的快照卷;
  4. 因為源資料指針表上有上次快照的修改和新增資料,是以顯然快照之間的關系是鍊式,恢複後面的快照需要源資料以及全面的快照作為基礎。
2.4.3 優缺點
  • 優點:寫性能基本沒有損耗,隻是修改指針
  • 缺點:沒有一個完整的快照卷,其快照之間的關系是鍊式,如果快照層級越多,進行快照恢複時的系統開銷會比較大;
2.4.4 删除中間快照原理

當不需要某個快照,或者因為快照太多,要删除一些快照的時候,根據我們上面所說的,每個快照都有部分資料,所有需要快照資料合并。

這裡懶得畫圖,直接使用ECS快照的删除快照原理:

假設需要删除快照鍊中的某一份快照S1,則流程示意圖和邏輯概覽如下所示:

快照介紹和原理
  1. 阿裡雲離線分析已删除快照S1的所有資料塊(Block),删除未被快照鍊中其他快照引用的資料塊。
  2. 添加快照S1髒資料塊到快照S2。剩下的快照一共記錄了10個Block的資訊:
  • 快照S0的6個
  • 快照S1的2個髒資料塊
  • 快照S2的2個。

2.5 COW和ROW小結及使用場景

  1. COW的快照卷存放的是原始資料,而 ROW的快照卷存放的是新資料。
  2. 根據以上的介紹,可以總結的是COW的寫性能開銷較大,但是存儲的資料是順序的,适合順序讀取。是以其适合讀多寫少場景。
  3. ROW的寫性能基本沒有損耗,但是其資料會變得非常離散(源資料指針表記錄被更新),是以其連續讀寫性能不如COW。
  4. 在分布式場景下,讀取不再是性能瓶頸,資料越分散,性能越高,是以現階段,ROW + 分布式存儲的快照方式是業界發展的主要方向。

參考:

https://www.ibm.com/developerworks/tivoli/library/t-snaptsm1/index.html https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/82847960 https://blog.csdn.net/wjk7186912/article/details/75902489 https://help.aliyun.com/document_detail/25392.html?spm=a2c4g.11186623.6.790.295a505cJOH4Nx