根据ceph源码制作ceph RPM包


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包方式安装集群,然后部署集群
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343