天天看點

DRBD上路---安裝配置篇

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,如需轉載請自行聯系原作者