歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> DRBD磁盤鏡像技術

DRBD磁盤鏡像技術

日期:2017/2/27 15:57:11   编辑:Linux教程

Distributed Replicated Block Device(DRBD)是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲復制解決方案。 數據鏡像:實時、透明、同步(所有服務器都成功後返回)、異步(本地服務器成功後返回)

第一章:DRBD概念原理以及安裝
1.DRBD是由內核模塊和相關腳本而構成,用以構建高可用的集群.其實現方式是通過網絡來鏡像整個設備(磁盤).它允許用戶在遠程機器上建立一個本地塊設備的實時鏡像,與心跳鏈接結合使用,也可看做一種網絡RAID(比基於文件系統的同步高效)

2.DRBD(實現塊設備的同步)負責接收數據,把數據寫到本地磁盤,然後發送到另一個主機.另一個主機將數據存到自己磁盤中.DRBD目前每次只允許一個節點進行寫訪問,(必須是primary狀態才能對磁盤進行寫操作),必須將另外一個磁盤設置secondry(兩個節點狀態:primary和secondry)

3.DRBD一般會用在HA集群中,那麼drbd和HA集群的關系;
一個DRBD系統由兩個以上的節點組成,有主備節點之分,drbd設備(將本地磁盤設備虛擬成drbd設備)。在主節點寫入的數據通過drbd設備存貯到主節點的磁盤設備,同時,這個數據也會自動發送到備用節點的相應drbd設備,最後寫入備用節點的磁盤設備。在備用節點上,drbd只是將數據從drbd設備寫入到備用節點的磁盤設備中。

使用DRBD作為HA集群的一個共享存儲設備,不需要任何硬件的投資,並且使用的是IP網絡運行(iscsi網絡存儲)

4.DRBD內部實現原理圖

那麼格式化是格式化drbd設備

用戶將數據寫到drbd,通過tcp/ip網絡傳輸到遠程主機的drbd(傳輸的是drbd塊設備)

5.DRBD協議:
A 數據一旦寫入磁盤並發送到網絡就認為完成寫操作
B 只要接受到確認,就會認為完成寫操作
C 收到寫入(磁盤)確認,再同步(此協議能夠保證數據完全寫入)

DRBD設備進程三個:drbd_work主進程 drbd0_asender是primary上drbd0的數據發送過程 drbd0_receiver是secondary上drbd0的數據接收進程

6.DRBD的工作原理(drbd 同步底層塊設備)


7.DRBD實現原理圖:

9.DRBD的安裝

http://www.drbd.org 官網下載(若要源碼編譯,可以解壓後查看.spec文件直接用rpmbuild –bb *.spec 構建rpm包) 需要kernel-devel的支持哦

#./configure --enable-spec --with-km 帶有spec的編譯和內核支持,會生成spec文件


1>准備工作

對兩台drbd同步主機進行解析以及hostname設置

在/etc/hosts添加兩台主機的解析

192.168.2.88 drbd2

192.168.2.99 drbd1

分別在兩台主機上添加虛擬磁盤設備(最好一樣大,不然多余就浪費,創建成lvm)

#fdisk -l

#fdisk -cu /dev/vdb

#pvcreate /dev/vdb1

#vgcreate drbdvg /dev/vdb1

#lvcreate -L 1G -n drbdlv drbdvg

2>drbd下載安裝

#tar zxf drbd-8.4.3.tar.gz //解壓後,發現目錄有.spec.in文件,即可以打包成rpm包格式

#yum install rpm-build -y

#./configure --enable-spec --with-km //在軟件的以及目錄編譯(啟用spec和增加kernel模塊)

注意:缺少的包相應解決啊

#rpmbuild -bb drbd.spec 構建drbd包

#rpmbuild -bb drbd-km.spec 構建drbd的kernel模塊(yum install kernel-devel)

#cd /root/rpmbuild/RPMS/x86_64/ 生成的rpm包位置

#yum localinstall *.rpm -y 本地drbd安裝成功

#scp * 192.168.2.88: 直接將rpm包拷貝到備份主機上

!!(如果系統信息不一致,最好使用源碼編譯,會生成和系統內核匹配的drbd模塊drbd-km會根據自己系統的相關信息編譯出適合內核的模塊)!!



安裝成功後,/sbin目錄下有drbdadm drbdmeta drbdsetup 命令以及drbd啟動腳本



10.注意事項

1.mount drbd設備前,必須把設備設置為primary狀態

2.兩個節點不能同時為primary

3.處於secondary狀態的服務器上不能進行寫操作

4.主備服務器同步的兩個分區大小最好相同,這樣不至於浪費磁盤空間,drbd磁盤鏡像相當於raid1

注意:drbd設備主機上的配置必須完全一致





第二章:DRBD配置以及使用:



