天天看點

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——第3章 資料安全工具DRBD、extundelete 3.1 資料鏡像軟體DRBD介紹

本節書摘來自華章計算機《高性能linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》一書中的第3章,第3.1節,作者:高俊峰著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

分布式塊裝置複制(distributed replicated block device,drbd),是一種基于軟體的、基于網絡的塊複制存儲解決方案,主要用于對伺服器之間的磁盤、分區、邏輯卷等進行資料鏡像。當使用者将資料寫入本地磁盤時,還會将資料發送到網絡中另一台主機的磁盤上,這樣本地主機(主節點)與遠端主機(備節點)的資料就可以保證明時同步,當本地主機出現問題,遠端主機上還保留着一份相同的資料,可以繼續使用,保證了資料的安全。

3.1.1 drbd的基本功能

drbd的核心功能就是資料的鏡像,其實作方式是通過網絡來鏡像整個磁盤裝置或磁盤分區,将一個節點的資料通過網絡實時地傳送到另一個遠端節點,保證兩個節點間資料的一緻性,這有點類似于一個網絡raid1的功能。對于drdb資料鏡像來說,它具有如下特點:

實時性。當應用對磁盤資料有修改操作時,資料複制立即發生。

透明性。應用程式的資料存儲在鏡像裝置上是透明和獨立的。資料可以存儲在基于網絡的不同伺服器上。

同步鏡像。當本地應用申請寫操作時,同時也在遠端主機上開始進行寫操作。

異步鏡像。當本地寫操作已經完成時,才開始對遠端主機進行寫操作。

3.1.2 drbd的構成

drbd是linux核心存儲層中的一個分布式存儲系統,具體來說由兩部分構成,一部分是核心模闆,主要用于虛拟一個塊裝置;一部分是使用者空間管理程式,主要用于和drbd核心子產品通信,以管理drbd資源。在drbd中,資源主要包含drbd裝置、磁盤配置、網絡配置等。

一個drbd系統有兩個以上節點構成,分為主用節點和備用節點兩個角色,在主用節點上,可以對drbd裝置進行不受限制的讀寫操作,可以用來初始化、建立、挂載檔案系統。在備用節點上,drbd裝置無法挂載,隻能用來接收主用節點發送過來的資料,也就是說備用節點不能用于讀寫通路,這樣做的目的是保證資料緩沖區的一緻性。

主用節點和備用節點不是固定不變的,可以通過手工方式改變節點的角色,備用節點可以更新為主用節點,同時主用節點也可以降級為備用節點。

drbd裝置在整個drbd系統中位于實體塊裝置之上,檔案系統之下,在檔案系統和實體磁盤之間形成了一個中間層,當使用者在主用節點的檔案系統中寫入資料時,資料被正式寫入磁盤前會被drbd系統截獲,同時,drbd在捕捉到有磁盤寫入的操作時,就會通知使用者空間管理程式把這些資料複制一份,寫入遠端主機的drbd鏡像,然後存入drbd鏡像所映射的遠端主機磁盤。圖3-1詳細展示了drbd系統的運作結構。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——第3章 資料安全工具DRBD、extundelete 3.1 資料鏡像軟體DRBD介紹

drbd負責接收資料,把資料寫到本地磁盤,然後發送給另一台主機。另一台主機再将資料存到自己的磁盤中。目前,drbd每次隻允許對一個節點進行讀寫通路,這對于通常的故障切換高可用性叢集來講已經足夠用了。以後的版本将支援兩個節點進行讀寫存取。

3.1.3 drbd與現在的叢集的關系

drbd由兩個或兩個以上節點構成,與ha叢集類似,也有主用節點和備用節點之分,因而經常用于高可用叢集和負載均衡叢集系統中作為共享儲存設備。由于drbd系統是在ip網絡中運作,是以,在叢集中使用drbd作為共享儲存設備,不需要任何硬體投資,可以節約很多成本,因為在價格上ip網絡要比專用的存儲網絡更經濟。

