Ceph官方版本目前支持的纠删码很有限,实验室这块希望能够整合我们自主开发的纠删码BRS(Binary Reed–Solomon encoding),所以需要编译Ceph环境。Ceph官方目前推荐的安装方式都是通过Ceph-deploy的工具来安装配置,搭建起来十分简单。目前直接通过Ceph源码进行编译安装的中文教程有太多坑了。笔者亲身通过编译Ceph搭建环境之后,对这个流程进行了一个完整的小结,后续的童鞋可以做一个简单的参考。
Ceph 的初创来自Sage Weil 博士的 PhD 论文,论文 “Ceph: A Scalable, High-Performance Distributed File System”详细的阐述了 Ceph 的设计架构。 简而言之,Ceph 作为一个分布式存储系统设计的目标定位为:
笔者认为Ceph作为一个优秀的分布式存储系统,未来分布式存储系统提供了设计基础。自Linux内核2.6.34版开始,Ceph.ko已经集成到Linux内核之中,作为分布式文件系统的备选项之一。同时Ceph也是OpenStack中优秀的开源存储解决方案,支持通过Ceph作为块存储或对象存储进行读写访问。
Ceph的源码可以去Github之上clone下来,或者去Ceph官网下载。这里重点提一下Ceph的版本问题,Ceph在Hammer版本之后,采取了新的版本命名规则:
目前对Ceph进行二次开发的版本基本上是基于稳定TLS版本来做,实验室选取了两个版本进行了开发。10.2.6版本与12.2.1版本,本文基于10.2.6的版本进行编写。(12.2.1版本不在使用autotools作为编译工具,同时添加了Mgr等新的组件,配置文件的编写方式也略有不同。)
由于实验室拟态系统的要求与设定,这里笔者选择了混用64位的Ubuntu 14.04与64位的Centos进行编译安装,二者流程大同小异,不同之处我会重点标记。通过cd 进入Ceph的源码目录,依次执行如下命令
1. ./install-deps.sh //安装对应的Ceph依赖包
2 ./autogen.sh //调用autotools脚本,生成configure和makefile文件
3. ./configure //这步是很麻烦的一步,由于第一步并不会完全安装好所有依赖,需要读者见招拆招,按照终端提示安装依赖。
(注:Centos系列不会存在类似问题,嫌麻烦的可以直接用Centos进行编译安装)
4. make //进入漫长的等待,多核可以添加-j{cpu核数} 如make -j4
5. make install //安装Ceph
PS:编译Ceph时需要超大的内存与硬盘空间,所以建议待安装节点的内存和硬盘空间要足够大,否则会出现:
virtual memory exhausted: Cannot allocate memory 或 full disk等问题。
编译成功后,也不要高兴得太早了,接下来我们按下面配置架构图来构建Ceph集群。
ceph集群图.png
这部分应该是最让人头疼的部分了。编译安装Ceph和直接通过包管理器安装Ceph的可大有不同。如/etc/ceph/的配置目录就自己新建,默认的/var/log/ceph路径也需要通过mkdir新建,否则Ceph会直接丢弃日志文件。
你的初始监视器可以正常运行后就可以添加 osd 了。要想让集群达到 active + clean 状态,必须安装足够多的 osd 来处理pgs,在完成Mon启动之后,集群就有了默认的 CrushMap,但现在此图还是空的,里面没有任何 osd 映射到 Ceph 节点,所以我们要先启动osd节点,之后编辑CrushMap,并将其导入Mon节点。
接下来依次启动图中的3个osd节点,此次osd节点虽然启动了,但是并没有加入到CrushMap之中进行映射,接下来我们需要导出Mon上的CrushMap,并进行编辑,之后导回到Mon中。
接下来我们要给这些osd设备分配权重 CrushMap主要有 4 个主要类型。 设备 由任意对象存储设备组成,即对应一个 ceph-osd 进程的存储器。 桶类型: 定义了 CRUSH 分级结构里要用的桶类型( types ),桶由逐级汇聚的存储位置(如行、机柜、机箱、主机等等)及其权重组成。 桶例程: 定义了桶类型后,还必须声明主机的桶类型、以及规划的其它故障域。 规则: 由选择桶的方法组成。 目前我们只要大概有个概念,接下来我们只需要简单的将我们的设备添加到CrushMap之中: root default { id -1 # do not change unnecessarily # weight 3.240 alg straw hash 0 # rjenkins1 item slave1 weight 1.00 item slave2 weight 1.00 item slave3 weight 1.00 } host slave1 { id -4 alg straw hash 0 item osd.0 weight 1.00 } host slave2 { id -2 alg straw hash 0 item osd.1 weight 1.00 } host slave3 { id -3 alg straw hash 0 item osd.2 weight 1.00 }
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有