歡迎您光臨本站 註冊首頁

DRBD的實驗歷程

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0
一、場景:

  兩台PC機各有一個空閑分區,把他們做成DRBD。每台PC機有兩個網卡,以便於直接互聯。
drbd 主機列表和預備分區IP 地址主機名
主機1(primary)|/dev/sda4eth0:172.16.0.178
eth1:192.168.0.1
drbd_test_1
主機2(secondary)|/dev/hdb2eth0:172.16.0.179
eth1:192.168.0.2
drbd_test_2


二、安裝,還是很順利的:(兩台機器都要做,呵呵,廢話)
 1.tar zxf drbd-8.3.1.tar.gz
 2.cd drbd-8.3.1
 3.make
 4.make all install
 5.檢查一下:modprobe drbd 然後:lsmod |grep drbd看看有沒有了

三、初始的配置,也比較簡單了(/etc/drbd.conf,兩台機器一樣的):
 global {
}

common {
 syncer { rate 100M; }
}

resource db {
 protocol C;
 startup { wfc-timeout 0; degr-wfc-timeout 120; }
 disk { on-io-error detach; }
 syncer { rate 100M; }

 on drbd_test_1 {
 device /dev/drbd0;
 disk /dev/sda4;
 address 192.168.0.1:7791;
 meta-disk internal;
 }

 on drbd_test_2 {
 device /dev/drbd0;
 disk /dev/hdb2;
 address 192.168.0.2:7791;
 meta-disk internal;
 }
}

四、準備啟動:
創建相應的元數據保存的數據塊,兩個機器都要執行一下:drbdadm create-md db。按照提示信息直接按回車即可

五、啟動drbd服務:
兩台機器都:service drbd start
查看啟動狀態:service drbd status 或者 cat /proc/drbd

六、定義主節點:
在server1上設置它為主節點:drbdadm primary db。
第一次執行會出現如下錯誤:
State change failed: (-2) Refusing to be Primary without at least one UpToDate disk Command 'drbdsetup /dev/drbd0 primary' terminated with exit code 11
此時要先用drbdsetup 來做,之後就可以用drbaadmin了:drbdsetup /dev/drbd0 primary –o
查看狀態可以發現此時兩塊磁碟已經開始同步,時間會比較長的

七、創建設備文件:(兩台都要創建,本例中創建一個drbd0就好)
mknod /dev/drbd0 b 147 0
mknod /dev/drbd1 b 147 1
........
創建多個:for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i ; done

八、格式化drbd分區:(主server上執行,從設備會同步執行)
mkfs.ext3 /dev/drbd0

九、掛載:(主server上執行,從設備是不讓掛載的)
mount /dev/drbd0 /data
注意:secondary節點上不允許對drbd設備進行任何操作,包括只讀。所有的讀寫操作只能在primary節點上進行。知道primary節點掛掉之後,secondary節點才能提升成為primary節點,繼續進行讀寫操作

十、實驗歷程
1.把primary的eth1給ifdown了,然後直接在secondary上進行主的提升,並也給mount了,發現在primary上測試拷入的文件確實同步過來了。之後把primary的eth1恢復后,發現沒有自動恢復主從關係,經過支持查詢,發現出現了drbd檢測出現了Split-Brain的狀況,兩個節點各自都standalone了。
手動恢復Split-Brain狀況:
在secondary上:
drbdadmin secondary db
drbdadmin -- --discard-my-data connect db
在primary上:
drbdadmin connect db

2.突然想到一點:實驗的兩個分區可以不一樣大,應該將小的設置為primary,因為如果primary比secondary的空間大,那超出的部分。。。。不敢想。

3.drbd狀態的意義:

輸出文件上面最開始是drbd的版本信息,然後就是數據同步的一些狀態信息:

cs — connection state
st — node state (local/remote)
ld — local data consistency
ds — data consistency
ns — network send
nr — network receive
dw — disk write
dr — disk read
pe — pending (waiting for ack)
ua — unack』d (still need to send ack)
al — access log write count

4.兩個節點切換的過程:
 a)在primary上umount,然後執行drbdadm secondary all,改成secondary模式
 b)在secondary上執行drbdadm primary all 改成primary模式,再mount文件系統




[火星人 ] DRBD的實驗歷程已經有439次圍觀

http://coctec.com/docs/service/show-post-4538.html