【背景】
drbd是核心級别 檔案--drbd--磁盤。
優點:速度快,基于block快進行同步
缺點:閑置一塊從節點的磁盤。
【實踐環境】
準備環境
<a href="http://s4.51cto.com/wyfs02/M00/86/85/wKiom1fCWD2BQ2-jAABXxIRL2II003.jpg" target="_blank"></a>
作業系統和核心:
[root@master ~]# cat /etc/issue |head -1
entOS release 6.4 (Final)
[root@master ~]# uname -r
2.6.32-358.el6.x86_64
master網卡配置:
[root@master ~]# ifconfig |grep -A1 "eth"
eth0 Link encap:Ethernet HWaddr 00:0C:29:65:14:0F
inet addr:192.168.100.10 Bcast:192.168.100.255 Mask:255.255.255.0
--
eth1 Link encap:Ethernet HWaddr 00:0C:29:65:14:19
inet addr:10.0.0.7 Bcast:10.0.0.255 Mask:255.255.255.0
slave網卡配置
[root@slave ~]# ifconfig |grep -A1 "eth"
eth0 Link encap:Ethernet HWaddr 00:0C:29:B7:34:9B
inet addr:192.168.100.13 Bcast:192.168.100.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr 00:0C:29:B7:34:A5
inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0
解析配置:/etc/hosts
10.0.0.7 master
10.0.0.8 slave
hostname配置:
[root@master etc]# hostname
master
[root@slave etc]# hostname
slave
防火牆配置:
[root@slave etc]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@slave etc]# getenforce
Disabled
master磁盤配置(虛拟機添加一塊磁盤并一個分區):
[root@master ~]# cat fdisk.txt
n
p
1
+500M
w
[root@master ~]# fdisk /dev/sdb < fdisk.txt
[root@master ~]# partprobe
[root@master ~]# fdisk -l |grep "/sdb1"
/dev/sdb1 1 65 522081 83 Linux
注意: (實體磁盤一定不能進行格式化挂載 因為需要存的是drbd meta檔案格式)
slave磁盤配置同上:
......
【drbd的準備環境】
<code>wget http:</code><code>//oss</code><code>.linbit.com</code><code>/drbd/8</code><code>.4</code><code>/drbd-8</code><code>.4.3.</code><code>tar</code><code>.gz</code>
<a href="http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz" target="_blank"></a>
【drbd的安裝過程】
master 和slave同步操作
<code>tar</code> <code>xvf drbd-8.4.3.</code><code>tar</code><code>.gz </code>
<code>cd</code> <code>drbd-8.4.3</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/drbd</code> <code>--with-km</code>
<code>make</code> <code>KDIR=</code><code>/usr/src/kernels/</code><code>`</code><code>uname</code> <code>-r`/</code>
<code>make</code> <code>install</code>
注意:drbd是基于核心的,是以要編譯進核心。核心的路徑 /usr/src/kernels/`uname -r`/。
如果出問題,是否你的核心有過更新。
【加載drbd核心子產品】
master和slave同步進行
[root@master ~]# modprobe drbd
[root@master ~]# lsmod |grep drbd
drbd 325754 0
libcrc32c 1246 1 drbd
【配置drbd-配置檔案】
cd /usr/local/drbd/etc/
> drbd.conf
master和slave配置一樣如下:
global {
usage-count no;
# minor-count dialog-refreshdisable-ip-verification
}
common {
protocol C;
syncer {
rate 100M;
verify-alg sha1;
}
resource data {
disk {
on-io-error detach;
#節點1
on master {
device /dev/drbd0; #drbd的裸裝置
disk /dev/sdb1; #資料在此分區
address 10.0.0.7:7788;
meta-disk internal ;
}
#節點2
on slave {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.0.8:7788;
meta-disk internal ;
【啟動drbd-】
master和slave上建立drbd meta中繼資料
[root@master etc]# drbdadm create-md data
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
解釋:對data這個資源初始化drbd
master和slave上啟動data資源
drbdadm up data
[root@master etc]# drbdadm up data
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb1 internal apply-al' terminated with exit code 20
注意:以上資訊是正常的。
[root@master etc]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2016-08-28 11:49:02
0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----s
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:522028
過一會後master和slave都需要出現以下資訊:
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
【設定主節點】
[root@master etc]# drbdadm primary --force data
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
ns:43140 nr:0 dw:0 dr:50848 al:0 bm:2 lo:1 pe:2 ua:8 ap:0 ep:1 wo:f oos:480044
[>...................] sync'ed: 8.6% (480044/522028)K
finish: 0:00:57 speed: 8,396 (8,396) K/sec
注意:看到此時資料正在同步。
最後
maste端的狀态
cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
slave端的狀态
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
【格式化磁盤存取資料】
mkfs.ext4 /dev/drbd0
注意:
1 是對裸裝置進行格式化,而不是實體磁盤。
2 隻需要對maser端的裸裝置進行格式化,因為格式化資訊也會被同步到slave端的。
完成後master端和slave的ns:資料 值是一一樣的
挂載
mount /dev/drbd0 /mnt/
【資料測試】
cd /mnt
[root@master mnt]# touch {a..f}
其實看到
cat /proc/drbd的狀态正常就可以了
【非必要的測試手段1 ---驗證slave端有資料了】
drbdadm down data
mount /dev/sdb1 /mnt/
[root@slave drbd-8.4.3]# cd /mnt/
[root@slave mnt]# ll
total 12
-rw-r--r-- 1 root root 0 Aug 28 13:34 a
-rw-r--r-- 1 root root 0 Aug 28 13:34 b
-rw-r--r-- 1 root root 0 Aug 28 13:34 c
-rw-r--r-- 1 root root 0 Aug 28 13:34 d
-rw-r--r-- 1 root root 0 Aug 28 13:34 e
-rw-r--r-- 1 root root 0 Aug 28 13:34 f
drwx------ 2 root root 12288 Aug 28 13:29 lost+found
此時表示:資料完全同步過來了。
恢複slave作為secondary 角色
[root@slave /]# umount /mnt/
[root@slave /]# drbdadm up data
[root@slave /]# cat /proc/drbd
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@slave, 2016-08-28 11:53:45
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:24 dw:24 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
【測試手段2--主備切換】
暫時省略....
【drbd的常用指令】
檢視drbd的狀态
cat /proc/drbd
指令檢視drbd的配置檔案
drbdadm dump all
檢視角色
drbdadm role all
1 即使在secondary被down的情況下,primary端有有新的資料。在seconary恢複後,新的資料還會繼續同步到secondary的
1 (如果之前做個磁盤實驗)
需要清掉drbd meta資料
dd if=/dev/zero of=/dev/sdb1 count=1 bs=100M
2 啟動報錯
/usr/local/drbd/var/run/drbd: No such file or directory
解決
mkdir -p /usr/local/drbd/var/run/drbd
4 建立磁盤
fdisk 分隔一塊/dev/sdb1
(一定不能進行格式化挂載 因為存的是drbd meta檔案格式)
5 建立drbd meta
drbdadm create-md data
起資源
啟動服務
啟動所有資源
drbdadm up all
或者
6 如何使用
#把master節點作為主節點
Drbdadm primary --force data
#隻能在一個節點上進行
mkfs.ext4 /dev/drbd0
#挂載drbd的裸裝置進行使用
7 常用檢視
modprobe drbd
lsmod |grep drbd
drbdadm role data
#變成secondary
drbdadm secondary data
本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1842651如需轉載請自行聯系原作者
cuizhiliang