美文网首页Ceph
根据ceph源码制作ceph RPM包

根据ceph源码制作ceph RPM包

作者: ypdai | 来源:发表于2018-09-21 18:02 被阅读207次

    title: 根据ceph源码制作ceph RPM包

    概述

    我们在使用ceph的时候经常有下面的需求:

    • 遇到bug了,社区解决了,需要做fix bug的代码合入
    • 自己需要对ceph源码做一些小改动

    这些都需要修改原生ceph代码,然后编译之后再去测试。这里我们的目标就是把修改之后的ceph源码制作成rpm包,然后可以根据这些rpm到其他新机器上去安装、部署ceph集群,最后测试我们的改动点。

    1、准备编译机

    首先准备一台编译机,最好是物理机,虚拟机太慢了。下面是我准备的编译机系统环境:

    [root@node114 ~]# cat /etc/redhat-release 
    CentOS Linux release 7.2.1511 (Core) 
    [root@node114 ~]# uname -a
    Linux node114 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    

    2、获取指定版本的ceph源码包

    下载对应的ceph源码包(下载地址:http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/),我这里下载的ceph10.2.7。
    创建编译目录,这个目录可以根据你自己的实际情况来

    [root@node114 ~]# mkdir -p /root/dp/ceph10.2.7
    [root@node114 ~]# cd /root/dp/ceph10.2.7
    

    将下载好的ceph源码包ceph-10.2.7-0.el7.src.rpm放到/root/dp/ceph10.2.7目录里面,并解压

    [root@node114 ceph10.2.7]# rpm2cpio ceph-10.2.7-0.el7.src.rpm |cpio -div
    [root@node114 ceph10.2.7]# tar -xvf ceph-10.2.7.tar.bz2
    

    查看下当前目录应该有以下几个文件

    [root@node114 ceph10.2.7]# ll
    total 3927556
    drwxr-xr-x 13 1108 1108       4096 Aug 28 09:32 ceph-10.2.7
    -rw-r--r--  1 root root   11245006 Apr 11  2017 ceph-10.2.7-0.el7.src.rpm
    -rw-r--r--  1 root root   11251231 Aug 28 09:31 ceph-10.2.7.tar.bz2
    -rw-r--r--  1 root root      47629 Aug 28 09:31 ceph.spec
    

    3、编译ceph源码

    3.1 cd到源码目录里面

    [root@node114 ceph10.2.7]# cd ceph-10.2.7
    

    3.2 安装相关依赖包

    [root@node114 ceph-10.2.7]# ./install-deps.sh
    

    3.3 生成configure文件

    [root@node114 ceph-10.2.7]# ./autogen.sh
    

    3.4 生成makefile文件

    [root@node114 ceph-10.2.7]# ./configure
    

    3.5 开始编译

    [root@node114 ceph-10.2.7]# make -j8
    

    好了,上面可以正常编译ceph源码。此时,如果我们对ceph源码做了一些更改,比如修改了一个bug或增加了一个功能,想给到测试人员去测试,那我们可以制作成rpm包,然后再给到测试人员去其他新机器上安装部署集群。下面就开始制作rpm包。

    4、制作rpm包

    此时,随便修改点ceph源码,比如加几个日志输出,然后将我们上面修改好的ceph源码制作成对应的rpm包。

    4.1 安装配置rpmbuild

    我们需要只用rpmbuild工具制作rpm包,所以这里需要安装这个工具,如果你的环境上已经安装,则可以跳过

    [root@node114 ceph10.2.7]# yum install rpm-build rpmdevtools
    

    创建rpmbuild需要的一些目录

    [root@node114 ceph10.2.7]# mkdir -p /root/dp/rpmbuild/{SOURCES,BUILDROOT,RPMS,SPECS,SRPMS}/
    

    4.2 打包我们修改之后的ceph源码

    将我们修改之后的ceph源码打包

    [root@node114 ceph10.2.7]# tar -cvf  /root/dp/rpmbuild/SOURCES/ceph-10.2.7.tar.bz2  ceph-10.2.7
    

    将ceph.spec文件放到/root/dp/SPECS目录下

    [root@node114 ceph10.2.7]# cp ceph.spec /root/dp/rpmbuild/SPECS
    

    开始制作rpm包

    [root@node114 ceph10.2.7]# cd ~
    [root@node114 ~]# rpmbuild -bb --define '_topdir /root/dp/rpmbuild' /root/dp/rpmbuild/SPECS/ceph.spec
    

    如果上面rpmbuild这一步报依赖包错误,则根据报错信息,使用yum安装对应的包即可,因为环境不同可能报的依赖包错误可能不一样,以下是我的环境需要安装的依赖包

    [root@node114 ~]# yum install -y checkpolicy selinux-policy-devel cmake hdparm libxml2-devel python-nose python-sphinx
    [root@node114 ~]# yum install -y valgrind-devel xmlstarlet yasm nss-devel lttng-ust-devel libbabeltrace-devel junit policyhelp
    [root@node114 ~]# yum install selinux-policy-doc -y
    

    好了,安装好依赖包之后,再次执行rpmbuild -bb命令进行rpm包制作,接下来就等待rpm包制作完成。

    4.3 查看制作好的rpm包

    上面执行完rpmbuild命令之后,如果没有错误发生,那么就可以在/root/dp/rpmbuild/RPMS/目录下看到制作好的rpm包了

    [root@node114 ~]# tree dp/rpmbuild/RPMS/
    dp/rpmbuild/RPMS/
    └── x86_64
        ├── ceph-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-base-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-common-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-debuginfo-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-devel-compat-10.2.7-0.el7.centos.x86_64.rpm
        ├── cephfs-java-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-fuse-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-libs-compat-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-mds-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-mon-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-osd-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-radosgw-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-selinux-10.2.7-0.el7.centos.x86_64.rpm
        ├── ceph-test-10.2.7-0.el7.centos.x86_64.rpm
        ├── libcephfs1-10.2.7-0.el7.centos.x86_64.rpm
        ├── libcephfs1-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── libcephfs_jni1-10.2.7-0.el7.centos.x86_64.rpm
        ├── libcephfs_jni1-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── librados2-10.2.7-0.el7.centos.x86_64.rpm
        ├── librados2-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── libradosstriper1-10.2.7-0.el7.centos.x86_64.rpm
        ├── libradosstriper1-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── librbd1-10.2.7-0.el7.centos.x86_64.rpm
        ├── librbd1-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── librgw2-10.2.7-0.el7.centos.x86_64.rpm
        ├── librgw2-devel-10.2.7-0.el7.centos.x86_64.rpm
        ├── python-ceph-compat-10.2.7-0.el7.centos.x86_64.rpm
        ├── python-cephfs-10.2.7-0.el7.centos.x86_64.rpm
        ├── python-rados-10.2.7-0.el7.centos.x86_64.rpm
        ├── python-rbd-10.2.7-0.el7.centos.x86_64.rpm
        ├── rbd-fuse-10.2.7-0.el7.centos.x86_64.rpm
        ├── rbd-mirror-10.2.7-0.el7.centos.x86_64.rpm
        └── rbd-nbd-10.2.7-0.el7.centos.x86_64.rpm
    
    1 directory, 33 files
    

    ok,现在可以把这些rpm包放到其他机器上去安装、部署集群测试我们自己加的一些东西了。

    5、通过rpm包安装集群

    前面我们已经制作好了ceph的相关rpm包,现在我们需要在新机器上,通过这些rpm包来安装、部署ceph集群。

    5.1 准备新机器

    我们准备了一台全新的虚拟机,环境如下:

    [root@lab02 ~]# cat /etc/redhat-release 
    CentOS Linux release 7.2.1511 (Core) 
    [root@lab02 ~]# uname -a
    Linux lab02 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    

    然后将我们制作好的ceph rpm包放到新机器上

    [root@lab02 cephrpms]# pwd
    /root/cephrpms
    [root@lab02 cephrpms]# ll
    total 1414128
    -rw-r--r--. 1 root root       1888 Sep 21 16:39 ceph-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    4384184 Sep 21 16:39 ceph-base-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root   17300368 Sep 21 16:39 ceph-common-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root 1316040884 Sep 21 16:39 ceph-debuginfo-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       2124 Sep 21 16:40 ceph-devel-compat-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      22208 Sep 21 16:40 cephfs-java-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1935520 Sep 21 16:40 ceph-fuse-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       2076 Sep 21 16:40 ceph-libs-compat-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    2921008 Sep 21 16:40 ceph-mds-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    2922192 Sep 21 16:40 ceph-mon-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    9458688 Sep 21 16:40 ceph-osd-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root     271052 Sep 21 16:40 ceph-radosgw-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      19516 Sep 21 16:40 ceph-selinux-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root   76149364 Sep 21 16:40 ceph-test-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1940680 Sep 21 16:40 libcephfs1-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      12912 Sep 21 16:40 libcephfs1-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1641100 Sep 21 16:40 libcephfs_jni1-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       2392 Sep 21 16:40 libcephfs_jni1-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1985928 Sep 21 16:40 librados2-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root     486748 Sep 21 16:40 librados2-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1905556 Sep 21 16:40 libradosstriper1-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       7828 Sep 21 16:40 libradosstriper1-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    2617624 Sep 21 16:40 librbd1-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      12428 Sep 21 16:40 librbd1-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    3058764 Sep 21 16:40 librgw2-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       5052 Sep 21 16:40 librgw2-devel-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root       2000 Sep 21 16:40 python-ceph-compat-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      78740 Sep 21 16:40 python-cephfs-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root     147992 Sep 21 16:40 python-rados-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root      79348 Sep 21 16:40 python-rbd-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root     442080 Sep 21 16:40 rbd-fuse-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root    1652712 Sep 21 16:40 rbd-mirror-10.2.7-0.el7.centos.x86_64.rpm
    -rw-r--r--. 1 root root     482776 Sep 21 16:40 rbd-nbd-10.2.7-0.el7.centos.x86_64.rpm
    

    5.2 安装ceph的依赖

    因为我们只是制作了ceph相关的rpm包,ceph本身需要依赖其他第三方的一些软件,所以我们需要安装那些依赖,那到底需要哪些依赖包呢?我们来让系统提示我们

    [root@lab02 cephrpms]# rpm -ivh *.rpm
    error: Failed dependencies:
        cryptsetup is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        hdparm is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        liblttng-ust.so.0()(64bit) is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        python-requests is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        python-setuptools is needed by ceph-base-1:10.2.7-0.el7.centos.x86_64
        libbabeltrace-ctf.so.1()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        libbabeltrace.so.1()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        libboost_program_options-mt.so.1.53.0()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        libboost_regex-mt.so.1.53.0()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        python-requests is needed by ceph-common-1:10.2.7-0.el7.centos.x86_64
        java is needed by cephfs-java-1:10.2.7-0.el7.centos.x86_64
        junit is needed by cephfs-java-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2()(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.4)(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.5)(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.6)(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.8)(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.9)(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-fuse-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-mds-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-mds-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-mon-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by ceph-mon-1:10.2.7-0.el7.centos.x86_64
        libleveldb.so.1()(64bit) is needed by ceph-mon-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-mon-1:10.2.7-0.el7.centos.x86_64
        python-flask is needed by ceph-mon-1:10.2.7-0.el7.centos.x86_64
        gdisk is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libboost_program_options-mt.so.1.53.0()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.2)(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.5)(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.6)(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.8)(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libleveldb.so.1()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-osd-1:10.2.7-0.el7.centos.x86_64
        libfcgi.so.0()(64bit) is needed by ceph-radosgw-1:10.2.7-0.el7.centos.x86_64
        mailcap is needed by ceph-radosgw-1:10.2.7-0.el7.centos.x86_64
        python-flask is needed by ceph-radosgw-1:10.2.7-0.el7.centos.x86_64
        selinux-policy-base >= 3.13.1-192.el7_5.6 is needed by ceph-selinux-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        libboost_program_options-mt.so.1.53.0()(64bit) is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        libleveldb.so.1()(64bit) is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        libtcmalloc.so.4()(64bit) is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        xmlstarlet is needed by ceph-test-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by libcephfs1-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by libcephfs1-1:10.2.7-0.el7.centos.x86_64
        java is needed by libcephfs_jni1-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by libcephfs_jni1-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by libcephfs_jni1-1:10.2.7-0.el7.centos.x86_64
        java is needed by libcephfs_jni1-devel-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by librados2-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by librados2-1:10.2.7-0.el7.centos.x86_64
        liblttng-ust.so.0()(64bit) is needed by librados2-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by librados2-devel-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by libradosstriper1-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by libradosstriper1-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by librbd1-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by librbd1-1:10.2.7-0.el7.centos.x86_64
        liblttng-ust.so.0()(64bit) is needed by librbd1-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by librgw2-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by librgw2-1:10.2.7-0.el7.centos.x86_64
        libfcgi.so.0()(64bit) is needed by librgw2-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by rbd-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2()(64bit) is needed by rbd-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.5)(64bit) is needed by rbd-fuse-1:10.2.7-0.el7.centos.x86_64
        libfuse.so.2(FUSE_2.6)(64bit) is needed by rbd-fuse-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by rbd-mirror-1:10.2.7-0.el7.centos.x86_64
        libboost_random-mt.so.1.53.0()(64bit) is needed by rbd-mirror-1:10.2.7-0.el7.centos.x86_64
        libboost_iostreams-mt.so.1.53.0()(64bit) is needed by rbd-nbd-1:10.2.7-0.el7.centos.x86_64
        libboost_regex-mt.so.1.53.0()(64bit) is needed by rbd-nbd-1:10.2.7-0.el7.centos.x86_64
    

    哇··· 这么多依赖,ceph本身就是个庞大复杂的东西,依赖多也正常。我们通过yum的方式来处理这些依赖

    [root@lab02 cephrpms]# yum install -y cryptsetup hdparm boost python-requests python-setuptools fuse fuse-devel leveldb fcgi gperftools-libs java babeltrace libbabeltrace libbabeltrace-devel junit python-flask gdisk mailcap selinux-policy-base xmlstarlet lttng-ust lttng-ust-devel
    

    5.3 安装ceph

    好了,我们开始来安装ceph了

    [root@lab02 cephrpms]# rpm -ivh *.rpm
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:librados2-1:10.2.7-0.el7.centos  ################################# [  3%]
       2:librbd1-1:10.2.7-0.el7.centos    ################################# [  6%]
       3:libcephfs1-1:10.2.7-0.el7.centos ################################# [  9%]
       4:librgw2-1:10.2.7-0.el7.centos    ################################# [ 12%]
       5:librados2-devel-1:10.2.7-0.el7.ce################################# [ 15%]
       6:python-rados-1:10.2.7-0.el7.cento################################# [ 18%]
       7:libradosstriper1-1:10.2.7-0.el7.c################################# [ 21%]
       8:python-cephfs-1:10.2.7-0.el7.cent################################# [ 24%]
       9:python-rbd-1:10.2.7-0.el7.centos ################################# [ 27%]
      10:ceph-common-1:10.2.7-0.el7.centos################################# [ 30%]
      11:ceph-selinux-1:10.2.7-0.el7.cento################################# [ 33%]
      12:ceph-base-1:10.2.7-0.el7.centos  ################################# [ 36%]
      13:libcephfs_jni1-1:10.2.7-0.el7.cen################################# [ 39%]
      14:libcephfs_jni1-devel-1:10.2.7-0.e################################# [ 42%]
      15:ceph-mds-1:10.2.7-0.el7.centos   ################################# [ 45%]
      16:ceph-mon-1:10.2.7-0.el7.centos   ################################# [ 48%]
      17:ceph-osd-1:10.2.7-0.el7.centos   ################################# [ 52%]
      18:libradosstriper1-devel-1:10.2.7-0################################# [ 55%]
      19:libcephfs1-devel-1:10.2.7-0.el7.c################################# [ 58%]
      20:librbd1-devel-1:10.2.7-0.el7.cent################################# [ 61%]
      21:ceph-devel-compat-1:10.2.7-0.el7.################################# [ 64%]
      22:ceph-1:10.2.7-0.el7.centos       ################################# [ 67%]
      23:cephfs-java-1:10.2.7-0.el7.centos################################# [ 70%]
      24:ceph-radosgw-1:10.2.7-0.el7.cento################################# [ 73%]
      25:ceph-test-1:10.2.7-0.el7.centos  ################################# [ 76%]
      26:rbd-mirror-1:10.2.7-0.el7.centos ################################# [ 79%]
      27:python-ceph-compat-1:10.2.7-0.el7################################# [ 82%]
      28:librgw2-devel-1:10.2.7-0.el7.cent################################# [ 85%]
      29:ceph-libs-compat-1:10.2.7-0.el7.c################################# [ 88%]
      30:rbd-fuse-1:10.2.7-0.el7.centos   ################################# [ 91%]
      31:rbd-nbd-1:10.2.7-0.el7.centos    ################################# [ 94%]
      32:ceph-fuse-1:10.2.7-0.el7.centos  ################################# [ 97%]
      33:ceph-debuginfo-1:10.2.7-0.el7.cen################################# [100%]
    

    检查下是否都已经正确安装

    [root@lab02 cephrpms]# rpm -qa|grep ceph
    libcephfs_jni1-10.2.7-0.el7.centos.x86_64
    ceph-osd-10.2.7-0.el7.centos.x86_64
    ceph-devel-compat-10.2.7-0.el7.centos.x86_64
    ceph-test-10.2.7-0.el7.centos.x86_64
    ceph-libs-compat-10.2.7-0.el7.centos.x86_64
    ceph-debuginfo-10.2.7-0.el7.centos.x86_64
    python-cephfs-10.2.7-0.el7.centos.x86_64
    ceph-common-10.2.7-0.el7.centos.x86_64
    ceph-base-10.2.7-0.el7.centos.x86_64
    libcephfs_jni1-devel-10.2.7-0.el7.centos.x86_64
    ceph-mon-10.2.7-0.el7.centos.x86_64
    ceph-10.2.7-0.el7.centos.x86_64
    ceph-radosgw-10.2.7-0.el7.centos.x86_64
    ceph-fuse-10.2.7-0.el7.centos.x86_64
    libcephfs1-10.2.7-0.el7.centos.x86_64
    ceph-selinux-10.2.7-0.el7.centos.x86_64
    ceph-mds-10.2.7-0.el7.centos.x86_64
    libcephfs1-devel-10.2.7-0.el7.centos.x86_64
    cephfs-java-10.2.7-0.el7.centos.x86_64
    python-ceph-compat-10.2.7-0.el7.centos.x86_64
    

    上面我们已经安装完ceph软件及其依赖的软件包了,就可以正常的部署集群了,部署的步骤不是这里的重点,就不再详细描述了。下面是我部署的集群:

    [root@lab02 cephdeploy]# ceph -s
        cluster f4235ef8-86bd-43bb-a794-e8cb0e74c68e
         health HEALTH_OK
         monmap e1: 1 mons at {lab02=192.168.10.60:6789/0}
                election epoch 3, quorum 0 lab02
         osdmap e10: 2 osds: 2 up, 2 in
                flags sortbitwise,require_jewel_osds
          pgmap v20: 64 pgs, 1 pools, 0 bytes data, 0 objects
                68516 kB used, 30631 MB / 30697 MB avail
                      64 active+clean
    

    总结

    好了,我们这里就完成我们开始的目标,这里再总结下我们做了哪些事情:

    • 获取ceph指定版本的源码,正确编译源码
    • 修改一点ceph源码,比如可以在osd启动的时候加点输出(修改ceph_osd.cc)
    • 编译修改之后的源码,制作rpm包
    • 到新机器上通过rpm包方式安装集群,然后部署集群

    相关文章

      网友评论

        本文标题:根据ceph源码制作ceph RPM包

        本文链接:https://www.haomeiwen.com/subject/fujznftx.html