drbd安装和数据同步
一。軟件安裝
drbd原理:drbd是一個(gè)塊同步工具 運(yùn)行于系統(tǒng)內(nèi)核 在系統(tǒng)文件寫入磁盤前 drbd驅(qū)動(dòng)攔截到數(shù)據(jù)塊操作 將數(shù)據(jù)塊通過(guò)網(wǎng)絡(luò)發(fā)送給其他機(jī)器進(jìn)行同步
1》heartbeat安裝 參考http://blog.csdn.net/liaomin416100569/article/details/76087448
2》drbd安裝過(guò)程:
drbd官網(wǎng) http://www.drbd.org/
drbd下載 https://www.linbit.com/en/drbd-community/drbd-download/
》》模擬環(huán)境 為: (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的內(nèi)核驅(qū)動(dòng)) 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 進(jìn)入 /usr/src/kernels目錄下 看是否存在一個(gè)內(nèi)核編號(hào)的目錄
./configure --with-heartbeat -prefix=/usr/local/drbd
make KDIR=/usr/src/kernels/2.6.32-696.6.3.el6.x86_64 這里表示編譯時(shí) 帶上內(nèi)核源碼的目錄
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'
通過(guò)uname -r 可以看出 系統(tǒng)的內(nèi)核編號(hào)為 2.6.32-696.el6.x86_64 編譯的系統(tǒng)編號(hào)是2.6.32-696.6.3.el6.x86_64所以
加載內(nèi)核模塊 肯定是2.6.32-696.el6.x86_64下 而不是 2.6.32-696.6.3.el6.x86_64 所需要拷貝驅(qū)動(dòng)文件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 重新加載該目錄下的驅(qū)動(dòng)文件
嘗試手工加載
[root@bogon lib]# insmod drbd.ko
insmod: error inserting 'drbd.ko': -1 Unknown symbol in module
查看下 依賴 內(nèi)核驅(qū)動(dòng)是否存在
[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
開機(jī)自啟動(dòng) /etc/rc.local最后一行添加 modprobe drbd 重啟reboot
重啟后 檢查內(nèi)核drbd是否成功 lsmod | grep drbd
3》drbd同步配置:
演示環(huán)境
主機(jī) 192.168.58.142 新磁盤 /dev/sdb 分區(qū)為 /dev/sdb1和/dev/sdb2 主機(jī)名 ha
從機(jī) 192.168.58.143 新磁盤 /dev/sdb 分區(qū)為 /dev/sdb1和/dev/sdb2 主機(jī)名ha1
主機(jī)配置:
配置主機(jī)名 hostname 主機(jī)名 添加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官網(wǎng) no表示不上傳
}
common {
net {
#協(xié)議A:異步復(fù)制協(xié)議。本地寫成功后立即返回,數(shù)據(jù)放在發(fā)送BUFFER中,可能丟失。
#協(xié)議B:內(nèi)存同步(半同步)復(fù)制協(xié)議。本地寫成功并將數(shù)據(jù)發(fā)送到對(duì)方后立即返回,如果雙機(jī)掉電,數(shù)據(jù)可能丟失(mysql5.5以上支持)。
#協(xié)議C:同步復(fù)制協(xié)議。本地和對(duì)方服務(wù)器磁盤都寫成功確認(rèn)后返回成功。如果單機(jī)掉電后單機(jī)磁盤損壞,數(shù)據(jù)都不會(huì)丟失。
#工作中一般用協(xié)議C。選擇協(xié)議將影響流量,從而影響網(wǎng)絡(luò)延時(shí)。
protocol C; #表示使用協(xié)議 同步協(xié)議
}
}
添加文件 r0.res 內(nèi)容為
resource r0 {
on ha { # on 后表示主機(jī)名
device /dev/drbd1; #表示drbd使用的邏輯設(shè)備名 不需要用戶自己創(chuàng)建
disk /dev/sdb1; #表示需要同步的物理設(shè)備分區(qū) 這里不用先格式化
address 192.168.58.142:7789; #表示當(dāng)前機(jī)器ip和監(jiān)聽(tīng)的端口
meta-disk internal; #用于同步的一些元數(shù)據(jù)
}
on ha1 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.58.143:7789;
meta-disk internal;
}
}
主(ha)備(ha1) 分別配置主機(jī)名和配置資源文件 同時(shí)執(zhí)行命令(執(zhí)行之前關(guān)閉防火墻 service iptables stop & iptables --flush)
1 創(chuàng)建資源設(shè)備(主備執(zhí)行)
drbdadm create-md r0
2 啟動(dòng)資源(主備執(zhí)行)
drbdadm up r0 報(bào)錯(cuò)
/usr/local/drbd/var/run/drbd: No such file or directory/usr/local/drbd/var/run/drbd: No such file or directory
3 創(chuàng)建該不存在的目錄(主備執(zhí)行)
mkdir -p /usr/local/drbd/var/run/drbd
drbdadm up r0 (主備執(zhí)行)
成功Command 'drbdmeta 1 v08 /dev/sdb1 internal apply-al' terminated with exit code 20
4 查看 drbd啟動(dòng)的狀態(tài)cat /proc/drbd
5 在主機(jī)上設(shè)置為主機(jī)另一臺(tái)就是從機(jī)(主機(jī)執(zhí)行)
drbdadm primary --force r0
互相查看狀態(tài) cat /proc/drbd
6 主機(jī)上格式化邏輯設(shè)備 (主機(jī)執(zhí)行)
mkfs.ext4 /dev/drbd1
mkdir /r0
mount /dev/drbd1 /r0
此時(shí) 在/r0上創(chuàng)建一個(gè)文件 a.txt 無(wú)法之間在 從機(jī)的/dev/sdb1上查看到 因?yàn)橥綘顟B(tài)不允許查看文件 可以先停掉同步
drbdadm down r0
mount /dev/sdb1 /r0
ls /r0 就可以正常看到
這里/proc/drbd文件的內(nèi)容解釋 一般結(jié)果為:
[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)表示連接狀態(tài) Connected表示連接成功Unconnected表示未連接 其他關(guān)于連接狀態(tài)參考(http://docs.linbit.com/docs/users-guide-8.4/#s-connection-states)
ro(role)表示角色 / 前面的部分表示當(dāng)前主機(jī)的角色 后面部分表示其他機(jī)器的狀態(tài) Primary表示主機(jī) Secondary表示從機(jī) 其他角色參考(http://docs.linbit.com/docs/users-guide-8.4/#s-roles)
ds(Disk states)磁盤狀態(tài)Diskless沒(méi)有指定物理設(shè)備Failed 連接失敗 可以通過(guò)命令drbdadm dstate r0 查看狀態(tài) /前面表示當(dāng)前機(jī)器狀態(tài)
/后面部分表示其他機(jī)器磁盤狀態(tài)
C r 表示io表示 r表示 running運(yùn)行 s表示suspended 狀態(tài)
性能指標(biāo)參數(shù)
dw (disk write)
磁盤寫入多少kb到網(wǎng)絡(luò)
dr (disk read)
從網(wǎng)絡(luò)中讀取多少kb數(shù)據(jù)到磁盤
al (activity log)
meta data.中更新的日志數(shù)量
bm (bit map)
meta data.中更新位圖數(shù)量
lo (local count)
DRBD.打開本地io的請(qǐng)求次數(shù)
pe (pending)
發(fā)給另外一臺(tái)機(jī)器的請(qǐng)求io的次數(shù)
ua (unacknowledged)
接受到網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求(未回應(yīng)也就是接收到但是還未寫入)的個(gè)數(shù)
ap (application pending)
網(wǎng)絡(luò)中接收到的數(shù)據(jù)塊(未回應(yīng)也就是接收到但是還未寫入)的的個(gè)數(shù)
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.
總結(jié)
以上是生活随笔為你收集整理的drbd安装和数据同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 模拟滤波器的单位冲激响应+单位阶跃响应+
- 下一篇: 吃什么食物对子宫好