systemd下手工部署OSD服务-Jewel版本

Ceph自动化部署工具现状

  • ceph-deploy 已经处于被淘汰边缘(官方现在主推ceph-ansible),deploy新手练手可以,配置管理太弱鸡,每次overwrite-conf都需要很大勇气。
  • ceph-ansible 看起来很美好,但是无法完美适配手头各种差异化的部署需求,看完源码,把里面核心的模块功能抽取出来,完全可以自己做,没必要拿官方的ansible。
  • ceph-deploy其实也是通过ssh去控制各个节点的ceph-disk命令工具执行,但是ceph-disk又被官方弃坑,最新版本推荐使用ceph-volume去替代ceph-disk(主要是为了兼容LVM和Bluestore),但是目前ceph-volume也有很多的问题,特别是Jewel以下的版本还是最好用ceph-disk。
  • ceph-disk封装得很好,但是也屏蔽了很多部署细节,特别是在systemd下面,你需要熟悉ceph-disk命令、操作系统udev映射流程等各种细节,学习成本稍微有点高。
  • 考虑到官方在部署工具上面不断的挖坑又弃坑,所以干脆自己从零开始造轮子,但是无奈官方手工部署文档也有很多坑,所以才有了本文。

OSD全手工部署流程

#生成UUID用于标记osd-journal分区
[root@demo cephuser]# uuidgen  
0f34d4c5-68c4-41cf-a598-eb3e4c363041
#生成UUID用于标记osd-data分区
[root@demo cephuser]# uuidgen 
e31d5c4c-a183-4819-8540-d00d14c42120
#生成UUID用于新建OSD
[root@demo cephuser]# uuidgen 
a6ea71d6-ed18-4523-9f6d-cc6badcfddb6
#以UUID方式创建OSD ID,注意这里返回的OSD ID=1
[root@demo cephuser]# ceph osd create a6ea71d6-ed18-4523-9f6d-cc6badcfddb6
1
#创建OSD的journal分区,注意通过打上typecode标签实现udev自动发现Journal设备
[root@demo cephuser]# /sbin/sgdisk --new=2:0:+1024M --change-name="2:1-journal" --partition-guid=2:0f34d4c5-68c4-41cf-a598-eb3e4c363041 --typecode=2:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- /dev/sdd
The operation has completed successfully.
#创建OSD的data分区,注意通过打上typecode标签实现udev自动发现data设备
[root@demo cephuser]# /sbin/sgdisk --largest-new=1 --change-name="1:1-data" --partition-guid=1:e31d5c4c-a183-4819-8540-d00d14c42120 --typecode=1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d --mbrtogpt -- /dev/sdd
The operation has completed successfully.
#对OSD-data分区进行格式化,注意journal分区不需要格式化
[root@demo cephuser]# /sbin/mkfs -t xfs -f /dev/sdd1
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=589759 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2359035, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#新建OSD数据目录
[root@demo cephuser]# mkdir /var/lib/ceph/osd/ceph-1
#挂载OSD数据目录,注意自己根据情况加上其他参数
[root@demo cephuser]# mount -t xfs /dev/sdd1 /var/lib/ceph/osd/ceph-1
#建立journal设备的软连接
[root@demo cephuser]# ln -s  /dev/disk/by-partuuid/0316de91-72a9-4b77-b255-16f852c40f91 /var/lib/ceph/osd/ceph-1/journal
#导出最新的monmap
[root@demo cephuser]# /usr/bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-1/activate.monmap
got monmap epoch 1
#调整目录权限
[root@demo osd]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-1
#初始化OSD,生成keyring等基础数据
[root@demo osd]# /usr/bin/timeout 300 ceph-osd --cluster ceph --mkfs --mkkey -i 1 --monmap /var/lib/ceph/osd/ceph-1/activate.monmap --osd-data /var/lib/ceph/osd/ceph-1 --osd-journal /var/lib/ceph/osd/ceph-1/journal --osd-uuid a6ea71d6-ed18-4523-9f6d-cc6badcfddb6 --keyrin$
 /var/lib/ceph/osd/ceph-1/keyring --setuser ceph --setgroup ceph
