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 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

使用 RetroShare 分享资源 下载安装注册添加好友分享文件搜索资源获得资源

本文告诉大家如何使用 RetroShare 来分享资源。因为 RetroShare 是一个 p2p 分享的工具,所以他比现在很多云盘都好用,在网上,很多大神说可...

1021
来自专栏王小雷

python数据分析工具安装集合

用python做数据分析离不开几个好的轮子(或称为科学棧/第三方包等),比如matplotlib,numpy, scipy, pandas, scikit-le...

2155
来自专栏腾讯云服务器团队的专栏

腾讯云 CVM 标签实践分享

腾讯云主机 CVM 目前也已经接入标签的功能,且相应的 CAM 能力也已经支持。本文将模拟实际用户场景来做一个实践分享。

11.1K34
来自专栏IT笔记

前后端分离之Vue项目构建测试打包发布

写在开始 其实之前对前后端分离研究过一段时间,中间由于项目进度耽搁也就不了了之了,最近项目中部分使用到了Vue,恰逢前端小伙伴们居然说要使用这个东西,也许是前端...

3529
来自专栏高性能服务器开发

(七)开源一款即时通讯软件的源码

在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamin...

4504
来自专栏腾讯大数据的专栏

那些年,我们一起走过的 iOS 推送的坑

本文针对iOS推送接入过程中遇到的一个实际案例,提出了iOS推送排查问题的思路,在解决该问题的基础上,更给出了通用的iOS推送自测的检查路径。

4440
来自专栏菩提树下的杨过

flash builder代码格式化以及其它快捷键

今天开始,决定用flash builder淘汰flash cs 4/5了,刚换过来感觉有些不适应,百度+查看帮助,找了几个有用的快捷键: 1.代码格式化:选中要...

1785
来自专栏小文博客

app防盗——一键加密

1615
来自专栏Python专栏

最新不限速版百度云(免费安全高速下载)

1104
来自专栏计算机编程

ionic 2.x の初见与坑

<h3>1、简单介绍:</h3> <p >博主是从来没有碰过angularJS 1.x与ionic 1.x的初学者,面对它们两者同时进入2.0时代(隔壁vue...

1092

扫码关注云+社区