DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡RAID-1功能.當你將數據寫入本地
文件系統時,數據還將會被髮送到網絡中另一臺主機上.以相同的形式記錄在一個文件系統中.
本地(主節點)與遠程主機(備節點)的數據可以保證實時同步.當本地系統出現故障時,遠程主機上還會
保留有一份相同的數據,可以繼續使用.
在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣.因爲數據同時存在於本地主機和遠程主機上,
切換時,遠程主機只要使用它上面的那份備份數據,就可以繼續進行服務了.
DRBD的工作原理如下圖:
從官方網站下載源碼包:
www.drbd.org
我們在Turbolinux10.5上使用drbd-8.0.4版.分別在兩臺主機上安裝DRBD:
# tar jxf drbd-8.0.4.tar.gz
# cd drbd-8.0.4
# make
# make install
make install執行之後:
drbd.ko被安裝到/lib/modules/$KernelVersion/kernel/drivers/block下.
drbd相關工具(drbdadm,drbdsetup)被安裝到/sbin下.
並會在/etc/init.d/下建立drbd啓動腳本.
三. DRBD的配置
1.DRBD使用的硬盤分區
你需要爲本地主機和遠程主機,指定一個DRBD使用的硬盤分區.這兩個分區的大小必須相同.
我們指定兩臺主機的/dev/hdb1分區作爲DRBD的使用的分區.這兩個分區大小都爲300MB.
2.drbd.conf配置文件
DRBD運行時,會讀取一個配置文件/etc/drbd.conf.這個文件裏描述了DRBD設備與硬盤分區的映射關係,
和DRBD的一些配置參數.
下面是一個drbd.conf文件的簡單示例:
<主機>Turbolinux 10.5操作系統,主機名爲g105-1,IP地址爲 10.0.1.2,DRBD分區爲/dev/hdb1.
<備機>Turbolinux 10.5操作系統,主機名爲g105-2,IP地址爲 10.0.2.2,DRBD分區爲/dev/hdb1.
然後將這個drbd.conf文件分別複製到兩臺主機的/etc目錄下.
3.DRBD的啓動
在啓動DRBD之前,你需要分別在兩臺主機的hdb1分區上,創建供DRBD記錄信息的數據塊.分別在
兩臺主機上執行:
[root@g105-1 /]# drbdadm create-md r0
[root@g105-2 /]# drbdadm create-md r0
“r0”是我們在drbd.conf裏定義的資源名稱.
現在我們可以啓動DRBD了,分別在兩臺主機上執行:
[root@g105-1 /]# /etc/init.d/drbd start
[root@g105-2 /]# /etc/init.d/drbd start
現在可以查看DRBD的狀態,然後在g105-1主機上執行:
”/proc/drbd”中顯示了drbd當前的狀態.第一行的st表示兩臺主機的狀態,都是”備機”狀態.
ds是磁盤狀態,都是”不一致”狀態.
這是由於,DRBD無法判斷哪一方爲主機,以哪一方的磁盤數據作爲標準數據.所以,我們需要初始化
一個主機.在g105-1上執行:
[root@g105-1 /]# drbdsetup /dev/drbd1 primary -o
現在再看一個g105-1上的DRBD狀態:
主備機狀態分別是”主/備”,主機磁盤狀態是”實時”,備機狀態是”不一致”.
在第3行,可以看到數據正在同步中,即主機正在將磁盤上的數據,傳遞到備機上.現在的進度是14.7%.
現在看一下g105-2上面的DRBD狀態.
稍等一會,在數據同步完後,再查看一下g105-1的DRBD狀態:
磁盤狀態都是”實時”,表示數據同步完成了.
4.使用DRBD
你現在可以把主機上的DRBD設備掛載到一個目錄上進行使用.備機的DRBD設備無法被掛載,因爲它是
用來接收主機數據的,由DRBD負責操作.
在g105-1上執行:
現在,我們在drbd1目錄裏建立一個200M的文件:
[root@g105-1 /]# dd if=/dev/zero of=/mnt/drbd1/tempfile1.tmp \ >bs=104857600 count=2
操作完成後,在g105-2(備機)上執行:
我們先停止DRBD
[root@g105-2 /]# /etc/init.d/drbd stop
現在,我們可以將hdb1進行掛載
可以看到,在主機g105-1上產生的文件tmpfile1.tmp,也完整的保存在備機g105-2的DRBD分區上.
這就是DRBD的網絡RAID-1功能. 在主機上的任何操作,都會被同步到備機的相應磁盤分區上,達到數據備份的效果.