天天看點

drbd學習

【背景】 

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 &lt; 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/

&gt; 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

        [&gt;...................] 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

繼續閱讀