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

相关文章

来自专栏性能与架构

微信前端团队提供的日志工具 vConsole

在前端开发过程中,经常会使用 console.log/info 等方法来输出日志信息,电脑浏览器中可以方便的在控制台中查看 现在移动端的web开发越来越多,而...

8325
来自专栏黑泽君的专栏

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

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

1041
来自专栏用户2442861的专栏

ubuntu16 环境配置

由于重新安装了系统,一次次的安装软件等好复杂,做一个简单的记录,记录自己安装软件的过程。

1723
来自专栏Java 源码分析

虚拟机的三种网络连接方式

正文 VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理...

3264
来自专栏黑白安全

Meterpreter 端口转发教程

如何转发无法远程访问的本地端口。在本地计算机上运行特定服务。在本地网络上,这些服务通常是用于在本地计算机上访问,外网是不能访问的,比如MySQL服务器。出于安全...

993
来自专栏FreeBuf

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

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

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

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

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

4914
来自专栏魏艾斯博客www.vpsss.net

windows VPS 用宝塔网站助手建立网站和数据库

2775
来自专栏磨磨谈

Ceph OSD从filestore 转换到 bluestore的方法

前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考

1263
来自专栏Seebug漏洞平台

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

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

3988

扫码关注云+社区