DRBD 配置
來(lái)源: ChinaUnix博客 日期: 2008.06.27 23:16 (共有條評論)
我要評論DRBD是一種塊設備,可以被用于高可用(HA)之中.它類(lèi)似于一個(gè)網(wǎng)絡(luò )RAID-1功能.當你將數據寫(xiě)入本地
文件系統時(shí),數據還將會(huì )被發(fā)送到網(wǎng)絡(luò )中另一臺主機上.以相同的形式記錄在一個(gè)文件系統中.
本地(主節點(diǎn))與遠程主機(備節點(diǎn))的數據可以保證實(shí)時(shí)同步.當本地系統出現故障時(shí),遠程主機上還會(huì )
保留有一份相同的數據,可以繼續使用.
在高可用(HA)中使用DRBD功能,可以代替使用一個(gè)共享盤(pán)陣.因為數據同時(shí)存在于本地主機和遠程主機上,
切換時(shí),遠程主機只要使用它上面的那份備份數據,就可以繼續進(jìn)行服務(wù)了.
DRBD的工作原理如下圖:
+--------+
| 文件系統 |
+--------+
|
V
+----------+
| 塊設備層 |
| (/dev/drbd1) |
+----------+
| |
| |
V V
+----------+ +-----------+
| 本地硬盤(pán) | | 遠程主機硬盤(pán) |
| (/dev/hdb1) | | (/dev/hdb1) |
+----------+ +-----------+
==========================================================二. DRBD的安裝 下載地址
http://oss.linbit.com/drbd/# tar xvf drbd-8.0.0.tar.tar
# cd drbd-8.0.0
# make
# make installmake install執行之后:
drbd.ko被安裝到/lib/modules/$KernelVersion/kernel/drivers/block下.
drbd相關(guān)工具(drbdadm,drbdsetup)被安裝到/sbin下.
并會(huì )在/etc/init.d/下建立drbd啟動(dòng)腳本.
=============================================================1.DRBD使用的硬盤(pán)分區
你需要為本地主機和遠程主機,指定一個(gè)DRBD使用的硬盤(pán)分區.這兩個(gè)分區的大小必須相同.
我們指定兩臺主機的/dev/sdb1 分區作為DRBD的使用的分區.這兩個(gè)分區大小都為8G.
2.drbd.conf配置文件
DRBD運行時(shí),會(huì )讀取一個(gè)配置文件/etc/drbd.conf.這個(gè)文件里描述了DRBD設備與硬盤(pán)分區的映射關(guān)系,
和DRBD的一些配置參數.
下面是一個(gè)drbd.conf文件的簡(jiǎn)單示例:
2.6.11-1.1369_FC4操作系統,主機名為test7,IP地址為 172.18.3.208,DRBD分區為/dev/sdb1.
2.6.11-1.1369_FC4操作系統,主機名為test8,IP地址為 172.18.3.205,DRBD分區為/dev/sdb1.
172.18.3.208 配置文件如下
[root@test7 ~]# cat /etc/drbd.conf
# 是否參加DRBD使用者統計.默認是yes
global { usage-count yes; }
# 設置主備節點(diǎn)同步時(shí)的網(wǎng)絡(luò )速率最大值,單位是字節.
common { syncer { rate 1M; } }
# 一個(gè)DRBD設備(即:/dev/drbdX),叫做一個(gè)"資源".里面包含一個(gè)DRBD設備的主備節點(diǎn)的
# 相關(guān)信息.
#
resource r0 {
# 使用協(xié)議C.表示收到遠程主機的寫(xiě)入確認后,則認為寫(xiě)入完成.
protocol C;
net {
# 設置主備機之間通信使用的信息算法.
cram-hmac-alg sha1;
shared-secret "FooFunFactory";
}
# 每個(gè)主機的說(shuō)明以"on"開(kāi)頭,后面是主機名.在后面的{}中為這個(gè)主機的配置.
on test7 {
# /dev/drbd1使用的磁盤(pán)分區是/dev/hdb1
device /dev/drbd1;
disk /dev/sdb1;
# 設置DRBD的監聽(tīng)端口,用于與另一臺主機通信
address 172.18.3.208:7898;
meta-disk internal;
}
on test8 {
device /dev/drbd1;
disk /dev/sdb1;
address 172.18.3.205:7898;
meta-disk internal;
}
}
172.18.3.205 配置文件同上
===========================================================3.DRBD的啟動(dòng)
在啟動(dòng)DRBD之前,你需要分別在兩臺主機的hdb1分區上,創(chuàng )建供DRBD記錄信息的數據塊.分別在
兩臺主機上執行:
[root@test7 local]#drbdadm create-md r0
[root@test8 local]#drbdadm create-md r0 “r0”是我們在drbd.conf里定義的資源名稱(chēng).
現在我們可以啟動(dòng)DRBD了,分別在兩臺主機上執行: [root@test7 local]#/etc/init.d/drbd start
[root@test8 local]#/etc/init.d/drbd start ========================================================
現在可以查看DRBD的狀態(tài),然后在test7主機上執行: [root@test7 ~]# cat /proc/drbd
version: 8.0.0 (api:86/proto:86)
SVN Revision: 2713 build by
[email=root@test7]root@test7[/email]
, 2008-06-27 14:07:14 1: cs:Connected st: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
resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
”/proc/drbd”中顯示了drbd當前的狀態(tài).第一行的st表示兩臺主機的狀態(tài),都是”備機”狀態(tài).
ds是磁盤(pán)狀態(tài),都是”不一致”狀態(tài).
這是由于,DRBD無(wú)法判斷哪一方為主機,以哪一方的磁盤(pán)數據作為標準數據.所以,我們需要初始化
一個(gè)主機.在test7上執行: [root@test8 local]#drbdsetup /dev/drbd1 primary -o[root@test7 ~]# cat /proc/drbd
version: 8.0.0 (api:86/proto:86)
SVN Revision: 2713 build by
[email=root@test7]root@test7[/email]
, 2008-06-27 14:07:14 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:18528 nr:0 dw:0 dr:18528 al:0 bm:1 lo:0 pe:0 ua:0 ap:0
[>...................] sync'ed: 0.3% (8170/8189)M
finish: 6:46:43 speed: 336 (324) K/sec
resync: used:0/31 hits:1156 misses:2 starving:0 dirty:0 changed:2
act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0 主備機狀態(tài)分別是”主/備”,主機磁盤(pán)狀態(tài)是”實(shí)時(shí)”,備機狀態(tài)是”不一致”.
在第3行,可以看到數據正在同步中,即主機正在將磁盤(pán)上的數據,傳遞到備機上.現在的進(jìn)度是0.3%.=================================================稍等一會(huì ),在數據同步完后,再查看一下test7的DRBD狀態(tài): [root@test7 ~]# cat /proc/drbd
version: 8.0.0 (api:86/proto:86)
SVN Revision: 2713 build by
[email=root@test7]root@test7[/email]
, 2008-06-27 14:07:14 1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:497928 nr:0 dw:0 dr:497928 al:0 bm:31 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:31091 misses:31 starving:0 dirty:0 changed:31
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0磁盤(pán)狀態(tài)都是”實(shí)時(shí)”,表示數據同步完成了.
======================================================
你現在可以把主機上的DRBD設備掛載到一個(gè)目錄上進(jìn)行使用.備機的DRBD設備無(wú)法被掛載,因為它是
用來(lái)接收主機數據的,由DRBD負責操作.
在test7上執行: [root@test7 /]# cd /mnt
[root@test7 mnt]# mkdir drbd1
[root@test7 mnt]# mount /dev/drbd1 /mnt/drbd1/
[root@test7 mnt]# cd drbd1/
[root@test7 drbd1]# touch aa
[root@test7 drbd1]# ls
aa lost+found zai test8上執行[root@test8 mnt]# /etc/init.d/drbd stop
Stopping all DRBD resources.
[root@test8 mnt]# mkdir drbd1
[root@test8 mnt]# mount /dev/sdb1 /mnt/drbd1/
[root@test8 mnt]# cd drbd1/
[root@test8 drbd1]# ls
aa lost+found可以看到,在主機test7上產(chǎn)生的文件aa,也完整的保存在備機test8的DRBD分區上.
這就是DRBD的網(wǎng)絡(luò )RAID-1功能. 在主機上的任何操作,都會(huì )被同步到備機的相應磁盤(pán)分區上,達到數據備份的效果.
=========================================DRBD的主備機切換有時(shí),你需要將DRBD的主備機互換一下.可以執行下面的操作:
在主機上,先要卸載掉DRBD設備.
[root@test7 mnt]# umount /dev/drbd1
將主機降級為”備機”.
[root@test7 mnt]# drbdadm secondary r0
[root@test7 mnt]# cat /proc/drbd
version: 8.0.0 (api:86/proto:86)
SVN Revision: 2713 build by
[email=root@test7]root@test7[/email]
, 2008-06-27 14:07:14
1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r---
ns:497972 nr:0 dw:28 dr:498006 al:2 bm:36 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:31100 misses:34 starving:0 dirty:0 changed:34
act_log: used:0/127 hits:26 misses:2 starving:0 dirty:0 changed:2
現在,兩臺主機都是”備機”.
在備機test8上,將它升級為”主機”. [root@test8 mnt]# drbdadm primary r0
[root@test8 mnt]# cat /proc/dr
drbd driver/
[root@test8 mnt]# cat /proc/drbd
version: 8.0.0 (api:86/proto:86)
SVN Revision: 2713 build by
[email=root@test8]root@test8[/email]
, 2008-06-27 14:11:24 1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:0 nr:16 dw:16 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:6 misses:2 starving:0 dirty:0 changed:2
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
現在test8成為主機了。===============================================================參考文檔:http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86:drbd%E7%9A%84%E4%BD%BF%E7%94%A8==============================================================
本文來(lái)自ChinaUnix博客,如果查看原文請點(diǎn):
http://blog.chinaunix.net/u2/66227/showart_1018701.html