天天看點

snapshot原理 ZT

   snapshot是stk(storagetek)為其sva(shared virtual array)系列磁盤開發的一項技術,後來stk又不這項技術運用與其中低端的磁盤上,但是在非sva磁盤上這項技術實作起來有點别扭.snapshot與其他的磁盤快速拷貝技術(如:ibm的flashcopy,emc的timefinder,hds的shadowimage等)有本質的差別.

1、工作原理

       首先,snapshot會占用磁盤空間,占用空間的多少是由變化資料的多少決定;極端情況下,所有的資料都有變化,就需要有與target lun一樣大小的lun。

snapshot開始工作的時候,在raid控制器的cache中建立一個資料區域指針,與target的block一一對應;當某一個block的資料中要變化,controller先将原始資料複制到snapshot lun中,同時修改指針,指向snapshot lun中的block。

當host需要讀target lun中資料的時候,直接讀取targe lun;如果讀取snapshot lun中的資料,現查詢記憶體指針;資料沒有改變,就直接讀取target lun中的block,如果改變,就直接讀取snapshot lun中的block。

也就是說,snapshot的核心是建立一個指針清單,訓示讀取資料的位址。

提供一個瞬時資料的影像,隻有當資料要改變時,才複制到一個新的lun中;資料在一段時間内的變化不是太頻繁,就不會占用太多的空間。

  2、工作方式

   snapshot 有兩種方式,一種是将目标lun的資料完全複制一份,要占用相等地磁盤空間,典型的是emc timefinder

另一種是對指針的複制,占用空間很少。管理指針也與兩種方式,一種是在原資料被修改前,現将原資料複制到特定的快照區域(有有兩種方式,一種在單獨的磁盤分區,一種是在原檔案系統占用的空間),在修改快照中的指針,這樣可以不改變原檔案系統的指針結構,可以減少磁盤碎片,大多數快照都是這麼做的;另一種是修改的資料繼續寫到同檔案系統的空餘空間,修改檔案系統原來的指針,而不是修改快照的指針。我知道的隻有netapp這麼做,但他的特殊檔案系統結構可以做的很好,因為有nvram參與。

指針玩的最好的是veritas的checkpoint,hp的eva盤陣(來自compaq)和netapp wafl

     其實snapshot意思就是“快照”,是資料在某一時刻的狀況。進行snapshot可以用磁盤陣列内的軟體進行,例如emc的timefiner,ibm的flashcopy,hds的shadowimage;也可以在作業系統級利用volume manager軟體或file system的技術實作。實作方式也有兩種,一種是鏡像型的,也就是所有資料copy一份;另一種是指針型,上面談了很多了。例如veritas的volume manager snapshot是鏡像型的,而file system snapshot是指針型的。ibm的flashcopy好像也有兩種方式,ibm的flashcopy分為前台和背景拷貝兩種方式,前台拷貝是實際完全拷貝,背景就是說的那種建立指針的方式。背景方式下,如果你通路備份卷 的資料,發現不是最新的,就會先去從原卷上執行copy工作,達到通路 資料的正确行。背景拷貝對系統性能影響小一些。

    一般指針型的snapshot是隻讀的。指針型的snapshot,如果沒有備份而原盤壞了,資料應該是無法恢複的;而鏡像型的snapshot本身就是當時時刻的資料的全copy,是以原資料壞對它是沒有影響的。