DRBD的全稱為:Distributed Replicated Block Device (DRBD)分布式塊裝置複制,DRBD是由核心子產品和相關腳本而構成,基于軟體的,無共享(shared-nothing),對硬碟、分區、邏輯卷進行複制鏡像的存儲解決方案。它允許使用者在遠端機器上建立一個本地塊裝置的實時鏡像。與心跳連接配接結合使用,也可以把它看作是一種網絡RAID。
工作原理:Drbd 負責接收資料,把資料寫到本地磁盤,然後發送給另一個主機。另一個主機再将資料存到自己的磁盤中。DRBD不需要任何的硬體投資,利用drbd作為共享儲存設備,比存儲網絡要實惠的多;原理圖:
<a href="http://blog.51cto.com/attachment/201311/181538109.png" target="_blank"></a>
安裝部分:
如果系統核心(linux)版本低于2.6.33,在安裝軟體之前需要加載DRBD子產品,如果高于(或等于)2.6.33,則隻安裝用戶端軟體。
如果沒有安裝DRBD子產品,會在啟動drbd時出現如下錯誤:
Starting DRBD resources: Can not load the drbd module.
從www.drbd.org下載下傳drbd-8.3.8.1.tar.gz,分别在兩個節點上編譯安裝:
注意,DRBD需要核心子產品支援,2.6.33後的Linux核心已内置DRBD的支援,在此版本前,安裝時需要kernel-devel包,同時編譯drbd時要帶上--with-km。
#./configure --prefix=/ --with-km
#make
#make install
安裝成功之後/sbin目錄下面有drbdadm,drbdmeta,drbdsetup指令,以及/etc/init.d/drbd啟動腳本。(多半時候是在使用drbdadm ,它其實調用的是drbdsetup drbdmeta兩個指令)
在這裡我準備的是兩個實體分區,分區大小必須一緻;
配置部分:
/etc/drbd.conf
global {
usage-count no; #統計drbd的使用
}
common {
syncer {rate 100M;} #同步速率,機關是位元組
resource r0 {
protocol C; #使用協定C.表示收到遠端主機的寫入确認後,則認為寫入完成.
disk {
on-io-error detach;
net { #通信驗證算法資訊,及腦裂處理資訊
cram-hmac-alg "sha1";
shared-secret "FootFunFactory";
after-sb-0pri discard-younger-primary;
after-sb-1pri call-pri-lost-after-sb;
rr-conflict disconnect;
syncer {
rate 100M;
al-extents 257;
on drbd-master{ #具體主機磁盤資訊,後面是主機名,在/etc/hosts 注明;端口是7789
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.101:7789;
meta-disk internal;
on centos.weipengfei.net{
device /dev/drbd0; #device名字必須是drbd開頭,後面是數字,從0開始,最大為147
disk /dev/sdc;
address 192.168.6.135:7789;
} 配置的詳細資訊,後續再談;
啟動之前的操作:
分别在兩台主機的drbd分區上,建立DRBD記錄資訊的資料塊,分别在兩台主機上運作:
drbdadm create-md r0
在兩節點分别啟動服務:
/etc/init.d/drbd start
檢視節點狀态:
cat /proc/drbd
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2007644
設定主節點:
于預設沒有主次節點之分,因而需要設定兩個主機的主次節點,選擇需要設定為主節點的主機,然後執行如下指令:
drbdadm -- --overwrite-data-of-peer primary all
第一次執行完此指令後,在後面如果需要設定哪個是主節點時,就可以使用另外一個指令:
/sbin/drbdadm primary r0
執行此指令後,開始同步兩台機器對應磁盤的資料
如果第一次設定主備節點時使用“/sbin/drbdadm primary r0”指令,那麼會提示如下錯誤:
0: State change failed: (-2) Need access to UpToDate data Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
隻要第一次用上面指令成功後,以後就可以用“/sbin/drbdadm primary r0”指令了。
格式化檔案系統:
由于mount操作隻能在主節點進行,是以隻有設定了主節點後才能格式化磁盤分區,然後挂載:
mkfs.ext3 /dev/drbd0
mount /dev/drbd0 /mnt
主備節點切換
1、停止drbd服務的切換:
關閉主節點服務,此時挂載的drbd分區就自動在主節點解除安裝了,然後在備用節點執行切換指令:
當在備用節點執行切換到主節點指令後,原來的主用節點自動變為備用節點。無需在主用節點再次執行切換到備用節點的指令。
2、正常切換
在主節點解除安裝磁盤分區,然後執行
drbdadm secondary all
如果不執行這個指令,直接在備用節點執行切換到主節點的指令,會報錯:
2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11
接着,在備用節點執行
drbdadm primary all
最後在備用節點挂載磁盤分區即可;
本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1322770,如需轉載請自行聯系原作者