您好,登錄后才能下訂單哦!
這篇文章主要介紹“ 服務器的快照技術怎么實現”,在日常操作中,相信很多人在 服務器的快照技術怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答” 服務器的快照技術怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
什么是快照技術
SNIA(Storage Networking Industry Association)對快照(Snapshot)的定義是:關于指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數據的一個副本,也可以是數據的一個復制品。
快照的作用
快照的作用主要是能夠進行在線數據備份與恢復。當存儲設備發生應用故障或者文件損壞時可以進行快速的數據恢復,將數據恢復某個可用的時間點的狀態。快照的另一個作用是為存儲用戶提供了另外一個數據訪問通道,當原數據進行在線應用處理時,用戶可以訪問快照數據,還可以利用快照進行測試等工作。所有存儲系統,不論高中低端,只要應用于在線系統,那么快照就成為一個不可或缺的功能。
快照的實現方式
當前實現快照有主要有兩種技術,一種是第一次寫時復制(Copy On First Write,COFW),有時簡稱為寫時復制(Copy On Write,COW)。即在數據第一次寫入到某個存儲位置時,首先將原有的內容讀取出來,寫到另一位置處(為快照保留的存儲空間,此文中我們稱為快照空間),然后再將數據寫入到存儲設備中。而下次針對這一位置的寫操作將不再執行寫時復制操作。這種技術常在計算機相關的技術中經常初使用,其基本原理大同小異,只是面向的對象不同,適用的場合不一樣。
從COW 的執行過程我們可以知道,這種實現方式在第一次寫入某個存儲位置時需要完成一個讀操作(讀原位置的數據),兩個寫操作(寫原位置與寫快照空間),如果寫入頻繁,那么這種方式將非常消耗IO時間。因此可推斷,如果預計某個卷上的I/O多數以讀操作為主,寫操作較少,這種方式的快照實現技術是一個較理想的選擇,因為快照的完成需要較少的時間。除此之外,如果一個應用易出現寫入熱點,即只針對某個有限范圍內的數據進行寫操作,那么COW的快照實現方式也是較較理想的選擇。因為其數據更改都局限在一個范圍內,對同一份數據的多次寫操作只會出現一次寫時復制操作。下圖是寫時復制的示意圖:
但是這種方式的缺點也是非常明顯的。如果寫操作過于分散且頻繁,那么 COW 造成的開銷則是不可忽略的,有時甚至是無法接受的。因此在應用時,則需要綜合評估應用系統的使用場景,以判斷這種方式的快照是否適用。
快照實現技術中的另一種技術是 I/O 重定向(I/O Redirect)。即將讀寫操作重新定向到另一個存儲空間中。在一個快照生成期間,所有的寫操作將被重定向到另一個介質,而讀操作是否需要讀重定向,則需要根據讀取的位置是否有過自上次快照以來的寫重定向,必須對有過寫重定向的位置進行讀重定向,否則不需要進行讀定向。當要創建一個快照時,則將自上次快照以來所有的重定向寫數據所對應在源介質中的數據復制出來生成這個時間點的快照,然后再將這些重定向寫數據寫回到源介質中的相應位置上,從而完成一個快照生成過程。下圖中顯示了IO重定向的執行過程。
從上面的過程來看,關鍵的性能影響在于快照生成時的四次I/O操作(一次讀源介質,一次寫快照數據,一次讀快照介質,一次寫源介質),另一個則是重定向的計算工作。這種方式雖然看起來最后生成快照時的I/O操作較多,但是考慮到這個操作是在生成快照時才會發生,特別是快照生成時可以對I/O操作進行排序,可以使得對介質的讀寫得到較好的優化,因此使影響很小。而對于重定向的計算操作對于當下的計算能力來說,不會成為一個性能的瓶頸問題。因此這種快照實現方式在非快照執行期間的影響甚小。因此這種方式比較適合Write-Intensive(寫密集)類型的存儲系統。下圖是快照生成過程的示意圖:
SNIA 將快照的實現方式表述為:鏡像分離(split mirror)、改變塊(changed block)、并發(concurrent)三大類。后兩種在實現時其實質就是寫時復制及I/O重定向。對于 split mirror 的方式,由于其靈活性以及開銷問題,在實際的存儲系統中,并不實用。
快照的實現層次
計算機的存儲結構是一個類似于 TCP/IP 一樣的棧結構。棧中包括硬件與軟件部分。棧中不同層為上層提供服務,同時利用下層的接口(如下圖)。因此在實現上,快照可以在不同的棧層上實現。但是不同的層其效果及特點是不一樣的。
一般來說,在應用層不太合適實現快照功能。因為不同的應用是千差萬別的,因此需要針對不同的應用實現快照功能,這個代價也太高了。但在應用層實現快照也并不是說一無用處,如在應用層實現快照的一個典型的例子就是 vmWare 虛擬化軟件中的快照功能。只是這種快照功能應用在存儲系統中不現實。
其次在文件系統層實現快照與應用也是具有同樣的缺點,就是需要針對不同的文件系統實現快照功能,這樣的代價也很大。實現的快照的功能的文件系統基本上都是一些專用系統為者專為某個特定功能實現的文件系統。 在這個層級上實現快照,缺乏靈活性和可擴展性。這個比較典型的例子就是 ZFS。
而較為適宜實現快照功能的層應該為卷管理層以及物理層。在這兩個層中都不與特定的應用及文件系統相關。這里比較典型的例子有Linux 的LVM。而在硬件層次上實現快照又通常有許多種,在這個層次上實現的快照一般為專用系統,好處是性能是各個方式中最好的。但是在這個層次上實現的快照也有一個不可避免的缺點,那就是由于不與特定的應用及文件系統關聯,因此其就無法理解上層的應用邏輯,也就無法保證每個快照都處于數據一致性狀態的。但是這個缺點是可以通過其他的方式減少或者解決的,比如在生成快照之前先對數據進行刷新操作,或者在恢復快照時對文件系統進行一致性檢查等。
到此,關于“ 服務器的快照技術怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。