源代码编译安装GlusterFS

编译GlusterFS环境

编译GlusterFS需要以下软件包:

编译GlusterFS需要的软件包列表
# GNU Autotools
  Automake
  Autoconf
  Libtool
lex (generally flex)
GNU Bison
OpenSSL
libxml2
Python 2.x
libaio
libibverbs
librdmacm
readline
lvm2
glib2
liburcu
cmocka
libacl
sqlite
fuse-devel
liburing-devel

Fedora编译需要

  • 使用dnf在Fedora上安装以下编译环境:

在Fedora编译GlusterFS需要的软件包
dnf install automake autoconf libtool flex bison openssl-devel  \
  libxml2-devel python-devel libaio-devel libibverbs-devel      \
  librdmacm-devel readline-devel lvm2-devel glib2-devel         \
  userspace-rcu-devel libcmocka-devel libacl-devel sqlite-devel \
  fuse-devel redhat-rpm-config rpcgen libtirpc-devel make       \
  libuuid-devel liburing-devel gperftools libcurl-devel

Ubuntu编译需要

  • 使用apt在Ubuntu上安装编译环境:

在Ubuntu编译GlusterFS需要的软件包
sudo apt-get install make automake autoconf libtool flex bison  \
  pkg-config libssl-dev libxml2-dev python-dev libaio-dev       \
  libibverbs-dev librdmacm-dev libreadline-dev liblvm2-dev      \
  libglib2.0-dev liburcu-dev libcmocka-dev libsqlite3-dev       \
  libacl1-dev liburing-dev google-perftools

CentOS/Enterprise Linux v7需要(已实践)

安装CentOS Storage SIG Yum Repos
yum install centos-release-gluster
  • 使用 yum 在CentOS / Enterprise Linux 7上安装编译环境:

在CentOS 7编译GlusterFS需要的软件包
:<<'EOF'
官方原文安装依赖:
yum install autoconf automake bison cmockery2-devel dos2unix flex   \
  fuse-devel glib2-devel libacl-devel libaio-devel libattr-devel    \
  libcurl-devel libibverbs-devel librdmacm-devel libtirpc-devel     \
  libtool libxml2-devel lvm2-devel make openssl-devel pkgconfig     \
  pyliblzma python-devel python-eventlet python-netifaces           \
  python-paste-deploy python-simplejson python-sphinx python-webob  \
  pyxattr readline-devel rpm-build sqlite-devel systemtap-sdt-devel \
  tar userspace-rcu-devel
EOF

:<<'EOF'
需要激活CentOS SIG repos才能安装 userspace-rcu-devel

我的实践去除了官方文档中的4个软件包:
  cmockery2-devel
  python-eventlet
  python-paste-deploy
  python-simplejson

增加了:
  gperftools
  gperftools-devel
EOF

yum install autoconf automake bison dos2unix flex                   \
  fuse-devel glib2-devel libacl-devel libaio-devel libattr-devel    \
  libcurl-devel libibverbs-devel librdmacm-devel libtirpc-devel     \
  libtool libxml2-devel lvm2-devel make openssl-devel pkgconfig     \
  pyliblzma python-devel python-netifaces                           \
  python-sphinx python-webob                                        \
  pyxattr readline-devel rpm-build sqlite-devel systemtap-sdt-devel \
  tar userspace-rcu-devel gperftools gperftools-devel

CentOS / Enterprise Linux v8需要

  • 激活build环境需要的仓库:

为CentOS 8激活必要的编译所需仓库
yum-config-manager --enable powertools --enable devel
  • 使用 dnf 在CentOS 8上安装编译环境:

在CentOS8编译GlusterFS需要的软件包
yum install autoconf automake bison dos2unix flex fuse-devel glib2-devel   \
  libacl-devel libaio-devel libattr-devel libcurl-devel libibverbs-devel   \
  librdmacm-devel libtirpc-devel libuuid-devel libtool libxml2-devel       \
  lvm2-devel make openssl-devel pkgconfig xz-devel  python3-devel          \
  python3-netifaces python3-paste-deploy python3-simplejson python3-sphinx \
  python3-webob python3-pyxattr readline-devel rpm-build sqlite-devel      \
  systemtap-sdt-devel tar userspace-rcu-devel rpcgen liburing-devel

CentOS Stream 9需要

  • 激活build环境需要的仓库:

为CentOS 9激活必要的编译所需仓库
yum-config-manager --enable crb --enable devel

备注

CentOS Stream 9我还么有实践过,这里只摘录原文,编译需要的安装包可能同 CentOS 8(不确定)

源代码

根据 Gluster Community Packages 信息,按照需求(发行版)下载

下载 glusterfs-11.0 源代码tgz包
gluster_version=11.0

wget https://download.gluster.org/pub/gluster/glusterfs/11/LATEST/glusterfs-${gluster_version}.tar.gz

tar xfz glusterfs-${gluster_version}.tar.gz
cd glusterfs-${gluster_version}

编译配置

  • 使用 autogen 生成 configure 脚本:

使用 autogen 生成GusterFS的 configure 脚本
./autogen.sh
  • 执行 configure

    ./configure
    

CentOS 7

  • 针对CentOS 7使用以下编译配置:

执行 configure 脚本(注意关闭CentOS 7不支持选项)
./configure --without-libtirpc --disable-linux-io_uring

编译和安装

  • 编译和安装GlusterFS非常简单:

执行编译和安装
make
sudo make install

编译RPMs

在基于 RPM 的系统中,如 Fedora 可以非常容易直接构建RPM包

安装 rpm-build 构建工具
yum install mock rpm-build selinux-policy-devel bash-completion

备注

这里我比官方文档多安装了一个 bash-completion ,原因是我在 CentOS 7环境编译GlusterFS 11 发现 pkg-config 依赖这个辅助功能

  • 然后执行以下命令构建GlusterFS RPMs:

执行构建GlusterFS RPMs
cd extras/LinuxRPM
make glusterrpms

构建GlusterFS RPMs输出信息显示,实际上构建参数增加了一个 --enable-gnfs

参考