最近开发中又要用到DRBD做远程复制的功能,网上搜到很多都是yum安装的办法,这里记录一下源码安装的办法。

准备工作

关闭防火墙

systemctl disable firewalld
systemctl stop firewalld

关闭 SELinux

sed -i -e "s/=enforcing/=disabled/g" /etc/selinux/config
setenforce 0

安装依赖

yum -y update 
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build wget

注意: 安装kernel-devel一定要和uname -r获取结果一致。

rpm -q kernel-devel
uname -r

# 3.10.0-327.el7.x86_64

返回的内核版本应当一致,否则建议用本地源安装kernel-devel

下载/解压源码

官方地址:https://www.linbit.com/en/drbd-community/drbd-download/
旧版本:http://www.linbit.com/en/drbd-community/old-releases/
MORE:http://www.linbit.com/www.linbit.com/downloads/drbd/

注意:DRBD 8.4.3(?)以上版本,对drbdutils做了拆分,需要分别进行下载。

wget https://xxx.tar.gz

当然,如果需要你也可以通过我的分享下载编译好的rpm包(示例版本):

链接: https://pan.baidu.com/s/1huncgDI 密码: b41i

解压下载的两个tar

tar -zxvf drbd-8.*.tar.gz
tar -zxvf drbd-utils-*.tar.gz

编译rpm

创建构建DRBD需要的目录

mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

编译DRBD

制作 rpm

cd drbd-8.4.5/
make clean
make km-rpm KDIR=/usr/src/kernels/`uname -r`/ # 启用内核模块 自动识别内核版本
# 返回:
# You have now:
# /root/rpmbuild/RPMS/x86_64/drbd-km-3.10.0_693.11.6.el7.x86_64-8.4.5-1.x86_64.rpm
# /root/rpmbuild/RPMS/x86_64/drbd-km-debuginfo-8.4.5-1.x86_64.rpmmakeinsta

直接编译安装

## drbd模块

cd drbd
make
make install
lsmod|grep drbd
cp drbd.ko /lib/modules/`uname -r`/kernel/lib/

## 安装模块
modprobe drbd
## 验证drbd模块是否加载(部分系统默认有该模块)
lsmod|grep drbd

# drbd 364858 0
# libcrc32c 12644 4 xfs,drbd,nf_nat,nf_conntrack

编译 drbd-utils 组件

cd ../../drbd-utils-8.9.0/   
./configure
make rpm
# 返回:
###
+ exit 0
You have now:
/root/rpmbuild/RPMS/x86_64/drbd-km-3.10.0_693.11.6.el7.x86_64-8.4.5-1.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-km-debuginfo-8.4.5-1.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-utils-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-xen-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-udev-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-pacemaker-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-bash-completion-8.9.0-1.el7.centos.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/drbd-debuginfo-8.9.0-1.el7.centos.x86_64.rpm
###

此时有可能提示错误如下:

/usr/bin/xsltproc \
--xinclude \
http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl drbdsetup.xml
error : Operation in progress
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
cannot parse http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
make[1]: *** [drbdsetup.8] Error 4

提示有一个地址文件没能找到,解决方法:

yum -y install docbook-style-xsl

TODO: 此处暂未找到别的解决方法,欢迎读者留言。

安装

安装编译生成的文件

cd /root/rpmbuild/RPMS/x86_64/
rpm -ivh drbd-* --force

加载模块(参见分割线部分)

modprobe drbd

验证安装结果

lsmod|grep drbd
# 返回(`depends` 可能略有不同):
# drbd 373375 4
# libcrc32c 12644 2 xfs,drbd

drbd-overview

# 以下两者返回稍有不同
cat /proc/drbd
drbdadm -V
# 返回

DRBDADM_BUILDTAG=GIT-hash:\ 79677f4***7ca6b99929\ build\ by\ root@imoyao\,\ 2018-01-06\ 14:25:03
DRBDADM_API_VERSION=1
DRBD_KERNEL_VERSION_CODE=0x080405
DRBDADM_VERSION_CODE=0x080900
DRBDADM_VERSION=8.9.0

参考来源