2018-03-29 02:18:10.802406 7ff1e0eea800 -1 journal check: ondisk fsid 862a9f2e-f49a-438f-a264-cece50d8c7e5 doesn't match expected a6ea71d6-ed18-4523-9f6d-cc6badcfddb6, invalid (someone else's?) journal
2018-03-29 02:18:10.827859 7ff1e0eea800 -1 filestore(/var/lib/ceph/osd/ceph-1) could not find #-1:7b3f43c4:::osd_superblock:0# in index: (2) No such file or directory
2018-03-29 02:18:10.888068 7ff1e0eea800 -1 created object store /var/lib/ceph/osd/ceph-1 for osd.1 fsid bfbf1b8f-5892-494e-883e-71922b3628aa
2018-03-29 02:18:10.888113 7ff1e0eea800 -1 auth: error reading file: /var/lib/ceph/osd/ceph-1/keyring: can't open /var/lib/ceph/osd/ceph-1/keyring: (2) No such file or directory
2018-03-29 02:18:10.888266 7ff1e0eea800 -1 created new key in keyring /var/lib/ceph/osd/ceph-1/keyring
#添加OSD用户权限,并导入到ceph auth系统中
[root@demo osd]# ceph auth add osd.1 osd  'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring
added key for osd.1
#创建systemd启动状态文件,确保通过systemd可以开机自动启动
[root@demo osd]# touch /var/lib/ceph/osd/ceph-1/systemd
#创建Journal_uuid文件,确保开机自动找到正确的Journal分区,这里填journal分区的UUID
[root@demo osd]# echo "0316de91-72a9-4b77-b255-16f852c40f91" > /var/lib/ceph/osd/ceph-1/journal_uuid
#再次更新数据目录权限
[root@demo ceph-1]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-1
#启动OSD服务
[root@demo osd]# systemctl start ceph-osd@1
#注册开机启动OSD服务
[root@demo osd]# systemctl enable ceph-osd@1

后记

  • 尽量用UUID去做配置,避免发生重启以后设备ID变化的情况。
  • 读者有需要的照着上面的写个脚本,或者写个ansible模块,会比较方便后续业务应用。
  • typecode是整个OSD服务自动启动的核心,具体可以看磨磨的博客,后附地址。
  • 生产环境尽量不要用ceph-deploy,就算要用也要做好每次操作前后的ceph.conf的配置备份。
  • 上面的操作过程可以完美兼容ceph-disk和ceph-deploy,基本上不会破坏原有环境配置。

http://www.zphj1987.com/2016/12/26/manage-ceph-osd-journal-uuid/

原文发布于微信公众号 - Ceph对象存储方案(cephbook)

原文发表时间:2018-03-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

错误消息 parent.relativePath points at wrong local POM的处理方法

Project build error: Non-resolvable parent POM for com.sap.cloud.sample:connecti...

3882
来自专栏Debian社区

Ubuntu发布重要更新将修复九个漏洞

Canonical发布了针对所有支持的Ubuntu操作系统的新的Linux内核安全更新,解决了由各个研究人员发现的总共九个漏洞。

1263
来自专栏Jerry的SAP技术分享

一个用JavaScript生成思维导图(mindmap)的github repo

github 地址:https://github.com/dundalek/markmap

5314
来自专栏黑泽君的专栏

关于win10系统安装VMware12Pro后,win10系统的 控制面板\网络和 Internet\网络连接\更改适配器选项卡中 没有虚拟网卡VMnet1和VMnet8图标,该如何把他们显示出来呢?

安装VMware12Pro后,PC主机通过命令行:ipconfig/all ,查看发现没有 VMnet1 和VMnet8 。

2211
来自专栏更流畅、简洁的软件开发方式

【自然框架】稳定版beta1的Demo —— 四:角色管理。另外 在线演示 终于搞定了

在线演示   首先感谢“云淡风清”和“恭敬”提供域名、空间和数据库!   感谢大家对我的支持!   在线演示:http://demo.naturefw.co...

2566
来自专栏程序员叨叨叨

Mac系统配置php环境

此文是之前在CSDN上写的一篇博客,今天心血来潮,将其转移至简书平台,原文链接:http://blog.csdn.net/wj_november/article...

1542
来自专栏Youngxj

站长友链自助添加插件V1.2-美化版

1613
来自专栏谭伟华)的专栏

Amazon Aurora:云时代的数据库 ( 中)

文章详尽的介绍了 Aurora 设计背后的驱动和思考,以及如何在云上实现一个同时满足高并发、高吞吐量、高稳定性、高可用、高扩展的云数据库。

3910
来自专栏Seebug漏洞平台

Discuz!X ≤3.4 任意文件删除漏洞分析

Discuz!X社区软件,是一个采用 PHP 和 MySQL 等其他多种数据库构建的性能优异、功能全面、安全稳定的社区论坛平台。

4158
来自专栏FreeBuf

Discuz! 任意文件删除漏洞重现及分析

0x00 概述 9月29日,Discuz修复了一个前台任意文件删除的漏洞,相似的漏洞曾在2014年被提交给wooyun和discuz官方,但是修复不完全导致了这...

2505

扫码关注云+社区