Drbd安装

安装前环境准备
关闭selinux和iptables
setenforce 0
getenforce
vim /etc/sysconfig/selinux
SELINUX=disabled
/etc/init.d/iptables stop

同步时间
crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp.api.bz >/dev/null 2>&1

磁盘分区(为了做实验操作,生产环境主备分区要一样)
注:模拟环境 主节点磁盘2G 备节点磁盘3G
parted /dev/sdb
mklabel gpt #创建修改分区表格式
mkpart #按照提示一步步执行
主节点分区:/dev/sdb1 1G (存储数据) /dev/sdb2 1G (meta分区 存储drbd同步状态信息)
备节点分区:/dev/sdb1 2G /dev/sdb2 1G

格式化磁盘分区
注意:meta 分区不要格式化(也就是/dev/sdb2) 交给drbd自己管理
mkfs.ext4 /dev/sdb1
tune2fs -c -1 /dev/sdb1

Drbd安装
yum安装drbd(推荐使用)(所有操作两台都要一模一样)
配置yum源
wget http://elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm #下载
rpm -ivh elrepo-release-6-8.el6.elrepo.noarch.rpm #安装yum源
安装drbd
yum -y install drbd kmod-drbd84
安装后检查
rpm -qa drbd*
rpm -qa kmod*
加载drbd模块到内核
depmod 说明:在编译并准备好一个Linux内核加载模块后,modprobe前必须先执行命令depmod,此命令会生成新的modules.dep
modprobe drbd
此时没有报错,查看是否加载成功 (若有FATAL: Module drbd not found.报错 重启系统,重新执行modprobe drbd)
lsmod |grep drbd
drbd 325658 0
libcrc32c 1246 1 drbd
设置开机自动加载模块
echo “modprobe drbd” >/etc/sysconfig/modules/drbb.modules
chmod 755 /etc/sysconfig/modules/drbb.modules

drbd配置样例
cat /usr/share/doc/drbd84-utils-8.9.8/drbd.conf.example

外部模式
编辑配置文件(主备两边的配置文件必须一模一样,此配置为外部模式,meat分区和数据分区分开)
vim /etc/hosts
10.0.10.2 data-1-1
10.0.10.3 data-1-2

主从配置文件
vim /etc/drbd.conf #主从两边配置文件一样

global {
usage-count no; #是否允许官方统计使用开源软件量
}

common {
net {
sndbuf-size 512k;
max-buffers 8000;
unplug-watermark 1024;
max-epoch-size 8000;
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 100M; #主备同步速度
verify-alg crc32c; #验证算法 sha1,md5,crc32c
}
}

resource data { #一个实例 如果多分区同步,复制这一段 不同实例分区要不同 data为实例名
protocol C; #使用什么协议 使用什么级别同步方法

disk {
on-io-error detach; #出现IO错误的处理方式
no-disk-flushes;
no-md-flushes;
}

on data-1-1 { #机器名 主机名
device /dev/drbd0; #drbd设备
disk /dev/sdb1; #drbd0对应的分区
address 10.0.10.2:7788; #drbd监听端口,用于与另一台主机通信
meta-disk /dev/sdb2[0]; #mate数据分区,meatdata存储的是同步信息和状态信息等数据
}

on data-1-2 { #机器名
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.10.3:7788;
meta-disk /dev/sdb2[0];
}
}

以下操作主备一样
初始化mate数据 (注:如果之前格式化了mate分区就会报错)
drbdadm create-md data #data名称为配置文件中resource 定义的

启动drbd(/etc/init.d/drbd start 等同于 drbdadm up all 不推荐使用)
drbdadm up data #推荐使用启动关闭drbd方法 up激活 down关闭 如果是多实例 可以用drbdadm up all
Device ‘0’ is configured! #出现这句表示成功

检查Drbd状态信息
cat /proc/drbd
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent #Connected 表示连接成功 两边都是Secondary正确 Inconsistent没有同步

只在主服务器上的操作,备节点不操作
指定一个要同步的资源,同步数据倒对端
drbdadm – --overwrite-data-of-peer primary data #把对端数据覆盖,同时本地作为主
cat /proc/drbd #查看同步进度
同步之后
cat /proc/drbd
cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate #UpToDate同步完成

裂脑错误解决:
如果出现Secondary/Unknown有可能发生裂脑导致
1 在从节点 data-1-2上做如下操作
drbdadm secondary data #主动说明是备节点
drbdadm disconnect data #断开data实例连接
drbdadm – --discard-my-data connect data #放弃本段数据进行连接
2在主节点data-1-1上通过cat /proc/drbd查看状态,如果不是WFConnection状态,需要再手动连接
drbdadm primary data #主动说明是主节点
drbdadm connect data

挂载写入数据及同步测试
创建挂载点
mkdir /data
挂载
主节点挂载
mount /dev/drbd0 /data #不要挂载sdb1分区 要挂载drbd0这个设备
备节点是挂载不上的,如果要查看同步的数据
drbdadm down data
mount /dev/sdb1 /data
查看完成后
umount /dev/sdb1
drbdadm up data

查看drbd状态是否正常(监控drbd时会用到)
[root@data-1-1 ~]# drbdadm cstate data
Connected #连接正常
查看drbd磁盘状态
[root@data-1-1 ~]# drbdadm dstate data
UpToDate/UpToDate #正常

更改配置文件后不用重启生效方法
drbdadm adjust data

内部模式
(meat和数据分区放到一个盘里)
把 meta-disk /dev/sdb2[0]; 改为meta-disk internal;

查看meatdata信息
drbdadm detach data
drbdadm apply-al
datadrbdadm dump-md data

主主模式
vim /etc/drbd.conf
global {
usage-count no;
}

common {
net {
sndbuf-size 512k;
max-buffers 8000;
unplug-watermark 1024;
max-epoch-size 8000;
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 100M;
verify-alg crc32c;
}
}

resource data {
protocol C;

net {
allow-two-primaries;
}
startup {
become-primary-on both;
}
disk {
on-io-error detach;
}

on data-1-1 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.10.2:7788;
meta-disk /dev/sdb2[0];
}

on data-1-2 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.10.3:7788;
meta-disk /dev/sdb2[0];
}
}

源码编译安装drbd
export LC_ALL=C
yum install -y make kernel-devel kernel-headers gcc flex libxslt
./configure --prefix=/application/drbd8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/
make KDIR=/usr/src/kernels/2.6.32-696.6.3.el6.x86_64/
make install
[root@web01 ~]# depmod 说明:在编译并准备好一个Linux内核加载模块后,modprobe前必须先执行命令depmod,此命令会生成新的modules.dep
modprobe drbd
此时没有报错,查看是否加载成功
lsmod |grep drbd
drbd 325658 0
libcrc32c 1246 1 drbd

你可能感兴趣的:(存储)