前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >systemd下手工部署OSD服务-Jewel版本

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

作者头像
用户1260683
发布2018-06-11 15:07:45
7430
发布2018-06-11 15:07:45
举报

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全手工部署流程

代码语言:javascript
复制
#生成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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ceph对象存储方案 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ceph自动化部署工具现状
  • OSD全手工部署流程
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档