另外,drbd也可以用于資料備份、資料容災等方面。

3.1.4 drbd的主要特性

drbd系統在實作資料鏡像方面有很多有用的特性,我們可以根據自己的需要和應用環境,選擇适合自己的功能特性。下面依次介紹drbd幾個非常重要的應用特性。

1 . 單主模式

這是使用最頻繁的一種模式,主要用在高可用叢集的資料存儲方面,解決叢集中資料共享的問題,在這種模式下,叢集中隻有一個主用節點可以對資料進行讀寫操作,可以用在這種模式下的檔案系統有ext3、ext4、xfs等。

2 . 雙主模式

這種模式隻能在drbd8.0以後的版本中使用,主要用在負載均衡叢集中,解決資料共享和一緻性問題。在這種模式下,叢集中存在兩個主用節點,由于兩個主用節點都有可能對資料進行并發的讀寫操作,是以單一的檔案系統就無法滿足需求了,此時就需要共享的叢集檔案系統來解決并發讀寫問題。常用在這個模式下的檔案系統有gfs、ocfs2等,通過叢集檔案系統的分布式鎖機制就可以解決叢集中兩個主用節點同時操作資料的問題。

3 . 複制模式

drbd提供了三種不同的複制方式,分别是:

協定a,隻要本地磁盤寫入已經完成,資料包已經在發送隊列中,則認為一個寫操作過程已經完成。

這種方式在遠端節點故障或者網絡故障時,可能造成資料丢失,因為要寫入到遠端節點的資料可能還在發送隊列中。

協定b,隻要本地磁盤寫入已經完成,并且資料包已經到達遠端節點,則認為一個寫操作過程已經完成。

這種方式在遠端節點發生故障時,可能造成資料丢失。

協定c,隻有本地和遠端節點的磁盤已經都确認了寫操作完成,則認為一個寫操作過程已經完成。

這種方式沒有任何資料丢失,就目前而言應用最多、最廣泛的就是協定c,但在此方式下磁盤的i/o吞吐量依賴于網絡帶寬。建議在網絡帶寬較好的情況下使用這種方式。

4 . 傳輸完整性校驗

這個特性在drbd8.2.0及以後版本中可以使用,drbd使用md5、sha-1或crc-32c等加密算法對資訊進行終端到終端的完性驗證。利用這個特性,drbd對每一個複制到遠端節點的資料都生成資訊摘要,同時,遠端節點也采用同樣的方式對複制的資料塊進行完整性驗證,如果驗證資訊不對,就請求主節點重新發送。通過這種方式保證鏡像資料的完整性和一緻性。

5 . 腦裂通知和自動修複

由于叢集節點間的網絡連接配接臨時故障、叢集軟體管理幹預或者人為錯誤,導緻drbd兩個節點都切換為主用節點而斷開連接配接,這就是drbd的腦裂問題。發生腦裂意味着資料不能從主用節點複制到備用節點,這樣會導緻drdb兩個節點的資料不一緻,并且無法合并。

在drbd8.0及更高版本,實作了裂腦自動修複功能,在drbd8.2.1之後,又實作了裂腦通知特性,在出現腦裂後,一般建議通過手工方式修複腦裂問題,為了徹底解決腦裂問題。在某些情況下腦裂自動修複還是比較可取的,drbd自動修複腦裂的政策如下:

丢棄比較新的主用節點所做的修改。在這種模式下,當網絡重建立立連接配接并且發現了腦裂後,drbd會丢棄自動切換到主用節點上的主機所修改的資料。

丢棄老的主用節點所做的修改。在這種模式下,drbd會丢棄首先切換到主用節點上的主機所修改的資料。

丢棄修改比較少的主用節點的修改。在這種模式下,drbd會首先檢查兩個節點的資料,然後丢棄修改比較少的主機上的資料。

一個節點資料沒有發生變化的情況下完美修複腦裂。在這種模式下,如果其中一台主機在發生裂腦時沒有發生資料修改,那麼就可以完美解決腦裂問題。

繼續閱讀