DRBD (Distributed Replicated Block Device)分布式複制塊裝置,它是 Linux 平台上的分散式儲存系統,通常用于高可用性(high availability, HA)叢集中。DRBD 類似磁盤陣列的RAID 1(鏡像),隻不過 RAID 1 是在同一台電腦内,而 DRBD 是透過網絡。
DRBD Resource:DRBD所具有的幾種屬性:
resource name:可以使用除空白字元外的任意ACSII表中的字元;
drbd裝置:drbd的裝置的通路路徑,裝置檔案/dev/drbd#;
disk:各節點為組成此drbd裝置所提供的塊裝置,通常是一個磁盤分區;
網絡屬性:節點間為了實作跨主機磁盤鏡像而使用的網絡配置;
注意:使用者空間工具與drdb與核心中使用的子產品版本要保持一緻,隻有在使用drbdadm工具時才會讀取配置檔案,對多個資源的公共配置,可以提取出來隻配置一次,通常儲存在Common中,此外還有global配置,這種配置跟資源本身沒有關系的;
drbd的組成部分:第一部分使用者空間工具;第二部分是核心子產品(在2.6.33及以後版本的核心直接在核心中就有了)
使用者空間工具:跟核心版本關系比較松散,隻要是能适用于CentOS 6及對應硬體平台的就OK;
核心子產品:必須與當下核心版本嚴格對應;其中drbd核心子產品代碼已經整合進Linux核心2.6.33以後的版本中,是以,如果您的核心版本高于此版本的話,你隻需要安裝管理工具即可;否則,您需要同時安裝核心子產品和管理工具兩個軟體包,并且此兩者的版本号一定要保持對應。
程序間通信的三種方式:消息序列、旗語及共享記憶體:
什麼是消息隊列:
消息被發送到隊列中,"消息隊列"是在消息的傳輸過程中儲存消息的容器。消息隊列管理器在将消息從它的源中繼到它的目标時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它;消息隊列就是一個消息的連結清單。可以把消息看作一個記錄,具有特定的格式以及特定的優先級。對消息隊列有寫權限的程序可以向消息隊列中按照一定的規則添加新消息;對消息隊列有讀權限的程序則可以從消息隊列中讀走消息。消息隊列是随核心持續的。
什麼是旗語、什麼是信号量:
Linux的旗語就是作業系統原理中的信号量,有PV操作,釋放旗語會自動喚醒下一個等待擷取旗語的程序;
為了防止出現因多個程式同時通路一個共享資源而引發的一系列問題,我們需要一種方法,它可以通過生成并使用令牌來授權,在任一時刻隻能有一個執行線程通路代碼的臨界區域。臨界區域是指執行資料更新的代碼需要獨占式地執行。而信号量就可以提供這樣的一種通路機制,讓一個臨界區同一時間隻有一個線程在通路它,也就是說信号量是用來調協程序對共享資源的通路的。
信号量是一個特殊的變量,程式對其通路都是原子操作,且隻允許對它進行等待(即P(信号變量))和發送(即V(信号變量))資訊操作。最簡單的信号量是隻能取0和1的變量,這也是信号量最常見的一種形式,叫做二進制信号量。而可以取多個正整數的信号量被稱為通用信号量。
什麼是共享記憶體:
顧名思義,共享記憶體就是允許兩個不相關的程序通路同一個邏輯記憶體。共享記憶體是在兩個正在運作的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間共享的記憶體通常安排為同一段實體記憶體。程序可以将同一段共享記憶體連接配接到它們自己的位址空間中,所有程序都可以通路共享記憶體中的位址,就好像它們是由用C語言函數malloc配置設定的記憶體一樣。而如果某個程序向共享記憶體寫入資料,所做的改動将立即影響到可以通路同一段共享記憶體的任何其他程序。
資料存儲的幾種類型:
DAS:(Direct Attach Srorage)直接附加存儲,DAS這種存儲方式與我們普通的PC存儲架構一樣,外部儲存設備都是直接挂接在伺服器内部總線上,資料儲存設備是整個伺服器結構的一部分。是指将儲存設備通過SCSI接口或光纖通道直接連接配接到一台計算機上。
NAS:(Network Attach Srorage)網絡附加存儲,它就是個檔案伺服器,是檔案系統級别,NAS和傳統的檔案存儲服務或直接儲存設備不同的地方在于NAS裝置上面的作業系統和軟體隻提供了資料存儲、資料通路、以及相關的管理功能;此外,NAS裝置也提供了不止一種檔案傳輸協定。NAS系統通常有一個以上的硬碟,而且和傳統的檔案伺服器一樣,通常會把它們組成RAID來提供服務;有了NAS以後,網絡上的其他伺服器就可以不必再兼任檔案伺服器的功能。NAS的型式很多樣化,可以是一個大量生産的嵌入式裝置,也可以在一般的計算機上運作NAS的軟體。
NAS用的是以檔案為機關的通信協定,例如像是NFS(在UNIX系統上很常見)或是SMB(常用于Windows系統)。NAS所用的是以檔案為機關的通信協定,大家都很清楚它們的運作模式,相對之下,存儲區域網絡(SAN)用的則是以區塊為機關的通信協定、通常是通過SCSI再轉為光纖通道或是iSCSI。(還有其他各種不同的SAN通信協定,像是ATA over Ethernet和HyperSCSI,不過這些都不常見。)
SAN:(Storage Area Network)存儲區域網絡,把SCSI協定借助于其它網絡協定實作傳送的;1991年,IBM公司在S/390伺服器中推出了ESCON(Enterprise System Connection)技術。它是基于光纖媒體,最大傳輸速率達17MB/s的伺服器通路存儲器的一種連接配接方式。在此基礎上,進一步推出了功能更強的ESCON Director(FC SWitch),建構了一套最原始的SAN系統。
它是一種高速網絡或子網絡,提供在計算機與存儲系統之間的資料傳輸。儲存設備是指一台或多台用以存儲計算機資料的磁盤裝置,通常指磁盤陣列。
DAS、NAS和SAN三種存儲方式比較
存儲應用最大的特點是沒有标準的體系結構,這三種存儲方式共存,互相補充,已經很好滿足企業資訊化應用。
從 連接配接方式上對比,DAS采用了儲存設備直接連接配接應用伺服器,具有一定的靈活性和限制性;NAS通過網絡(TCP/IP,ATM,FDDI)技術連接配接儲存設備和應用伺服器,儲存設備位置靈活,随着萬兆網的出現,傳輸速率有了很大的提高;SAN則是通過光纖通道(Fibre Channel)技術連接配接儲存設備和應用伺服器,具有很好的傳輸速率和擴充性能。三種存儲方式各有優勢,互相共存,占到了磁盤存儲市場的70%以上。SAN和NAS産品的價格仍然遠遠高于DAS.許多使用者出于價格因素考慮選擇了低效率的直連存儲而不是高效率的共享存儲。
客觀的說,SAN和NAS系統已經可以利用類似自動精簡配置(thin provisioning)這樣的技術來彌補早期存儲配置設定不靈活的短闆。然而,之前它們消耗了太多的時間來解決存儲配置設定的問題,以至于給DAS留有足夠的時間在資料中心領域站穩腳跟。此外,SAN和NAS依然問題多多,至今無法解決。
DRBD在遠端傳輸上支援三種模式:
1、異步:所謂異步就是指資料隻需要發給本地的TCP/IP協定棧就可以了,本地存完就OK;而DRBD隻需要把資料放到TCP/IP協定棧,放到發送隊列中準備發送就傳回了;這種方式更高效;
2、半同步:資料已經發送到對方的TCP/IP協定棧上,對方的TCP/IP協定棧已經把資料接收下來了就傳回,資料存不存下來就不管了;
3、同步:資料必須確定對方把資料寫入對方的磁盤再傳回的就叫同步;這種方式資料更可靠;
官方提供的DRBD的工作流程圖:
==================DRBD + Corosync、Pacemaker實作DRBD角色自動切換==============
在運作drbd時,他并不會自動完成角色的切換,那怎麼讓它具有這樣的功能呢,這裡就得用到Corosync+Pacemaker了,結合corosync+pacemaker的drbd就可以自動完成角色的切換,一旦一個drbd的節點出現故障就可以自動切換到别一個節點上繼續提供服務,那接下來我們就來配置一下drbd + corosync、pacemaker的實作;
第一步:配置兩個節點上的雙機互信,這步我前面的博文中已經寫到過了,可以參數前面的博文:;
第二步:安裝DRBD程式包,這一步一定要格外注意版本比對問題:
核心子產品程式包一定要跟你的系統核心保持一緻,uname -r檢視你的核心版本,核心子產品的版本必須要嚴格對應,而使用者空間的子產品就不那麼嚴格要求了,兩個節點的時間也需要保持一緻性;
drbd-8.4.3-33.el6.x86_64.rpm -->使用者空間工具
drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm -->核心空間子產品,這個必須要跟核心版本保持一緻
# yum -y install drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm 每個節點都需要安裝上這兩個程式包
安裝完成可以看一下drbd的配置檔案:
儲存退出。
第三步:為兩個節點準備等同大小的磁盤分區,分區好之後不需要格式化,分好區并且識别出就可以了;
第四步:根據上面的描述,我們要給它定義資源,包括資源名,drbd裝置,disk以及網絡屬性,主要是這四個方面;
定義一個資源/etc/drbd.d/,内容如下:
儲存退出,複制一份到别一個節點上,它們的配置檔案要保持一緻:
注意:哪個是主節點哪個就可以挂載使用,不是主節點的連挂載都不可以挂載;
OK、看到兩個節點上的資料正在同步了,磁盤越大同步時需要時間越久;
第五步:在其中一個節點上進行格式化:
好了,到這裡就完成的drbd的工作模式就這麼順利的完成了,我不知道我是否說明白了!
要完成drbd的角色自動切換得要借助于corosync+pacmaker,那接下來我們就來安裝配置corosync和pacemaker吧;
為了讓高可用的配置順利,兩個節點都不能設定為主的,而且都不能啟動,也不能開機自動啟動,是以解除安裝降級:
第六步:安裝corosync + pacemaker,這裡直接用yum來安裝,兩個節點都要安裝上;
啟動Corosync,每個節點都需要啟動;
第七步:接下來進入crm指令行接口定義資源:
# crm status 檢視節點的運作狀态
OK,再檢視一下它們現在的狀态,node2是主的,而node1是從的,可以到node2上檢視檔案是否已經挂載上去的,驗證一下,再建立或修改幾個檔案進去都可以做一下測試的,而後再讓node2停掉,看看node1是否會自動切換為主的:
改變節點的主從位置:
結束:
對以上的操作過程可能存在不到之處,如果你發現有什麼不對的或做得不到位的可以留言的,一起交流學習,配置到這裡基本上可以完成了一個drbd的角色自動切換了,實作高可用。
本文出自 “” 部落格,請務必保留此出處