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