1./etc/drbd.conf 主配置文件

真正的實際配置文件在/etc/drbd.d/ 兩個文件gloab_comman.conf

另外drbd的詳細配置文件需要在*.res文件編輯,這個文件默認不存在

vim /etc/drbd.d/drbd.res 文件的配置必須注意(可能出現share沒定義)

resource share { 定義資源的名稱為share之後會用到

meta-disk internal; 源數據的存放方式

device /dev/drbd1; 共享出來的drbd塊標識

syncer {

verify-alg sha1; 使用的驗證方式和密碼方式

rate 200M;

}

net { allow-two-primaries; } 可以兩台主機同時掛載(不能使用寫哦)

on drbd1{ 定義drbd設備

disk /dev/drbdvg/drbdlv; 說明drbd設備/dev/drbd1使用的磁盤分區是/dev/sdb1

address 192.168.0.99:7789; 設置drbd的監聽端口,用來和端口通信

}

on drbd2{

disk /dev/drbdvg/drbdlv;

address 192.168.0.88:7789;

}

}

需要將主備drbd進行解析哦



2.啟動DRBD



1>在兩個節點執行啟動

啟動只前在兩台主機分區上創建供drbd記錄信息的源數據庫

#drbdadm create-md share(資源名字) 或者drbdadm create-md all

2>在兩個節點啟動服務

#/etc/init.d/drbd start

3>在任意節點查看狀態信息

#cat /proc/drbd

提示:cs 表示連接狀態 ro:節點角色 ds:磁盤狀態信息 ns:網絡信息

提示:Dw:磁盤寫信息 Dr:磁盤讀信息

第一次啟動drbd都為secondary狀態,需要手工設置為primary

4>設置主節點

#drbdsetup /dev/drbd1 primary --force 第一次設置主節點(否則不能格式化)

或者#drbdadm –overwrite-data-of-peer primary all

#drbdadm primary share(all) 再次設置主機角色

#cat /proc/drbd 查看同步信息

5>格式化文件系統

#mkfs.ext4 /dev/drbd1 對primary狀態節點進行格式化(格式化共享drbd1)

#mount /dev/drbd1 /mnt 格式化的是drbd塊設備

#df -H 查看掛載信息

3.DRBD主備節點的切換

1>停止drbd服務切換

關閉主節點服務,此時掛載的drbd分區自動在主節點卸載了

在備用節點設置主節點 #drbdadm primary share(all)

2>正常切換

先執行umount卸載分區

設置備節點#drbdadm secondary share(all)

將備用節點設置主節點: #drbdadm primary share(all)

備用節點執行monut操作(mount /dev/drbd1 /mnt)


注意:使用系統的版本不一致的時候,不能將生成的drbd*.rpm拷貝到另外一個節點上,因為不同版本的kernel版本不一致,如果使用一樣的rpm安裝可能出現不能識別到drbd module

因此,可以將drbd.-8.4tar.gz源碼編譯,在不同的系統中生成自己的源碼包,這個會根據kernel來自定義rpm包。


作者在試驗環境中主節點使用rhel6.3,用源碼包編譯drbd的rpm包.安裝

備用節點rhel6.4使用源碼包安裝的時候提示module drbd not found .因為drbd-km包和系統不一致。重新用源碼包編譯適合自己kernel的drbd的rpm包。

附錄:

DRBD性能優化:

1.網絡環境:DRBD是基於塊設備的同步,對網絡的要求比較大,因此一般會將同步網絡和提供服務的網絡分開

2.用做DRBD分區磁盤的性能:磁盤性能必須好,例如可以考慮使用多塊15kb的SAS盤作為RAID0或RAID10 以提供I/O性能

3.設置syncer參數設置,即rate 200M

總結:drbd設備目前只能用在兩個硬件IO設備上(也就使真實提供硬件塊存儲的主機上才能使用共享),並不是任意一個client安裝好drbd軟件就可以使用共享設備了。這應該是一個瓶頸。貌似可以給其他用吧??

其次,在格式化drbd設備時候,選擇的是ext4格式,因此,永遠只能在primary狀態進行掛載並且讀寫數據,secondary狀態不能進行任何操作,只是數據存儲在遠端,兩塊真實的塊設備上。其中還有一個問題就是,應該存儲方式類似raid1,如果一塊盤壞了,數據會自動放在另外一塊盤上。(運維人員只需用將新的磁盤安裝上來創建.res文件上相應的設備就ok了)

在ext4下也可以設置雙主模式,但是這樣會存在一個問題:兩邊可以同時查看,但是任意一方修改數據,對方不能接受。其實這個時候已經產生腦列問題了,當再次修改主備會發現彼此都認為對方是primary.當你重新恢復drbd服務,會發現自動保存第一個主機的內容。

Copyright © Linux教程網 All Rights Reserved