1. 前言
毕业进入公司后,接触的第一个项目是做ceph内核客户端的优化,为了对ceph以及其客户端有更加深刻的了解,在通过rpm安装了一次ceph后,这里又通过源码编译配置了一次。其中,操作系统为centos7.2,编译ceph-10.2.3的源码。
2. 本文分析内容安排
- 下载源码并编译
- 配置ceph运行环境
- 使用ceph-deploy配置环境
- ceph运行命令
3. 下载源码并编译
- 从github下载源码,要加上–recursive参数,不然ceph源码内的很多子程序无法下载
git clone --recursive https://github.com/ceph/ceph.git
- 选择对应版本,跳到源码根目录,用
git tag
显示已有的版本,然后git checkout v10.2.3
跳到我们要编译的版本 - 下载依赖并开始编译
./install-deps.sh
./autogen.sh
./configure
make
注意:最后make编译的过程中,如果遇到编译器错误,可以添加-j参数指定处理器数量,make -j2
- 执行
make install
命令安装到本地,这一步也可以通过手动移动二进制文件和配置文件到相应目录。其中,二进制文件放到/usr/bin,库文件放到/usr/lib,配置文件存入/etc/ceph。
4. 配置ceph运行环境
接下来可以有两种方式来配置ceph运行环境,其一是直接手动运行,这种方式繁琐且容易出错,下面列出部分步骤,注意,这里步骤并不全,只是为了说明;后面会详细介绍ceph-deploy的方式,这种方式一键式自动化配置管理文档,并管理ceph的实际运行。
首先,通过手动的方式:
1. 查看/etc/ceph目录是否存在,不存在的话就自己建一个,然后创建/etc/ceph/ceph.conf文件
2. 运行uuidgen
命令创建unique ID,并将其赋值给fsid写入到ceph.conf文件,同时也将monitor节点的主机名和ip地址写入,最后的ceph.conf文件如下
3. 创建monitor keyring
ceph-authtool --create-keyring /tmp/ceph.mon --gen-key -n mon. --cap mon 'allow *'
4. 将client.admin的可以添加到monitor的keyring中
ceph-authtool /tmp/ceph.mon.keyring —import-keying /etc/ceph/ceph.client.admin.keyring
而所有上面这些操作如果通过ceph-deploy来运行,仅需一条ceph-deploy new MON
命令,便建立并配置了上述所有文档,下面一节讲通过ceph-deploy部署并运行ceph的过程。
5. 使用ceph-deploy配置环境
- 建立运行ceph-mon的配置文件和秘钥,将在/ect/ceph下生成ceph.conf和ceph.mon.keyring文件
ceph-deploy new [HOST...]
- 接下来的过程是为了在节点上实际安装ceph-mon,如果用户不指定HOST,这里因为我们已经提前安装了ceph组件,这里就不用这一步了
ceph-deploy mon create [HOST...]
- 在其中一个mon节点上执行
ceph-deploy gatherkeys [HOST...]
命令,收集新加入集群的节点的keys - 添加osd,准备osd磁盘
ceph-deploy osd create localhost:/dev/sdb
6. ceph运行命令
7. 总结
本文主要包含两部分,第一介绍了ceph源码编译过程,第二介绍了编译完成后的使用。
8. 作者介绍
梁明远,国防科大并行与分布式计算国家重点实验室研究生,读研期间重点研究docker容器技术。17年毕业后回老家进入浪潮,主攻ceph分布式文件系统的优化。邮箱:liangmingyuanneo@gmail.com