drbd安装和数据同步
一。軟件安裝
drbd原理:drbd是一個塊同步工具 運行于系統內核 在系統文件寫入磁盤前 drbd驅動攔截到數據塊操作 將數據塊通過網絡發送給其他機器進行同步
1》heartbeat安裝 參考http://blog.csdn.net/liaomin416100569/article/details/76087448
2》drbd安裝過程:
drbd官網 http://www.drbd.org/
drbd下載 https://www.linbit.com/en/drbd-community/drbd-download/
》》模擬環境 為: (centos6.9)
drbd-utils-8.9.9.tar.gz (drbd的管理配置軟件) wgethttp://www.linbit.com/downloads/drbd/utils/drbd-utils-8.9.9.tar.gz
drbd-8.4.6.tar.gz (drbd的內核驅動) wgethttp://www.linbit.com/downloads/drbd/8.4/drbd-8.4.6.tar.gz
》》 編譯安裝 drbd-utils
安裝 drbd-utils
yum -y install gcc flex libxslt kernel-devel
安裝完成kernel-devel 進入 /usr/src/kernels目錄下 看是否存在一個內核編號的目錄
./configure --with-heartbeat -prefix=/usr/local/drbd
make KDIR=/usr/src/kernels/2.6.32-696.6.3.el6.x86_64 這里表示編譯時 帶上內核源碼的目錄
make install
》》編譯安裝drbd
安裝drbd
yum -y install perl
make KDIR=/usr/src/kernels/2.6.32-696.6.3.el6.x86_64
[root@bogon drbd-8.4.6]# make install
make -C drbd install
make[1]: Entering directory `/root/drbd/drbd-8.4.6/drbd'
install -d //lib/modules/2.6.32-696.6.3.el6.x86_64/updates
install -m 644 drbd.ko //lib/modules/2.6.32-696.6.3.el6.x86_64/updates
[ -e /System.map ] &&
/sbin/depmod -F /System.map -e ./drbd.ko 2>&1 >/dev/null || true
make[1]: Leaving directory `/root/drbd/drbd-8.4.6/drbd'
通過uname -r 可以看出 系統的內核編號為 2.6.32-696.el6.x86_64 編譯的系統編號是2.6.32-696.6.3.el6.x86_64所以
加載內核模塊 肯定是2.6.32-696.el6.x86_64下 而不是 2.6.32-696.6.3.el6.x86_64 所需要拷貝驅動文件ko到目錄2.6.32-696.el6.x86_64下
install -d //lib/modules/2.6.32-696.6.3.el6.x86_64/updates 知道 drbd.ko安裝在該目錄下 拷貝到
cp /lib/modules/2.6.32-696.6.3.el6.x86_64/updates/drbd.ko /lib/modules/2.6.32-696.el6.x86_64/kernel/lib
使用命令depmod 重新加載該目錄下的驅動文件
嘗試手工加載
[root@bogon lib]# insmod drbd.ko
insmod: error inserting 'drbd.ko': -1 Unknown symbol in module
查看下 依賴 內核驅動是否存在
[root@bogon lib]# modinfo ./drbd.ko | grep depend
depends: libcrc32c
[root@bogon lib]# modprobe libcrc32c
[root@bogon lib]# insmod drbd.ko
[root@bogon lib]# modprobe drbd
開機自啟動 /etc/rc.local最后一行添加 modprobe drbd 重啟reboot
重啟后 檢查內核drbd是否成功 lsmod | grep drbd
3》drbd同步配置:
演示環境
主機 192.168.58.142 新磁盤 /dev/sdb 分區為 /dev/sdb1和/dev/sdb2 主機名 ha
從機 192.168.58.143 新磁盤 /dev/sdb 分區為 /dev/sdb1和/dev/sdb2 主機名ha1
主機配置:
配置主機名 hostname 主機名 添加host文件
vi /etc/hosts
192.168.58.142 ha
192.168.58.143 ha1
修改/usr/local/drbd/etc/drbd.d/ 下的配置文件
文件global_common.conf
global {
usage-count no; #表示是否上傳drbd使用的用戶信息到drbd官網 no表示不上傳
}
common {
net {
#協議A:異步復制協議。本地寫成功后立即返回,數據放在發送BUFFER中,可能丟失。
#協議B:內存同步(半同步)復制協議。本地寫成功并將數據發送到對方后立即返回,如果雙機掉電,數據可能丟失(mysql5.5以上支持)。
#協議C:同步復制協議。本地和對方服務器磁盤都寫成功確認后返回成功。如果單機掉電后單機磁盤損壞,數據都不會丟失。
#工作中一般用協議C。選擇協議將影響流量,從而影響網絡延時。
protocol C; #表示使用協議 同步協議
}
}
添加文件 r0.res 內容為
resource r0 {
on ha { # on 后表示主機名
device /dev/drbd1; #表示drbd使用的邏輯設備名 不需要用戶自己創建
disk /dev/sdb1; #表示需要同步的物理設備分區 這里不用先格式化
address 192.168.58.142:7789; #表示當前機器ip和監聽的端口
meta-disk internal; #用于同步的一些元數據
}
on ha1 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.58.143:7789;
meta-disk internal;
}
}
主(ha)備(ha1) 分別配置主機名和配置資源文件 同時執行命令(執行之前關閉防火墻 service iptables stop & iptables --flush)
1 創建資源設備(主備執行)
drbdadm create-md r0
2 啟動資源(主備執行)
drbdadm up r0 報錯
/usr/local/drbd/var/run/drbd: No such file or directory/usr/local/drbd/var/run/drbd: No such file or directory
3 創建該不存在的目錄(主備執行)
mkdir -p /usr/local/drbd/var/run/drbd
drbdadm up r0 (主備執行)
成功Command 'drbdmeta 1 v08 /dev/sdb1 internal apply-al' terminated with exit code 20
4 查看 drbd啟動的狀態cat /proc/drbd
5 在主機上設置為主機另一臺就是從機(主機執行)
drbdadm primary --force r0
互相查看狀態 cat /proc/drbd
6 主機上格式化邏輯設備 (主機執行)
mkfs.ext4 /dev/drbd1
mkdir /r0
mount /dev/drbd1 /r0
此時 在/r0上創建一個文件 a.txt 無法之間在 從機的/dev/sdb1上查看到 因為同步狀態不允許查看文件 可以先停掉同步
drbdadm down r0
mount /dev/sdb1 /r0
ls /r0 就可以正常看到
這里/proc/drbd文件的內容解釋 一般結果為:
[root@ha drbd.d]# more /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by root@bogon, 2017-08-01 12:48:25
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:2410760 nr:0 dw:104304 dr:2413653 al:3 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
cs(connection state)表示連接狀態 Connected表示連接成功Unconnected表示未連接 其他關于連接狀態參考(http://docs.linbit.com/docs/users-guide-8.4/#s-connection-states)
ro(role)表示角色 / 前面的部分表示當前主機的角色 后面部分表示其他機器的狀態 Primary表示主機 Secondary表示從機 其他角色參考(http://docs.linbit.com/docs/users-guide-8.4/#s-roles)
ds(Disk states)磁盤狀態Diskless沒有指定物理設備Failed 連接失敗 可以通過命令drbdadm dstate r0 查看狀態 /前面表示當前機器狀態
/后面部分表示其他機器磁盤狀態
C r 表示io表示 r表示 running運行 s表示suspended 狀態
性能指標參數
dw (disk write)
磁盤寫入多少kb到網絡
dr (disk read)
從網絡中讀取多少kb數據到磁盤
al (activity log)
meta data.中更新的日志數量
bm (bit map)
meta data.中更新位圖數量
lo (local count)
DRBD.打開本地io的請求次數
pe (pending)
發給另外一臺機器的請求io的次數
ua (unacknowledged)
接受到網絡數據請求(未回應也就是接收到但是還未寫入)的個數
ap (application pending)
網絡中接收到的數據塊(未回應也就是接收到但是還未寫入)的的個數
ep (epochs)
Number of epoch objects. Usually 1. Might increase under I/O load when using either the barrier or the none write ordering method.
wo (write order)
Currently used write ordering method: b(barrier), f(flush), d(drain) or n(none).
oos (out of sync)
Amount of storage currently out of sync; in Kibibytes.
總結
以上是生活随笔為你收集整理的drbd安装和数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟滤波器的单位冲激响应+单位阶跃响应+
- 下一篇: 吃什么食物对子宫好